상태를 쪼개면 쪼갤수록 그 상태에 대해서 더 잘 알게 된다. 도메인 정보도 마찬가지. 그래서 엘라스틱은 서브 도메인과 상위 도메인을 쪼개주는 registered_domain processor를 제공한다. 다음은 beat processor 설정.
processors: - include_fields: fields: [ "winlog.event_data.QueryName", "winlog.event_id" ] - registered_domain: field: winlog.event_data.QueryName target_field: top_url target_etld_field: root_url target_subdomain_field: sub_url
{ "@timestamp": "2021-05-15T06:22:28.888Z", "@metadata": { "beat": "winlogbeat", "type": "_doc", "version": "7.12.1" }, "winlog": { "event_data": { "QueryName": "checkappexec.microsoft.com" }, "event_id": 22 }, "top_url": "microsoft.com", "root_url": "com", "sub_url": "checkappexec"}{ "@timestamp": "2021-05-15T06:22:28.889Z", "@metadata": { "beat": "winlogbeat", "type": "_doc", "version": "7.12.1" }, "winlog": { "event_data": { "QueryName": "clientservices.googleapis.com" }, "event_id": 22 }, "top_url": "clientservices.googleapis.com", "root_url": "googleapis.com"}
registered_domain은 Mozilla Public Suffix list를 기반으로 도메인 정보를 분류하는데, 테스트해보면 대부분 잘 동작한다. 그런데 몇몇 도메인은 도메인 리스트에 문제가 없어 보임에도 잘 안 되더라.
엘라스틱측에 문의해봤는데 답이 없다. 내 영어가 엉망인가? 일단 script processor와 정규표현식으로 처리.
processors: - include_fields: fields: [ "winlog.event_data.QueryName", "winlog.event_id" ] - script: lang: javascript source: > function process(evt) { if (evt.Get("winlog.event_id") == 22) { var str = evt.Get("winlog.event_data.QueryName").match(/(.*?)\.?([^.]+\.([^.]+$))/); evt.Put("sub_url", str[1]); evt.Put("top_url", str[2]); evt.Put("root_url", str[3]); } }
{ "@timestamp": "2021-05-15T06:22:28.888Z", "@metadata": { "beat": "winlogbeat", "type": "_doc", "version": "7.12.1" }, "winlog": { "event_data": { "QueryName": "checkappexec.microsoft.com" }, "event_id": 22 }, "sub_url": "checkappexec", "top_url": "microsoft.com", "root_url": "com"}{ "@timestamp": "2021-05-15T06:22:28.889Z", "@metadata": { "beat": "winlogbeat", "type": "_doc", "version": "7.12.1" }, "winlog": { "event_data": { "QueryName": "clientservices.googleapis.com" }, "event_id": 22 }, "sub_url": "clientservices", "top_url": "googleapis.com", "root_url": "com"}
댓글 없음:
댓글 쓰기