|
linux: Snort + ACID on Debian - part 2
|
|
February 6th, 2004 - 3:03
|
Linuxメモ:Debianで動かす Snort + ACID (2)
(続き)もしかしたら、追加パッケージが必要なのかも知れない...。ということでパッケージを調べてみる。
aptの一つに apt-cacheというコマンドがあり、これを使うと Debianにどんなパッケージがあるのか調べることが出来る。そこで、snortに追加オプションが必要かどうか調べてみた。
# apt-cache search snort
acidlab - Analysis Console for Intrusion Databases
airsnort - WLAN sniffer
snort - Flexible NIDS (Network Intrusion Detection System)
snort-common - Flexible NIDS (Network Intrusion Detection System)
snort-doc - Flexible NIDS (Network Intrusion Detection System)
snort-mysql - Flexible NIDS (Network Intrusion Detection System)
snort-rules-default - Flexible NIDS (Network Intrusion Detection System)
# apt-get install snort-mysql
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
snort
The following NEW packages will be installed:
snort-mysql
0 packages upgraded, 1 newly installed, 1 to remove and 0 not upgraded.
Need to get 165kB of archives. After unpacking 16.4kB will be freed.
Do you want to continue? [Y/n]
|
、、、ギャフン、全くの別パッケージなのね(汗。
ということで気を取り直して再インストール(念のため、Snort、ACIDは purgeしてアンインストールの後、設定ファイルは全て削除)。
※ここから先はやっても大丈夫、、、多分。
まずは Snort(MySQL版)のインストールから。
# apt-get install snort-mysql
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
snort-common snort-rules-default
The following NEW packages will be installed:
snort-common snort-mysql snort-rules-default
0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/261kB of archives. After unpacking 968kB will be used.
Do you want to continue? [Y/n] y
Preconfiguring packages ...
|
listenするインターフェースの設定。Linuxがルータになっている場合、これは WAN側のインターフェースを指定する。
チェックするサブネットの設定。家庭内LANなら普通は 192.168.x.0/24の設定になるだろう。
デイリーレポートのメール先。とりあえず rootに。
未選択パッケージ snort-rules-default を選択しています。
(データベースを読み込んでいます... 現在 23374 個のファイルとディレクトリがインストールされています。)
(.../snort-rules-default_1.8.4beta1-3.1_all.deb から) snort-rules-default を展開しています...
未選択パッケージ snort-mysql を選択しています。
(.../snort-mysql_1.8.4beta1-3.1_i386.deb から) snort-mysql を展開しています...
未選択パッケージ snort-common を選択しています。
(.../snort-common_1.8.4beta1-3.1_i386.deb から) snort-common を展開しています...
snort-rules-default (1.8.4beta1-3.1) を設定しています ...
snort-common (1.8.4beta1-3.1) を設定しています ...
snort-mysql (1.8.4beta1-3.1) を設定しています ...
Stopping Network Intrusion Detection System: snort.
Starting Network Intrusion Detection System: snort.
#
|
ここまでが Snort(MySQL版)のインストール。次は ACIDのインストール。
# apt-get install acidlab
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
libphp-adodb libphp-phplot php4-gd t1lib1
wwwconfig-common
The following NEW packages will be installed:
acidlab libphp-adodb libphp-phplot php4-gd t1lib1
wwwconfig-common
0 packages upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 463kB of archives. After unpacking 2268kB will be used.
Do you want to continue? [Y/n] y
Get:1 ftp://ftp.dti.ad.jp stable/main libphp-adodb 1.51-1.1 [108kB]
Get:2 ftp://ftp.dti.ad.jp stable/main libphp-phplot 4.4.6-2 [75.5kB]
Get:3 ftp://ftp.dti.ad.jp stable/main t1lib1 1.3.1-1 [120kB]
Get:4 ftp://ftp.dti.ad.jp stable/main php4-gd 4:4.1.2-6woody3 [24.5kB]
Get:5 ftp://ftp.dti.ad.jp stable/main wwwconfig-common 0.0.19 [17.1kB]
Get:6 ftp://ftp.dti.ad.jp stable/main acidlab 0.9.6b20-2 [119kB]
Fetched 463kB in 1s (242kB/s)
Preconfiguring packages ...
|
利用する webサーバの指定。まぁ、普通は Apacheと思われる。
ログを吐き出す DBMSの指定。今回は MySQLを指定する。
ログを吐き出すデータベースの名前の設定。 snort_logという名前とするが、このデータベースは後で設定する必要がある。
データベースのホスト名。同一サーバ内でデータベースを利用するため、localhostを指定する。
データベースにアクセスするためのユーザ名。これは MySQLのユーザとなる。デフォルトでは rootになっているが、セキュリティ上は専用ユーザを作った方がいい。ここでは snortというユーザを指定した。これも後で MySQL上に設定する。
先ほどの MySQLユーザ、snortのパスワード。MySQLへの設定はこれから行うが、一応ここで決めておく。以下、このパスワードを SNORT_PASSWORDとする。
ログのアーカイブ用のデータベース名の指定。今のところ、これが何をするものなのかは謎(汗。一応、snort_archiveとする。
以下 snort_archiveの設定は snort_logと同じ。
snort_archiveの設定はここまで。
ここまでで ACIDの設定は完了。残りはブラウザ上で行うので、いったん保留する。
未選択パッケージ libphp-adodb を選択しています。
(データベースを読み込んでいます... 現在 23277 個のファイルとディレクトリがインストールされています。)
(.../libphp-adodb_1.51-1.1_all.deb から) libphp-adodb を展開しています...
未選択パッケージ libphp-phplot を選択しています。
(.../libphp-phplot_4.4.6-2_all.deb から) libphp-phplot を展開しています...
未選択パッケージ t1lib1 を選択しています。
(.../t1lib1_1.3.1-1_i386.deb から) t1lib1 を展開しています...
未選択パッケージ php4-gd を選択しています。
(.../php4-gd_4%3a4.1.2-6woody3_i386.deb から) php4-gd を展開しています...
未選択パッケージ wwwconfig-common を選択しています。
(.../wwwconfig-common_0.0.19_all.deb から) wwwconfig-common を展開しています...
未選択パッケージ acidlab を選択しています。
(.../acidlab_0.9.6b20-2_all.deb から) acidlab を展開しています...
libphp-adodb (1.51-1.1) を設定しています ...
libphp-phplot (4.4.6-2) を設定しています ...
t1lib1 (1.3.1-1) を設定しています ...
php4-gd (4.1.2-6woody3) を設定しています ...
You are installing GD support for php4, but it's not
enabled in your /etc/php4/apache/php.ini.
To enable it you need to add this line:
extension=gd.so
Do you want me to add it now [Y/n] ? y
wwwconfig-common (0.0.19) を設定しています ...
acidlab (0.9.6b20-2) を設定しています ...
#
|
Snortをインストールすると、インストールが完了した時点で Snortが稼働し始める。ただ、このままの状態だと、まだデータベースに吐き出すような設定にはなっていない。そこで、一度 Snortを停止する。
# /etc/init.d/snort stop
Stopping Network Intrusion Detection System: snort.
#
|
MySQLの設定を行う。先に ACIDであらかじめ指定した設定を使って、データベースおよびユーザの作成を行う。作成するのはデータベースとして snort_log、snort_archive、ユーザとして snort。それから、ユーザ snortに対して snort_logと snort_archiveへのアクセス権限を付与する。
# mysql -u root -p
Enter password: (MySQLの rootユーザのパスワード)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27 to server version: 3.23.49-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create database snort_log;
Query OK, 1 row affected (0.07 sec)
mysql> create database snort_archive;
Query OK, 1 row affected (0.03 sec)
mysql> grant usage on *.* to snort@localhost identified by '(SNORT_PASSWORD)';
Query OK, 0 rows affected (0.33 sec)
mysql> grant all on snort_log.* to snort@localhost;
Query OK, 0 rows affected (0.02 sec)
mysql> grant all on snort_archive.* to snort@localhost;
Query OK, 0 rows affected (0.02 sec)
mysql> \q
Bye
|
データベースとユーザの作成はこれで完了だが、スキーマのためのクエリーは自分で流し込む必要がある。クエリー自体は /usr/ share/ doc/ snort-mysql/ contribの中に固められて入っているので、これを利用する。
# cd /usr/share/doc/snort-mysql/contrib
# zcat create_mysql.gz | mysql -u snort -p -D snort_log
Enter password: (SNORT_PASSWORDを入力)
# zcat create_mysql.gz | mysql -u snort -p -D snort_archive
Enter password: (SNORT_PASSWORDを入力)
#
|
ちゃんと出来たかどうか、念のためデータベースの中身を見てみよう。ユーザも snortを利用する。
# mysql -u snort -p
Enter password: (SNORT_PASSWORDを入力)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 38 to server version: 3.23.49-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+----------------+
| Database |
+----------------+
| mysql |
| snort_archive |
| snort_log |
+----------------+
3 rows in set (0.01 sec)
mysql> use snort_log;
Database changed
mysql> show tables;
+---------------------+
| Tables_in_snort_log |
+---------------------+
| data |
| detail |
| encoding |
| event |
| icmphdr |
| iphdr |
| opt |
| reference |
| reference_system |
| schema |
| sensor |
| sig_class |
| sig_reference |
| signature |
| tcphdr |
| udphdr |
+---------------------+
16 rows in set (0.00 sec)
mysql> use snort_archive;
Database changed
mysql> show tables;
+-------------------------+
| Tables_in_snort_archive |
+-------------------------+
| data |
| detail |
| encoding |
| event |
| icmphdr |
| iphdr |
| opt |
| reference |
| reference_system |
| schema |
| sensor |
| sig_class |
| sig_reference |
| signature |
| tcphdr |
| udphdr |
+-------------------------+
16 rows in set (0.01 sec)
mysql> \q
Bye
#
|
問題無いようだ。
次に Snortの設定で、ログを MySQLに流し込むように設定する。適当なエディタで snort.confを開く。
# emacs /etc/snort/snort.conf
|
設定を変えるのは 3) Configuration output pluginsの箇所。
output alert_syslog: LOG_AUTH LOG_ALERT (← 行頭の # を取る)
output database: log, mysql, user=snort password=SNORT_PASSWORD dbname=snort_log host=localhost
|
それと実験で ICMPのパケットをロギングさせるため、4) Customize your rule set を一部変更する。
include icmp-info.rules(← 行頭の # を取る)
|
以上で Snortの設定が完了。先ほど停止した Snortを改めて起動してみよう。また、ちゃんと起動しているかどうかも確認してみる。もしここで起動していないようであれば、データベースの設定か、snort.confの設定がおかしい。
# /etc/init.d/snort start
Starting Network Intrusion Detection System: snort.
# ps aux | grep snort
snort 3686 1.5 9.7 8088 6144 ? S 02:18 0:01 /usr/sbin/snort -D -S HOME_NET=[192.168.xxx.0/24] -h 192.168.xxx.0/24 -c /etc/snort/snort.conf -l /var/log/snort -b -d -u snort -g snort -i eth0
root 3696 0.0 1.1 2468 736 pts/0 S 02:20 0:00 grep snort
#
|
最後に ACIDの設定を行う。これは snort_logに対して ACID用のテーブルを追加するという作業となる。もし、他のマシンから作業を行うのであれば、http://(Linuxマシン)/acidlab/ にアクセスする。
適切なテーブルがまだ作成されていないため、このページが表示されるはずだ。Setup pageというリンクをクリックする。
データベースのセットアップ画面。[Create ACID_AG]というリンクをクリックする。
正常にテーブルが作成されると上記画面となるはずだ。さぁ、これで Homeをクリックしてみよう。
これが ACIDのメイン画面。何もアラートが無いので綺麗なものである(左下の青いウインドウは Winamp(-_-; )。そこでちゃんと稼働しているかどうか確認してみよう。先に ICMPのパケットのログを取るように設定したので、適当なマシンから pingを打ってみよう。
>ping (LinuxマシンのIP)
Pinging data [192.168.xxx.xxx] with 32 bytes of data:
Reply from 192.168.xxx.xxx: bytes=32 time<10ms TTL=255
Reply from 192.168.xxx.xxx: bytes=32 time<10ms TTL=255
Reply from 192.168.xxx.xxx: bytes=32 time<10ms TTL=255
Reply from 192.168.xxx.xxx: bytes=32 time<10ms TTL=255
Ping statistics for 192.168.xxx.xxx:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
>
|
早速、先の画面をリロードしてみよう。
ということで、ICMPが 100%となっており、Snortが適切に稼働していることが確認出来た、メデタシメデタシ、、、と思ったら何やら TCPのアクセスがあるようだ(汗。ちょっとチェックしてみよう。
立ち上げたばかりだというのに、早速 80番ポートへのアタックのようだ(汗。4番目(紫色)の項は TCPの Payload部である。これを確認すると、、、ということで、未だに CodeRedが蔓延していることが分かる(w。
さて、これで Snortと ACIDのインストールが完了した。後は自分なりのルールセットや日々のルールセットのメンテナンスを行う必要があるが、それはまた今度。
U2 / The Joshua Tree
|
|