| rpm だけで作る snort+acid の IDS 環境 |
|
1.はじめに ちょっと旧いメモですが,某日経ネットワークセキュリティに寄稿した際に,snort+acidの環境を簡単に作る方法をまとめたものです. 世の中は snort-1.9 だし,RedHat も 7.3 なので,情報的には腐りかけてます.まぁ,食い物は腐りかけがいちばん美味いってことで,特に改訂もせずに掲載してみます. ほんとうは Forensic ネタでゴーゴーと行きたいところですが,あまりウケが良くないみたいですねぇ. ま,ソレはともかく,解説といきましょう. さて,今回は RedHat Linux 7.2 の linux コンピュータに snort と acid をインストールしてみます. RedHat Linux は皆さんご存じの rpm によってパッケージを管理することができます.結構ラクチンですよね.で,RedHat 7.2 の場合 snort の基本部分ほとんど全てを rpm パッケージによって構築できてしまうんです. |
|
2.RedHat Linux のインストール まずは RedHat Linux の環境についてです. 続いて,snort と acid を動かすための Linux 環境を構築しよう.ここでは RedHat Linux 7.2 J の FTP版を使用してベースとなる Linux 環境を構築しました.インストールタイプは [サーバーインストール] を指定します.また,インストールオプションに, [SQL データベースサーバ] と [Web サーバ] を指定することを忘れないでください. 以下の rpm を acid が必要とします.デフォルトの状態でインストールされているはずですが,念のため rpm -qa | grep php とかで確認してください.
また,libpcap-0.6.2 の rpm パッケージもインストールされてるか確認しましょう.libpcap はデフォルトの状態ではインストールされません.RedHat の cd-rom や ftp サイトにはパッケージが存在しますので,どうにかして手に入れてインストールしてください.
あと,apache の環境も整える必要があるのですが,ここでは触れません.みんな出来るでしょ? | |||||||||
|
3.snort と acid の入手 次に必要なファイルを集めましょう.以下のURIから rpm パッケージを入手します.
ここで注意です.この postgresql サポートの snort rpm には,SQLデータベース創生用スクリプトが存在しません.ですから, snort のソースアーカイブも必要になります.今は直ってるかもしれません.
続けて acid とその関連ファイルを入手しましょう.
|
|
4.snort のインストール では,へろへろと snort をインストールしてみます.
で終わりです.簡単でしょ? 正しくインストールされてれば,以下のディレクトリに snort のファイルが納められているはずです.
最後の /usr/sbin/snort は,snort それぞれのバイナリへのリンクとなってます.postgresql 対応パッケージがインストールしてあれば,/usr/sbin/snort-postgresql に対してリンクが張られてます.あんまり細かいことは気にしなくても良いようになってるんです. でも,なぜか snort-postgresql-1.8.3-5.i386.rpm には,テーブルジェネレーション用の SQL スクリプト create_postgresql が入っていません.そこで snort-1.8.3.tar.gz から contrib/create_postgresql だけをいただいてきます.方法は問いません. |
|
5.データベース環境の整備 つづけて PostgreSQL の環境を整備しましょう. まだ一度も PostgreSQL を動かしていなければ,/var/lib/pgsql/data/ ディレクトリが空の状態になってますから,以下のようにして PostgreSQL を起動します.正しく起動すればすぐに停止しましょう.
すると,/var/lib/pgsql/data ディレクトリに postgresql.conf が作成されているはずです.vi などで postgresql.conf を編集し,
を
に変更してください. あと,RedHat7.3あたりから,デフォルトの設定ではPostgreSQLにネットワーク経由で接続できませんので,/var/lib/pgsql/dataディレクトリにあるpg_hba.confに以下の1行を追加してください.
以上の修正が完了したなら再度 PostgreSQL を起動します. この変更により,PostgreSQL サーバに対して,ネットワーク経由でのアクセスが可能となります. つぎに Snort のログデータベースにアクセスするためのユーザとグループを作成します.ユーザ,グループ名は何でも構いませんが,ここでは snortlog を使用します.
そんではデータベースを構築してみましょう.以下のように PostgreSQL が正しく起動していることを確認し, [ postgres ] ユーザに su します.
さらに createuser コマンドを使用し,先ほどの [ snortlog ] ユーザを PostgreSQL へ登録します.無事にユーザ登録が完了したなら,root ユーザに戻ってくださ.
最後に,snort のアラートを記録するデータベースとテーブルを作成します. まず snort のソースアーカイブから取り出した create_postgresql を [ snortlog ] ユーザのホームディレクトリ [ /home/snortlog ] にコピーし,chown コマンドで所有者・グループを変更しておきます. [ snortlog ] ユーザに su し,以下のように createdb コマンドを使用して,snortlog の名称でデータベースを作成します.この時にパスワードを聞かれるので,適切なパスワードを指定します.パスワードは snort と acid からアクセスする際に必要となりますので,忘れないように注意しましょう.
続いてデータベース内に配置するテーブルを作成しましょう.以下のようにコマンドを入力することで必要なテーブルが作成されます.テーブルが無事に作成されたなら root ユーザに戻ります.
以上でデータベース関係の設定は完了しました. |
|
6.snort.conf の設定 続いて,先ほど作成した snort データベースにログを記録するための設定を行いましょう. snort.conf 内で [ output database: alert, postgresql 〜 ] と指定している箇所を探しだし,以下のように修正を加えます.
user へはデータベースにアクセスするユーザ,そして dbname へはデータベース名を指定します.ここの解説のとおりに作業していれば,両者とも [ snortlog ] を指定します.また,行の最後尾に [ sensor_name = mysnort ] と追加しましょう.複数の snort センサーを1つのデータベースに保存する場合に,それぞれがどの snort センサーで検出したか識別するためのラベルをここで指定することができます. [ mysnort ] の部分は好みに合わせて変更してもかまいません. この時点で,とりあえず snort を実行させることができます.以下のように,まずは直接コマンドラインからsnortを実行してみましょう.なんらかの問題があればエラーメッセージを表示して終了します.
特にエラーメッセージが表示されず,さらにコマンドプロンプトに戻らなければ,snort は正常に実行を続けていることを示していますので,適当に CTRL+ALT+DEL で snort を停止して,今度は /etc/init.d/snortd スクリプトを使って起動してみましょう. その前に /etc/init.d/snortd スクリプトに変更を加えなければなりません.デフォルトは,alert ファイルにログを記録するためのパラメータが指定してあり,これが原因でデータベースにアラートが記録されないのです. vi などのエディタで /etc/init.d/snort の30行目を修正し,-A,-b,-d の3つオプションを外し,-o オプションを追加しておきます.
では /etc/init.d/snort スクリプトを使用して,snort を起動してみましょう.
以上で snort 関連の作業が終わりました.では,いよいよ acid のインストールです. |
|
7.acid のインストール まずカレントディレクトリを,httpd のドキュメントディレクトリである [ /var/www/html ] に移動した後に,以下の画面に従って adodb,phplot,acid と展開してゆきます.
つぎに acid サブディレクトリ内の acid_conf.php を適当なエディタを使用して変更しましょう. 修正する個所は以下のとおりです.
これらのデータベース関係のパラメータは,[ 6.データベース環境の整備 ] でデータベースを創生する際に指定した値を適切に指定しなければならない. acid_conf.php 54行目 phplot のディレクトリを指定する $ChartLib_path = ""; ← $ChartLib_path = "../phplot-4.4.6"; 以上で acid の設定も完了しました.httpd が正しく起動していることを確認したなら,ブラウザから http://192.168.0.250/acid/ のように acid のディレクトリを指定して参照してみます. ![]() すべての設定が正しければ,上のような画面が表示されます.初めて ACID を起動した直後は,まだ ACID 用のデータベース設定が完了していないために,このような画面が表示されるので,最下行の [ Setup page ] をクリックしてください. ![]() この画面では [ Create ACID AG ] ボタンを押せば ACID 用のデータベース設定が完了します.次の画面は ACID の設定が完了したことを示しています.画面の下にある [ Main page ] をクリックすれば ACID の初期画面が表示されて,すべての設定は完了です. ![]() ご苦労様です.長い作業でしたね.ACID の簡単な操作方法もネタ原稿がありますので,そのうち掲載します.気長に待っててください. |