2020년 12월 12일 토요일

Logstash 필터 grok - 3rd

간단한 파이프라인 테스트 결과.

[2020-12-10T20:28:16,956][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}

{

    "message" => "a|b\r"

}

{

    "message" => "|c\r"

}

2020년 12월 6일 일요일

Winlogbeat의 파일 연동 - 2nd

Winlogbeat는 실시간 기록되는 이벤트 로그는 물론 별도 저장된 이벤트 로그 파일 연동도 지원한다.
 
winlogbeat.event_logs:  - name: 'C:\backup\sysmon-2019.08.evtx'

문제는 파일 연동 시 단일 파일 단위로만 연동을 지원하며, 와일드카드 등을 이용한 다수 파일 단위의 연동은 지원하지 않는다는 것. LogParser는 지원하는데

2020년 12월 4일 금요일

2020년 11월 30일 월요일

java.io.FilePermission 에러

다음은 SSL 통신을 위한 엘라스틱 설정(elasticsearch.yml). 인증서 경로는 'D:/ELK/certutil'.
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate 
xpack.security.transport.ssl.key: D:/ELK/certutil/instance/instance.key 
xpack.security.transport.ssl.certificate: D:/ELKcertutil/instance/instance.crt 
xpack.security.transport.ssl.certificate_authorities: D:/ELK/certutil/ca/ca.crt
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.key: D:/ELK/certutil/instance/instance.key 
xpack.security.http.ssl.certificate: D:/ELK/certutil/instance/instance.crt 
xpack.security.http.ssl.certificate_authorities: D:/ELK/certutil/ca/ca.crt

2020년 11월 16일 월요일

winlogbeat-security.js - 2nd

로그스태시는 사전 정의되지 않은 모든 데이터를 문자열로 인식한다. 전에 로그스태시가 숫자를 인식한다고 했었는데 착각이었음 다음은 winlogbeat가 쏴주는 5156 이벤트(네트워크 연결 허용) 중 목적지 포트가 53인 이벤트만을 dns-request 인덱스에 저장하는 파이프라인 설정.
input { 
 beats { port => 5044 } 
}
  
output {
 stdout {}
 if [winlog][event_data][DestPort] == 53 {  
  elasticsearch {    
   hosts => "192.168.56.1"    
   index => "dns-request"   
  }
 } 
}

2020년 11월 8일 일요일

Logstash 휴먼 버그

간단한 로그스태시 파이프라인 설정.
input {
 file {
  path => "D:/Edu/Multicam/elastic/log/iis_sample.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }
}

output {
 elasticsearch {
  hosts => "192.168.56.1"
 }
}

2020년 11월 3일 화요일

WSL2 우분투의 logstash: unrecognized service

WSL2 우분투에 엘라스틱을 설치해봤다.

Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 4.19.128-microsoft-standard x86_64)

  System information as of Tue Nov  3 20:03:18 KST 2020


  System load:  0.12               Processes:             19

  Usage of /:   1.4% of 250.98GB   Users logged in:       0

  Memory usage: 27%                IPv4 address for eth0: 172.17.215.13

  Swap usage:   0%


root@MHKANG:/mnt/c/Users/Administrator#

2020년 10월 25일 일요일

WSL2와 DNS Client 서비스

WSL(Windows Subsystem for Linux)2 환경에서 tcpdump 사용이 가능하다는 말을 듣고 업데이트. 이후 윈도우 앱스토어에서 우분투를 설치하려고 했으나, 접속이 안 된다. 예전에 됐었는데?

인터넷 문제는 없는데 앱스토어만 접속이 안 됨. 한참 삽질하다가 윈도우 다시 깔아야 하나 싶을 때쯤, 휴대폰 태더링으로 접속 성공. 그런데 이번엔 우분투 설치 실패.

2020년 10월 18일 일요일

2020년 9월 27일 일요일

데이터 분석이 쉬워지는 비법

단순 카운트 변화 추이는 로그의 상태를 정확히 표현하지 못한다. 다양한 상태 정보가 섞여 있는 상태에서 개수의 변화가 어떤 상태를 특정하는지 알기 힘들다는 얘기.

count 추이(12~25일)

2020년 9월 24일 목요일

ECS의 text, keyword 필드

로그스태시 연동 시 문자형 데이터는 text와 keyword, 두 가지 타입의 필드를 갖는다. text는 검색, keyword는 집계 용도. 이때 기본 필드는 text 타입을 갖는다. 

2020년 9월 15일 화요일

Logstash 필터 mutate - 2nd

mutate 필터가 제공하는 옵션들은 다른 필터와 달리 처리 순서를 갖는다.

Processing order

Mutations in a config file are executed in this order:
  • coerce
  • rename
  • update
  • replace
  • convert

2020년 9월 13일 일요일

데이터 시인성

다음 차트는 웹 요청 메소드별 발생 추이를 보여준다. 그런데 GET 메소드 발생량에 묻혀서 다른 메소드의 발생 추이 확인이 어렵다.


2020년 9월 1일 화요일

Logstash HTTP API

잘 몰랐는데 로그스태시는 시스템 정보 등을 제공할 때 사용되는 HTTP API가 기본 활성화되어 있다.

logstash.yml

2020년 8월 30일 일요일

2020년 8월 27일 목요일

엑셀 Distinct Count 구하기 - 2nd

엑셀 피벗 테이블의 '데이터 모델(2013 버전 이상)' 기능은 좀 불편하다. 특히 '날짜 시간' 포맷을 제대로 인식하지 못한다. 시간 단위로 그룹화를 시키면,


2020년 8월 23일 일요일

Logstash 필터 date - 2nd

date 플러그인에서 시간 포맷 구문은 다음 두 가지.
H
hour of the day (24-hour clock)
H
minimal-digit hour. Example: 0 for midnight.
HH
two-digit hour, zero-padded if needed. Example: 00 for midnight.

2020년 8월 12일 수요일

Logstash의 escaped character

다음은 message 필드만 남기는 파이프라인 설정.
input {
 file {
  path => "d:/test.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }
}

filter {
 mutate { remove_field => [ "@timestamp", "@version", "path", "host" ] }
}

output {
 stdout {}
}

2020년 8월 5일 수요일

데이터 시각화 별거 아니다

1. non sshd 프로세스 이벤트의 ID 양식 파악을 위해 sshd 프로세스 이벤트 삭제.


2020년 7월 27일 월요일

2020년 7월 19일 일요일

Elasticsearch 활용(scripted field - 3rd)

다음은 var 필드의 길이를 측정하는 Painless 스크립트. 그런데 안 된다. 6 버전에서는 됐었는데?


2020년 7월 9일 목요일

2020년 7월 1일 수요일

Logstash 필터 grok - 2nd

이런 저런 데이터 작업을 하다 보면 신규 필드 만들면서 원본 필드를 overwrite 하고 싶을 때가 있다. 다음은 테스트 설정.
input {
 file {
  path => "d:/test.log"
  start_position => "beginning"
  sincedb_path => "nul"
 }
}

output {
 stdout {}
}

2020년 6월 28일 일요일

winlogbeat-security.js

프로세스 실행을 의미하는 4688 이벤트는 경로를 포함한 프로세스 이름을 NewProcessName 필드에 저장한다.


2020년 6월 21일 일요일

훈련을 하는 이유

보안시스템을 마련할 때 안전 책임자는 자사의 실정에 비추어 최선인 것을 선택하기보다는 유명한 것, 차후 문제되더라도 쉽게 책임을 회피할 수 있는 것을 선정하려는 성향을 가져... - '우물 밖 인터넷' 중

빅데이터나 인공지능은 초등학생도 좋은 거라고 생각한다. 모든 매체에서 좋다고 떠들기 때문. 너무 유명해서 왜 좋은지에 대한 설명이나 설득은 필요 없다.


2020년 5월 24일 일요일

ingest pipeline - 2nd

다음은 5156 윈도우 이벤트 로그 IP 필드에 지리 정보를 매핑하기 위한 파이프라인 설정.


2020년 5월 13일 수요일

2020년 5월 12일 화요일

VIM 꼼수의 발견 - 7th

0과 1로 구분된 데이터가 있다. 그런데 구분값 1은 0, 0은 1로 바꾸고 싶네?


2020년 5월 10일 일요일

운과 실력의 성공 방정식

쓰레기통 덕분에 취업에 성공했다는 투자 전문가 마이클 모부신의 2012년 저서. 부제가 화려하다.

'주식 투자에서 메이저리그까지 승률을 극대화하는 전략 '

하지만 떼돈 벌 수 있는 투자 노하우는 안 안려줌 대신 세상만사를 결정하는 운과 실력을 구별할 수 있는 노하우를 알려준다.

"이 책의 목적은 운과 실력이 성과에 미치는 영향을 이해... 운과 실력을 구별하면 예측력이 개선된다 " (17페이지)

어떻게 구별할 수 있다는 것일까? 가장 먼저 할 일은 인간의 한계를 인정하는 것.

저자는 책 전반에 걸쳐 세상만사에 스토리(의미)를 부여하려는 인간의 본능을 경계하라고 얘기한다. (정말 중요하다고 생각했는지 수없이 강조한다)

2020년 4월 28일 화요일

엘라스틱 지도학습으로 IDS 정오탐 구분해보기 - 2nd

학습 데이터 필드 구성을 4개 유형으로 나누고, 각각 모델을 만들어봤다.
① uri + label
② parameter + label
③ url + parameter + label
④ url + parameter + pattern + label

url + parameter + pattern + label

2020년 4월 27일 월요일

엘라스틱 지도학습으로 IDS 정오탐 구분해보기

엘라스틱 머신러닝이 7.6 버전부터 드디어 지도학습(supervised learning)을 지원한다. 얼마나 잘 동작하는지 IDS 로그에 적용해보자. 다음 글을 참고했다.

학습 데이터는 1로 라벨링된 887개의 정탐과 0으로 라벨링된 6,700여 개의 오탐이 섞인 제일 만만한 sql injection 탐지 로그.

정탐

2020년 4월 19일 일요일

SSL 적용 시 HTTPS 경고

웹 브라우저가 신뢰하지 않는 사설 인증서를 이용한 SSL 통신은 보안 경고를 피해갈 수 없다. 엘라스틱 스택도 마찬가지.


2020년 4월 18일 토요일

Logstash 필터 fingerprint

로그가 중복으로 수집될 때가 있다. 다음은 테스트 로그.
2011-01-10 00:00:00 W3SVC1 192.168.48.11 GET /IL.jpg
2011-01-10 00:00:00 W3SVC1 192.168.48.11 GET /IL.jpg

연동 결과는 다음과 같다.


2020년 4월 14일 화요일

ingest pipeline

로그스태시 빠진 엘라스틱 스택을 구축해보자. 다음은 winlogbeat로 연동 중인 윈도우 이벤트 로그 5156.


2020년 4월 6일 월요일

lunrac.com?

수상한 DNS 트래픽 발견. lunrac.com과 tcdn.me, 두 개의 도메인에 대한 DNS 조회 트래픽이 갑자기 증가했다.


2020년 3월 30일 월요일

키바나 맵 기능 변화

7.5 버전부터 지리 정보를 표시해주던 키바나 Visualize 메뉴의 Coordinate, Region Map 기능이 Maps 하나로 통일됐다.


2020년 3월 16일 월요일

VIM 꼼수의 발견 - 6th

여러 개의 라인을 주석 처리할 때 많이 쓰는 방법. '비주얼 모드(v 입력)'에서 블럭 지정.


2020년 3월 8일 일요일

팩트풀니스

한스 로슬링과 그의 아들, 며느리 공저. factfulness는 저자가 만든 합성어인데 '사실충실성'쯤으로 해석되는 듯.

'팩트'라는 단어의 힘 때문인지, 제목이 주는 임팩트가 상당하다. 세상을 바라보는 저자의 깜짝 놀랄 통찰을 기대하며 읽기 시작.

하지만 기대감은 그리 오래 가지 않아 실망으로 바뀌었다. 요란한 빌 게이츠 마케팅 만큼의 빈수레는 아닌데(..)

일단 저자는 편향에 사로잡히지 않고, 사실을 있는 그대로 바라보면 긍정적인 세상에서 살 수 있다고 얘기한다.

"자산이 1만 달러만 되어도 세계 상위 25%에 들 수 있다... 혹시 노트북이 있고, 괜찮은 CD 좀 모아놓는가? 그렇다면 당신도 상위 50%다! " - 인포그래픽 세계사 (152페이지)

2020년 3월 4일 수요일

2020년 3월 3일 화요일

2020년 2월 28일 금요일

Logstash codec 플러그인 multiline

Logstash 필터 elapsed 플러그인을 이용하면 완료된 트랜잭션의 실행 시간을 구할 수 있다. 이때 정확한 시간을 계산하기 위해서는 발생 순서대로 로그를 처리하는 것이 필수.

그런데 멀티 코어 환경에서는 그게 잘 안 된다. 트랜잭션 시작 시점을 기준으로 종료 시점을 기다려야 하는데 종료 시점이 먼저 처리될 수도 있기 때문. 그렇다고 싱글 코어를 쓰자니 로그양이 너무 많고(..) 이럴 땐 어떻게 해야 할까?
[08:00:37.410] SendJob(jobID:75343414529)
[08:00:39.235] SendReport(jobID:75343414529)

2020년 2월 24일 월요일

Logstash 필터 ruby - 4th

ruby 필터는 데이터 필터링 과정에서 ruby 언어의 다양한 기능을 사용할 수 있게 해준다. 엘라스틱의 사용 편의성을 크게 높일 수 있다는 얘기. 다음은 간단한 테스트를 위한 설정.
input {
 stdin {}
}

output {
 stdout {}
}

2020년 2월 19일 수요일

마케팅이다

저자 세스 고딘. 마케팅 업계에서 유명한 사람인 모양. '개사료의 고객은 반려견이 아니라 반려견 주인(80페이지)'이란 문장에 무릎을 탁 치고 구매.

몇 번을 곱씹어봐도 명문이다. 아무렴 그렇지. 돈 내고 사료를 사는 건 사료를 먹는 개가 절대 아니라 그 개의 주인이지.

반려견 주인의 지갑을 쉽게 여는 방법은 무엇일까? 사랑하는 자신의 반려견에게 최선을 다 하고 있다는 느낌을 갖게 하는 것 아닐까?

누가 이런 말을 했다고 한다.

"사람들은 0.25인치 드릴(수단)을 원하는 게 아니라 0.25인치 구멍(목적)을 원한다 (44페이지)

좋은 통찰이지만 '주위에 자랑할만한 멋진 드릴을 원할 수도 있잖아?'라는 생각을 하면서 보는데 저자의 해석이 남다르다.

2020년 2월 11일 화요일

Logstash 필터 elapsed

특정 작업의 생성부터 소멸까지, 하나의 트랜잭션을 jobID라는 식별자로 구분하는 로그가 있다. 하나의 작업에 소요된 시간을 구해보자. 작업이 완료된 시간에서 시작된 시간을 빼면 된다.
[08:00:37.410] SendJob(jobID:75343414529)
[08:00:39.235] SendReport(jobID:75343414529)

근데 어떻게 하지? 가장 간단한 방법은 서로 다른 시점에 발생한 두 로그 간의 시간차를 계산해주는 로그스태시 필터 elapsed를 사용하는 것.

다음은 파이프라인 설정. 작업을 시작할 때는 send_begin, 작업이 끝날 때는 send_end 태그를 추가했으며, elapsed 플러그인은 해당 태그를 이용해서 계산이 필요한 시간대의 시작과 끝을 결정한다.

2020년 2월 2일 일요일

Winlogbeat의 파일 연동

winlogbeat가 스리슬쩍 이벤트 로그 파일 연동을 지원하고 있더라. 다음은 파일 연동 설정. 필드가 너무 많아서 event_id 필드만 남겼다.


2020년 1월 21일 화요일

엘라스틱 자바 경로 설정

현재 자바 8(1.8) 버전을 사용하고 있는데 엘라스틱 최신 버전 실행 시 문제는 없지만 아무래도 궁합은 별루인 듯하다.


2020년 1월 13일 월요일

전자책 출간 후기

작년 11월말 탈고 후, 전자책 출간을 알아보기 시작했다. 전자책을 선택한 가장 큰 이유는 책에 포함된 50여 개의 외부 참조 URL 때문. 종이책으로 내면 URL 타이핑하다 열 받을 독자들이 눈에 밟혔다. 출판사와의 밀당도 지겹고.

1. 플랫폼 선택

좀 알아본 결과 처음 점찍었던 아마존은 탈락. 한글과 pdf 출판을 지원하지 않는다. 구글링해보면 한글 출판이 되는 경우도 있다고 하는데 어느 아마존 출판 대행업체에 문의해보니 공식적으로 한글은 아직 지원하지 않는다고 한다.

한글 출판이 가능하다고 해도 pdf 지원을 안 하기 때문에 워드 원고를 epub로 변환해야 하는데 온라인 변환 서비스를 한 번 써보고는 바로 포기했다.

2020년 1월 9일 목요일

리뷰 이벤트합니다

여백을 줄이고, 이미지를 키우고, 선명도를 높이고 등등 어찌어찌해서 웹 상에서 봐줄만한 전자책을 구글 북스에 등록했습니다. 작년 연말에 출판사/사업자 등록할 때만 해도 금방일줄 알았는데 해가 바뀌었네요.


2020년 1월 1일 수요일

2019년에 있었던 일

해 바뀌는 것에 대한 감흥이 무뎌진지 꽤 됐지만 그래도 바뀐다니 작년에 무슨 일이 있었나 떠올려봤다.

일단 왕좌의 게임 종영 2019년 출간은 실패. 전자책이 생각보다 쉽지 않다. 전자책 포맷이 epub와 pdf로 나뉘는데, epub는 텍스트 위주의 책에 적합한 포맷인듯 하다.

내 책은 늘 그렇듯이 이미지 빼면 시체인데 워드 파일을 epub로 바꾸면 기껏 짜맞춘 이미지와 해설 레이아웃이 다 깨져버린다. html 코딩을 빡세게 하면 레이아웃을 유지할 수도 있겠지만 책을 다시 쓰는 수준이 될 것 같아서 pdf로 가기로 했다. 플랫폼은 구글 플레이 북스로 결정.

그런데 pdf에서도 문제 발생. 목차가 이상하다. '제목1-제목2-제목3' 수준으로 목차를 만들었는데 스토어에 업로드하면 '제목1'만 인식한다. 모든 목차를 '제목1' 수준으로 바꿔야한다는 얘기.

크리에이티브 커먼즈 라이선스