VineLinuxパフォーマンスアッププロジェクト:0123

■SnortとPostgresqlを連携させる方法■

 IDS(侵入検知システム)としてSnortと呼ばれるフリーソフトがあります。以前Snortをインストールしてみよう!で紹介しましたが、今回はSnortから出力される警告(アラート)をPostgresqlに出力させる方法を紹介します。

※ここでは既にSnortもPostgresqlもインストールして使える環境になっていることを前提としています。
 また、SnortもPostgresqlもrpm形式でインストールした場合としています。


★SnortとPostgresqlを1台のパソコンに共存させる場合

 Snortにデータベース出力機能を持たせるためにsnort-postgresqlというオプションパッケージをインストールする必要があります。ご自身がインストールしたSnortのバージョンと同じバージョンのパッケージをインストールしてください。
 VineLinux3.X系ではFedora Core向けに作成されたrpmパッケージ(FCX.i386.rpm)はなかなかインストールできませんのでRed Hat Enterprise向け(RHELX.i386.rpm)のほうをおすすめします。

 ここまでインストールが終わったら設定に移ります。この設定をここですべて説明すると非常に長くなってしまうので、以下のページを参考にして設定を行ってください。

●snortのログをPostgreSQLに出力する: http://www.rfm.jp/serversetting/20050614/


 1台のパソコンでSnortもPostgresqlも動かす場合はこれでOKです。

★SnortとPostgresqlを別々のパソコンで動かす場合

 通信を監視したい場所にSnortを設置して、その警告を別の場所にあるパソコンへ送るという方法も可能です。

 ただしこの場合、両方のパソコンにSnortとPostgresqlをインストールする必要があります(なぜか)。インストールしたら当然Snortを動かすパソコンはPostgresqlのサービスを止め、Postgresqlを動かすパソコンはSnortのサービスを止める必要があります。

 サービスの止め方はそれぞれ

  /etc/rc.d/init.d/snortd stop
  /sbin/chkconfig snortd off

  /etc/rc.d/init.d/postgresql stop
  /sbin/chkconfig postgresql off


 でOKです。

 次に設定方法ですが、基本的な流れは上記のリンク先ページの内容とほぼ変わりありませんが、次に説明するようにいくつか注意すべき点があります。

▼Snort側の設定

 Snort側ではSnortの設定ファイル(/etc/snort/snort.conf)を修正します。修正部分はデータベース出力の記述ですが、以下のように修正してください。

  output database: alert, postgresql, user=snort dbname=snort host=Postgresqlサーバが動いているパソコンのIPアドレス

▼Postgresql側の設定

   Postgresql側ではクライアント認証ファイル(/var/lib/pgsql/data/pg_hba.conf)を修正します。修正部分は接続処理の記述ですが、以下のように修正してください。

  host all all Snortが動いているパソコンのIPアドレス そのIPアドレスに対するネットマスク trust

 これで修正は完了です。

 最後にちゃんと起動するかチェックします。先にPostgresqlサーバを起動させてその後にSnortを起動させてください。起動後、Postgresqlサーバ側の端末上で

  ps aux

 を実行して以下のような記述があれば正常に起動しています。

  snort snort Snortが動いているパソコンのIPアドレス idle

 もし記述がなかったらSnort側の端末内の/var/log/messagesに詳しいエラーメッセージが記録されているのでそれを参考に設定をもう一度見直してください。




プロジェクト ホームへ戻る