프로토콜별로 불필요한 필드는 지우고 싶다.
processors: - include_fields: fields: "message" - dissect: tokenizer: "%{timestamp} %{+timestamp} %{action} %{protocol} %{sip} %{dip} %{sport} %{dport} %{tcpflags} %{icmptype} %{icmpcode}" target_prefix: ""
{ "@timestamp": "2024-03-14T10:46:36.387Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.12.0" }, "icmpcode": "-", "action": "ALLOW", "icmptype": "-", "message": "2024-03-05 00:03:04 ALLOW TCP 192.168.31.177 192.168.31.1 3638 8089 24 - -", "dport": "8089", "dip": "192.168.31.1", "protocol": "TCP", "tcpflags": "24", "sip": "192.168.31.177", "timestamp": "2024-03-05 00:03:04", "sport": "3638"}{ "@timestamp": "2024-03-14T10:46:36.387Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.12.0" }, "sip": "192.168.31.177", "icmptype": "0", "action": "ALLOW", "protocol": "ICMP", "timestamp": "2024-03-05 00:03:04", "sport": "-", "message": "2024-03-05 00:03:04 ALLOW ICMP 192.168.31.177 192.168.31.1 - - - 0 8", "dport": "-", "icmpcode": "8", "dip": "192.168.31.1", "tcpflags": "-"}{ "@timestamp": "2024-03-14T10:46:36.387Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.12.0" }, "timestamp": "2024-03-05 00:03:05", "protocol": "UDP", "icmpcode": "-", "message": "2024-03-05 00:03:05 ALLOW UDP 192.168.31.177 192.168.31.1 50958 53 - - -", "dport": "53", "sport": "50958", "tcpflags": "-", "icmptype": "-", "sip": "192.168.31.177", "dip": "192.168.31.1", "action": "ALLOW"}
프로토콜별로 다른 처리를 해주면 간단한데,
if...tcp...else if...udp...else...icmp...
else if 구문을 지원하지 않네? 이럴 때 중첩 if-then-else 구문이 대안이 될 수 있다.
processors: - include_fields: fields: "message" - dissect: tokenizer: "%{timestamp} %{+timestamp} %{action} %{protocol} %{sip} %{dip} %{sport} %{dport} %{tcpflags} %{icmptype} %{icmpcode}" target_prefix: "" - if: equals.protocol: "TCP" then: - drop_fields: fields: ["icmptype", "icmpcode"] else: if: equals.protocol: "UDP" then: - drop_fields: fields: ["tcpflags", "icmptype", "icmpcode"] else: - drop_fields: fields: ["sport", "dport", "tcpflags"]
{ "@timestamp": "2024-03-14T10:50:02.502Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.12.0" }, "message": "2024-03-05 00:03:04 ALLOW TCP 192.168.31.177 192.168.31.1 3638 8089 24 - -", "sip": "192.168.31.177", "sport": "3638", "timestamp": "2024-03-05 00:03:04", "protocol": "TCP", "dip": "192.168.31.1", "dport": "8089", "action": "ALLOW", "tcpflags": "24"}{ "@timestamp": "2024-03-14T10:50:02.502Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.12.0" }, "icmpcode": "8", "timestamp": "2024-03-05 00:03:04", "action": "ALLOW", "icmptype": "0", "dip": "192.168.31.1", "protocol": "ICMP", "sip": "192.168.31.177", "message": "2024-03-05 00:03:04 ALLOW ICMP 192.168.31.177 192.168.31.1 - - - 0 8"}{ "@timestamp": "2024-03-14T10:50:02.502Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.12.0" }, "message": "2024-03-05 00:03:05 ALLOW UDP 192.168.31.177 192.168.31.1 50958 53 - - -", "sip": "192.168.31.177", "protocol": "UDP", "timestamp": "2024-03-05 00:03:05", "action": "ALLOW", "dip": "192.168.31.1", "sport": "50958", "dport": "53"}
그냥 필요 없는 필드 다 지우고 시작하는 게 나을래나?
- script: lang: javascript source: > function process(event) { var list = event.Get(); for (var i in list) { if (event.Get(i) == "-") { event.Delete(i); } } }
댓글 없음:
댓글 쓰기