YAMAHAルータのIDS(不正アクセス検知機能)をZabbixで監視する

YAMAHAのルーターRTX1200シリーズやFWX120にはIDS(不正アクセス検知機能)があり、web操作画面等で設定と状態表示が出来ます。
　不正アクセス検知機能(IDS)
　http://www.rtpro.yamaha.co.jp/RT/docs/ids/
また不正アクセスを検知時にはアラートメールを送信出来る設定もありますので、1台で運用する場合はこれでも十分ですが、台数が増えてくると何か統合監視しないと収拾がつかなくなります。
てなわけで、統合監視のzabbixで管理運用してみます。

# **YAMAHAルーターのIDS設定**

web操作画面は割愛して設定コマンド例は以下の通り。

````
ip [インターフェース] intrusion detection in on
ip [インターフェース] intrusion detection in ip on reject=on
ip [インターフェース] intrusion detection in ip-option on reject=on
ip [インターフェース] intrusion detection in fragment on reject=on
ip [インターフェース] intrusion detection in icmp on reject=on
ip [インターフェース] intrusion detection in udp on reject=on
ip [インターフェース] intrusion detection in tcp on reject=on
ip [インターフェース] intrusion detection in default off
ip [インターフェース] intrusion detection out on
ip [インターフェース] intrusion detection out ftp on reject=on
ip [インターフェース] intrusion detection out winny on reject=on
ip [インターフェース] intrusion detection out share on reject=on
ip [インターフェース] intrusion detection out default off
````

各インターフェース毎に設定します。この例ではRTX1200のweb操作画面の標準設定で、
不正なin方向の該当パケットの検出破棄とp2p系のout方向の該当パケットの検出破棄を有効化しています。
状況に合わせて調整します。細かい調整はweb操作画面では出来ないので、コマンドを推奨します。

# **YAMAHAルータのsyslog設定**

syslogを送ってトラップする方法になります。web操作画面は割愛して設定コマンド例は以下の通り。

````
syslog host [IPアドレス]
syslog facility [0-23]
syslog notice on
````

1行目はsyslogサーバーのIPアドレスを指定。
2行目はファシリティ番号を指定します。local0～local7等の別名指定もあり、送信元の区別に使用します。
3行目はNOTICEタイプのログ出力を有効化します。これで各フィルター情報がsyslogに反映します。

# **syslogサーバーの設定**

zabbixサーバーにsyslogサーバーを設定します。なお現在ではsyslogに代わってrsyslogが一般的です。
各Linuxディストリビューションのrsyslogインストール方法については割愛します。
rsyslogの設定ファイルは以下の点を修正します。

````lang:/etc/rsyslog.conf
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
$LocalHostName [ホスト名]
````

4か所のコメントアウトを外して有効化、ローカルサーバーのホスト名を設定します。
次にルーターから送信される保存先を別ファイルで設定します。

````lang:/etc/rsyslog.d/rtx1200.conf
[ファシリティ番号].* /var/log/rsyslog/rtx1200/syslog.txt
````

ルーターに設定したファシリティ番号に合わせて保存先ファイル名を設定します。

rsyslogサービスデーモンを起動して、ルーターから接続できる様にTCP/UDPの514番ポートを開けておきます。
設定した場所にログファイルが記録されれば成功です。

# **zabbixエージェントの設定**

アクティブチェックを有効にしてzabbixエージェントを再起動します。

````lang:/etc/zabbix/zabbix_agentd.conf
# zabbixサーバーのIPアドレス
ServerActive=127.0.0.1
# アクティブチェックの間隔(秒)
RefreshActiveChecks=120
# 属性で読めないファイルを扱う場合に、root権限を有効化
AllowRoot=1
````

# **zabbixの正規表現設定**

zabbixでは正規表現をGUIで簡単に設定できます。正規表現の文法がよく分からなくてもある程度は出来ます。
zabbixサーバーのGUI画面から、「管理」タブ→「一般設定」タブ→「正規表現」プルダウンメニューを選択します。
「正規表現の作成」ボタンを選択して、以下の様に正規表現を設定します。

名前：任意の名前(呼び出し変数名になるので英数字を推奨)
条件式：Unknown IP protocol,Invalid fragment,ICMP source quench,ICMP timestamp req,ICMP timestamp reply,ICMP info request,ICMP info reply,ICMP mask request,ICMP mask reply,ICMP too large,UDP short header,UDP bomb,TCP no bits set,TCP SYN and FIN,Same fragment offs
条件式の形式：いずれかの文字列が含まれる
区切り文字：,
大文字小文字の区別：有効

条件式に含まれる文字列が一致したら真という正規表現になります。
任意の名前が@マーク付きで条件式として呼び出されますので、英数字を推奨します。
空白や記号がある場合には正常に呼び出されないようです。

# **zabbixのアイテム設定**
前提条件で、rsyslogサーバーにzabbixエージェントが設定済みとします。

名前：侵入検知(INSPECT)
タイプ：Zabbixエージェント(アクティブ)
キー：log[var/log/rsyslog/rtx1200/syslog.txt,@正規表現の任意の名前]
データ型：ログ
更新間隔(秒)：60

キーの条件式に作成した正規表現の任意の名前に@マークを付けてこれを検索キーとします。

# **zabbixのトリガー設定**
一定時間に一定回数がアイテムに記録された場合をトリガーに設定します。これがアラート条件になります。

名前：INSPECT Counter Alert
条件式：{zabbixホスト名:log[var/log/rsyslog/rtx1200/syslog.txt,@正規表現の任意の名前].count(60,@正規表現の任意の名前)}>1
障害イベントを継続して生成：無効
説明：一定時間に複数の侵入を検知しました。

zabbixホスト名にはアイテムを設定したホスト名を指定します。