Snort - ネットワーク型IDS2008/08/15 |
ネットワーク型IDS(Intrusion Detection System - 侵入検知システム)の Snort を導入します。
ホスト型の Tripwire に対して、
ネットワーク型の Snort はネットワーク上のパケットを監視します。 |
|
[1] | まずは Snort のインストールと設定をします。最新版を確認後 wget で取得してください。 |
[root@www ~]# wget http://www.snort.org/dl/binaries/linux/snort-2.8.2.1-1.RH5.i386.rpm [root@www ~]# rpm -Uvh snort-2.8.2.1-1.RH5.i386.rpm Preparing... ############################ [100%] 1:snort ############################ [100%] [root@www ~]# vi /etc/snort/snort.conf # 46行目:内部ネットワークに変更 var HOME_NET 192.168.0.0/24 # 49行目:内部は監視対象外にする var EXTERNAL_NET !$HOME_NET [root@www ~]# vi /etc/logrotate.d/snort # 4行目:後ろ2つを削除 /var/log/snort/alert /var/log/snort/*log { |
[2] | ルールファイルを入手するためにユーザー登録してログインする必要があります。
ここから登録してログインし、
「snortrules-snapshot-CURRENT.tar.gz」をダウンロードします。
その後、ダウンロードしたファイルをサーバーにアップロードしておきます。 |
[3] | アップロードしたルールファイルをインストールし、snort を起動します。 |
[root@www ~]# tar zxvf snortrules-snapshot-CURRENT.tar.gz [root@www ~]# cp -r rules/* /etc/snort/rules/ [root@www ~]# rm -rf doc etc rules so_rules [root@www ~]# /etc/rc.d/init.d/snortd start Starting snort: [ OK ] [root@www ~]# chkconfig snortd on
|
[4] | Webブラウザで Snort のログを確認できるように SnortSnarf をインストールします。 |
[root@www ~]# yum --enablerepo=dag install perl-Time-module [root@www ~]# wget http://www.snort.org/dl/contrib/data_analysis/snortsnarf/SnortSnarf-050314.1.tar.gz [root@www ~]# tar zxvf SnortSnarf-050314.1.tar.gz [root@www ~]# mkdir /usr/local/bin/snortsnarf [root@www ~]# cp SnortSnarf-050314.1/snortsnarf.pl /usr/local/bin/snortsnarf/ [root@www ~]# cp -r SnortSnarf-050314.1/include /usr/local/bin/snortsnarf/ [root@www ~]# vi /usr/local/bin/snortsnarf/include/SnortSnarf/HTMLMemStorage.pm # 290行目:変更 ('->' を削除) return @arr[($first-1)..$end]; [root@www ~]# vi /usr/local/bin/snortsnarf/include/SnortSnarf/HTMLAnomMemStorage.pm # 266行目:変更 ('->' を削除) return @arr[($first-1)..$end]; [root@www ~]# vi /etc/httpd/conf.d/snort.conf
Alias /snort /var/www/snort <Location /snort> Order deny,allow Deny from all # アクセス許可IP Allow from 127.0.0.1 192.168.0 </Location> [root@www ~]# /etc/rc.d/init.d/httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] # 起動スクリプト作成 [root@www ~]# vi snortsnarf.sh
#!/bin/bash cd /usr/local/snortsnarf if [ -s /var/log/snort/alert ]; then if [ -s /var/log/snort/portscan.log ]; then ./snortsnarf.pl -dns -d /var/www/snort /var/log/snort/alert /var/log/snort/portscan.log else ./snortsnarf.pl -dns -d /var/www/snort /var/log/snort/alert fi fi [root@www ~]# chmod 700 snortsnarf.sh [root@www ~]# ./snortsnarf.sh # 実行 [root@www ~]# crontab -e */10 * * * * /root/snortsnarf.sh # 10分おきに実行
|
[5] | ブラウザでサーバーにアクセスすると、以下のように SnortSnarf のページが表示され、 Snort のログを見ることができます。 |
[6] | 試しに他ホストから Snort のサーバーへ nmap でポートスキャンしてみて ロギングされるか確認してみます。以下のように正常に記録されています。 |
[7] | ルールファイルの最新化を自動で行う Oinkmaster をインストールしておきます。最新化にはコードが必要なため、 ログインして「Get Code」ボタンを押し、 コードを取得して控えておきます。 |
[root@www ~]# wget http://jaist.dl.sourceforge.net/sourceforge/oinkmaster/oinkmaster-2.0.tar.gz [root@www ~]# tar zxvf oinkmaster-2.0.tar.gz [root@www ~]# cp oinkmaster-2.0/oinkmaster.pl /usr/local/bin/ [root@www ~]# cp oinkmaster-2.0/oinkmaster.conf /etc/ [root@www ~]# rm -rf oinkmaster-2.0 [root@www ~]# vi /etc/oinkmaster.conf # 55行目:コメント解除し取得したコードに変更 url = http://www.snort.org/pub-bin/oinkmaster.cgi/ (コード) /snortrules-snapshot-CURRENT.tar.gz[root@www ~]# oinkmaster.pl -o /etc/snort/rules/ # 実行 Loading /etc/oinkmaster.conf Downloading file from http://www.snort.org/pub-bin/oinkmaster.cgi/*oinkcode*/snortrules-snapshot-CURRENT.tar.gz... done. Archive successfully downloaded, unpacking... done. Setting up rules structures... WARNING: duplicate SID in your local rules, SID 3017 exists multiple times, you may need to fix this manually! done. Processing downloaded rules... disabled 0, enabled 0, modified 0, total=12183 Setting up rules structures... WARNING: duplicate SID in your local rules, SID 3017 exists multiple times, you may need to fix this manually! done. Comparing new files to the old ones... done. [***] Results from Oinkmaster started 20080621 23:56:39 [***] [*] Rules modifications: [*] None. [*] Non-rule line modifications: [*] None. [*] Added files: [*] None. # 起動スクリプト作成 [root@www ~]# vi oinkmaster.sh
#!/bin/sh /usr/bin/oinkmaster.pl -o /etc/snort/rules/ 2>&1 | logger -t oinkmaster /etc/rc.d/init.d/snortd restart > /dev/null [root@www ~]# chmod 700 oinkmaster.sh [root@www ~]# ./oinkmaster.sh # 実行 [root@www ~]# crontab -e 0 1 * * * /root/oinkmaster.sh # 毎日1時に実行
|
|