Snortはネットワークに流れるパケットをチェックする。不正侵入のきっかけになり得るポートスキャンや、サービス不能(DoS)攻撃、ウィルスなどの不正なパケットを検知できる。ネットワークの利用状態も調べられるため、ウィルスに侵されて不正なパケットを発信しているクライアントマシンの特定にも使える。

関連するパッケージ

Snortの動作にはlibpcapが必要になる。libpcapは比較的新しいLinuxディストリビューションであれば、はじめからインストールされている場合が多い。以下のようなコマンドでパッケージが導入済みか確認できる。

#  rpm -qa | grep libpcap

libpcapが導入済みであれば、パッケージ名(バージョン)が表示される。

ソフトの入手

下記URLからSnortがダウンロードできる。

   http://www.snort.org~

Snortのインストール手順

Snortアーカイブの解凍

#  tar  -zxvf  snort-1.9.0.tar.gz

解凍したディレクトリに移動

#  cd  snort-1.9.0

環境の設定

#  ./configure

コンパイル

#  make

インストール

#  make  install

ログの保存先ディレクトリ作成

#  mkdir  /var/log/snort

設定ファイルの保存先ディレクトリ作成

#  mkdir  /etc/snort

設定ファイルを/etc/snortにコピー

#  cp  rules/*.rules  etc/snort.conf  etc/classification.config  etc/reference.config  /etc/snort

設定ファイルの修正
 エディタで/etc/snort/snort.confを開く

 HOME_NETの設定
  anyにすると、Snortが動作しているシステムに届く全てのパケットを監視できる。
  多量のパケットが届くようなシステムの場合は、検知対象を限定した方がよい。
   例えば、192.168.1.0〜192.168.1.255までのIPアドレスを持つマシンからのパケットのみを検知したい場合は、
    192.168.1.0/24
   と指定する。また、Snortが動作しているシステムのみを検知対象にしたい場合は、
    システムのIPアドレス/32
   と指定する。

 RULE_PATHの設定
  Snortのルールファイルを保存したディレクトリを設定する。
  デフォルトは ../rules となっているが、ここでは /etc/snort に変更する。

Snortの起動

以下コマンドでSnortが動作する。

#  /usr/local/bin/snort  -Dde  -c  /etc/snort/snort.conf

また、上記コマンドを /etc/rc.local の最後に追加することで、マシンの再起動時に自動的にSnortも起動する。

上記の実行方法ではバックグラウンドで実行されるため、正常に起動したかどうか確認ができない。
このため、初期導入時には以下のような方法でコンソールにメッセージが表示される状態で起動する。

#  /usr/local/bin/snort  -i  lo  -c  /etc/snort/snort.conf

          ローカルループバックインターフェイスの指定

起動後、ローカルループバックにpingを送り、/var/log/snort/ にログが作成されていれば正常に動作している。

Snortのログのチェック

Snortは、ルールファイルに適合したパケットを検知すると、その情報を /var/log/snort ディレクトリ以下にログとして保存する。デフォルト状態のままでSnortを起動した場合は、注意すべきパケットを記した「alert」ログと、ポートスキャンとみなしたパケットを記した「portscan.log」ログという2種類のログを記録する。また、それ以外のログについては対象となるマシンのIPアドレスと同じ名前のディレクトリを作成し、その中に保存する。
管理者にとっては、大量のログをチェックするのは手間がかかる。Snortのログを集計するソフトを用いれば、そのソフトが自動的にログを集計し管理者の見やすい形式で表示してくれる。ログを集計するソフトには、HTML形式で確認できるSnortSnarfがある。

SnortSnarf導入に必要な条件

SnortSnarfをインストールするには、「XML:Parser」,「Mail:Sendmail」というPerlモジュールがインストールされている必要がある。またPerlモジュールを使用するのでPerlも必要。

SnortSnarfのインストール

・XML:Parserのインストール

   #  tar -zxvf  XML-Parser-2.31.tar.gz
   #  cd  XML-Parser-2.3.1
   #  perl  Makefile.PL
   #  make
   #  make  install

・Mail:Sendmailのインストール

   #  tar  -zxvf  Mail-Sendmail-0.79.tar.gz
   #  cd  Mail-Sendmail-0.79
   #  perl  Makefile.PL
   #  make
   #  make  install

・SnortSnarfのインストール

   #  tar  -zxvf  SnortSnarf-020316.1.tar.gz
   #  cd  SnortSnarf-020316.1/Time-modules
   #  perl  Makefile.PL
   #  make
   #  make  install
   #  cd  ..
   #  mkdir  /usr/local/snortsnarf
   #  cp  -r  /snortsnarf.pl  include  /usr/local/snortsnarf

SnortSnarf?が作成するHTMLファイルの保存ディレクトリを作成

 顱Apacheをrpmパッケージでインストールした(ドキュメントルートが/var/www/html)場合

       #  mkdir  /var/www/html/snort

 髻Apacheをコンパイルしてインストールした(ドキュメントルートが/home/httpd/html)の場合

       #  mkdir  /home/httpd/html/snort

  ※Apacheのデキュメントルートとは別にディレクトリを作成する場合は、httpd.confにAliasを設定する

SnortSnarfの実行

SnortSnarfの実行はカレントデイレクトリをSnortSnarfをインストールした場所にしてからでないとうまく動作しない。 このため、以下のようにカレントディレクトリを移動する。

   #  cd  /usr/local/snortsnarf

以下のようにSnortSnarfを実行する。

   #  /usr/local/snortsnarf/snortsnarf.pl    -d    /var/www/html/snort        ・・・>(次行に続く)
                                                               HTMLファイルの保存先
           /var/log/snort/alert    /var/log/snort/scan.log
            alertログの保存先      ポートスキャンログの保存先

実行すると、ログを集計し /var/www/html/snort 以下にHTMLファイルが生成される。

ブラウザから、以下のようなURLを指定すると集計結果が確認できる。

   http://ホスト名/snort/

  ※このページのアクセス件は、httpd.conf などに設定する。

ルールファイルの編集

Snortが検知できるパケットは、ルールファイルに依存する。具体的には、ルールファイル内に記述された文字列に合致する文字列を含むパケットを検出する。
ルールファイルは .rules という拡張子を持つ。Snortは標準でいくつかのルールファイルを備えている。例えばサービス不能(DoS)攻撃を検知するdos.rulesや、FTPサービスの脆弱性を狙った攻撃を検知するftp.rulesなど。ルールファイルは、検出したいパケットに含まれる文字列を記したルールの集まりである。
ユーザが自分でルールファイルを作成することもできる。例えば、/etc/snort/user.rules ファイルを作成し、その中にルールを記述していく。ルールファイルを新しく作成した場合は、Snortがそのルールファイルを読み込むように snort.conf ファイルを編集する必要がある。 user.rules を作成した場合は snort.conf ファイルに

include  $RULE_PATH/user.rules

と追加して、新しいルールファイル名を指定する。

ルールの設定例

・CodeRedを検知するためのルール

alert  tcp  any  any  ->  any  80  (msg:  "ALERT  CodeRed  Comming.";  content:  "default.ida\";)

・URLを使ったルールの設定

alert  tcp  $HOME_NET  any  ->  xxx.xxx.xxx.xxx  80  (msg:  "Connecting  Dengerous  Web  Site";)

  アクセスを制限したいサイトに接続しているユーザを検知するためのルール。
  xxx.xxx.xxx.xxxにアクセスを制限したいサイトのIPアドレスを記述する。

Snortをサービスに登録

snortが起動時にスタートするように/etc/rc.d/init.d/配下にsnort起動用シェル(snort)を以下のように作成し、runlevel3で自動的に実行させる。

#!/bin/sh
# chkconfig: - 91 35
# description: snort

. /etc/rc.d/init.d/functions

SERVICE="snort"
SERVER="/usr/local/bin/snort"
ARGS="-D -i eth0 -u snort -g snort -c /etc/snort/snort.conf"

case "$1" in
  start)
    echo -n "Starting $SERVICE: "
    daemon "$SERVER $ARGS"
    echo
    touch /var/lock/subsys/$SERVICE
    ;;
  stop)
    echo -n "Stopping $SERVICE: "
    killproc $SERVICE
    echo
    rm -f /var/lock/subsys/$SERVICE
    ;;
  restart)
    $0 stop
    $0 start
    ;;
  *)
    echo "Usage: $SERVICE {start|stop|restart}"
    exit 1
esac

exit 0
exit 0

以上の内容を/etc/rc.d/init.d/snortとして作成して、/etc/rc.d/rc3.d/にシンボリックリンクを作成する。  

$su
#ln -s /etc/rc.d/init.d/snort /etc/rc.d/rc3.d/S85snort 

以上の作業を行った後Linuxを再起動してsnortのプロセスが起動していれば自動起動の確認は完了。
プロセスの確認はps aux | grep snortで可能


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-04-03 (日) 17:00:08 (3347d)