RTX1210用のGrokフィルタ案
先に書き記したように、RTX1210のログをElasticsearchとkibanaで見るためにlogstashによるパースを行いました。
RTXは利用者がかなり多い様で、いろいろな種類の情報がありますが、残念ながら都合良くパース設定は見つけられなかったため、自力でパース設定を作った次第。
もっと効率が良いやり方など教えていただけると幸いです。
とりあえず自分が構成したパターン設定一覧をフィルター系、トンネル系、マネジメント系に分けました。
タイプ番号はすべてが連続しているものではありません。便宜的につけているだけなので、あまり気にしないでください。
対象のログレベルはnotice, infoです。
# フィルター系
タイプ1 (INSPECT-1)
%{IP:host_ip} \[INSPECT\] %{RTXIF:interface_name}\[%{NOTSPACE:direction}\]\[%{NOTSPACE:filter_number}\] %{NOTSPACE:protocol} %{IP:src_ip}[:\.]%{INT:src_port} > %{IP:dest_ip}[:\.]%{INT:dest_port} \(%{TIMESTAMP_JP:start_time}\)
※カスタムパターン使用
DATE_JP %{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY}
TIMESTAMP_JP %{DATE_JP}[ ,]%{TIME}
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
タイプ2 (filter-1)
^%{IP:host_ip}*[ ]*%{RTXIF:interface_name} %{NOTSPACE:pass_reject} at %{NOTSPACE:direction}\(%{NOTSPACE:filter_number}\) filter: %{NOTSPACE:protocol} %{IP:src_ip}[:\.]*%{NOTSPACE:src_port}* > %{IP:dest_ip}[:\.]*%{NOTSPACE:dest_port}*( : )*%{RTX_MSG:comment}*$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
タイプ3 (filter-2 DNS)
^%{IP:host_ip}*[ ]*%{RTXIF:interface_name} %{NOTSPACE:pass_reject} at %{NOTSPACE:direction}\(%{NOTSPACE:filter_number}\) filter: %{NOTSPACE:protocol} %{IP:src_ip}[:\.]%{NOTSPACE:src_port} > %{IP:dest_ip}[:\.]%{NOTSPACE:dest_port} \(%{RTX_MSG:packet_type}[ )]\[*%{ZONE:dns_query}*\]*\)*$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
ZONE [a-zA-Z0-9/. _-]+
# トンネル系
タイプ5 (tunnel-1)
^%{IP:host_ip} \[IKE\] %{NOTSPACE:status} %{RTX_MSG:infomation} \(%{NOTSPACE:kinds}\)$
※カスタムパターン使用
RTX_MSG [a-zA-Z0-9 ]+
タイプ6 (tunnel-2)
^%{IP:host_ip} \[IKE\] %{NOTSPACE:status} %{NOTSPACE:protocol} phase to %{IP:dest_ip}$
タイプ7 (tunnel-3)
^%{IP:host_ip} \[IKE2\] %{NOTSPACE:sub prefix} %{RTX_MSG:infomation}$
※カスタムパターン使用
RTX_MSG [a-zA-Z0-9 ]+
タイプ8 (tunnel-4)
^%{IP:host_ip} \[L2TP\] %{RTXIF:interface} %{RTX_MSG:infomation}$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
タイプ9 (tunnel-5)
^%{IP:host_ip} \[L2TP\] %{RTXIF:interface} %{NOTSPACE:status} from %{IP:from_ip}$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
タイプ10 (tunnel-6)
^IP %{RTXIF:interface} %{RTX_MSG:status}$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
タイプ11 (pp-1)
^%{IP:host_ip} %{RTXIF:interface} %{RTX_MSG:status} user \'%{RTX_USERNAME:user_name}\'$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
RTX_USERNAME [a-zA-Z0-9_-]+
タイプ12 (pp-2)
^%{IP:host_ip} %{RTXIF:interface} %{RTX_MSG:status}: %{NOTSPACE:protocol} %{IP:src_ip}[:\.]*%{NOTSPACE:src_port}* > %{IP:dest_ip}[:\.]*%{NOTSPACE:dest_port}*( : )*%{RTX_MSG:comment}*$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
タイプ13 (pp-3)
^%{IP:host_ip} %{RTXIF:interface} %{NOTSPACE:protocol} up \(Local: %{IP:local_ip}, Remote: %{IP:remote_ip}\)$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
タイプ14 (pp-4)
^%{IP:host_ip} %{RTXIF:interface} %{NOTSPACE:protocol} %{RTX_MSG:status}$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
# マネジメント系
タイプ21 (DHCP)
^%{IP:host_ip} \[DHCPD\] %{RTXIF:dhcp_allocate_interface}\(%{NOTSPACE:dhcp_allocate_interface_port}\) %{NOTSPACE:transaction} %{IP:dhcp_allocate_address}: %{MAC:dhcp_allocate_mac_address}$
※カスタムパターン使用
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
タイプ31 (異常検知)
^%{IP:host_ip} \[INSPECT\] %{RTX_MSG:rtx_status} %{IP:src_ip} > %{IP:dest_ip}$
※カスタムパターン使用
RTX_MSG [a-zA-Z0-9 ]+
タイプ41 (スケジュール)
^%{IP:host_ip} +\[SCHEDULE\] %{RTX_CMD:command}$
※カスタムパターン使用
RTX_CMD [a-zA-Z0-9 -_\.]+
タイプ42 (ntp result)
^%{IP:host_ip} %{TIMESTAMP_JP:start_time} +%{NOTSPACE:ntp_result}$
※カスタムパターン使用
DATE_JP %{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY}
TIMESTAMP_JP %{DATE_JP}[ ,]%{TIME}
タイプ43 (ログイン)
^Login %{NOTSPACE:access_result} for %{NOTSPACE:protocol}: %{IP:from_ip} %{RTX_USERNAME:user_name}*
※カスタムパターン使用
RTX_USERNAME [a-zA-Z0-9_-]+
タイプ44 (特権使用)
^%{IP:host_ip} '%{RTX_USERNAME:user_name}' %{NOTSPACE:consequence} for %{NOTSPACE:protocol}: %{IP:from_ip} %{RTX_USERNAME:logon_name}*
※カスタムパターン使用
RTX_USERNAME [a-zA-Z0-9_-]+
タイプ45 (ログアウト)
^Logout from %{NOTSPACE:protocol}: %{IP:from_ip} %{RTX_USERNAME:user_name}*
※カスタムパターン使用
RTX_USERNAME [a-zA-Z0-9_-]+
タイプ46 (コンフィグセーブ)
^Configuration saved in \"%{NOTSPACE:config_name}\" by %{NOTSPACE:protocol}\(*%{RTX_USERNAME:user_name}*\)*$
##カスタムタイプ一覧##
ALL .+$
RTXIF %{NOTSPACE}((ANONYMOUS)*\[[0-9][0-9]\])*
RTX_MSG [a-zA-Z0-9 ]+
RTX_CMD [a-zA-Z0-9 -_\.]+
RTX_USERNAME [a-zA-Z0-9_-]+
ZONE [a-zA-Z0-9/. _-]+
DATE_JP %{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY}
TIMESTAMP_JP %{DATE_JP}[ ,]%{TIME}
パターンのデバッグはGrok Constructorが大変便利です。
ネット情報だとよくGREEDYDATAを使っているものが多かったのですが、あまり効率が良い気がしなかったので必要なところはカスタムパターンのALLを使いました。
ものすごく大量の処理をさせるものなので極力工数の少ないパターンにしたいものです。