これまでの一連の流れで、snort は起動できる常態にありますが、snort-2.6.x からルールセットは付属していません。そのため、先にルールセットを入手しなければ、snort を起動することは出来ませんので注意してください。
Snort を起動させる前に、右メニュー "ルールセットの自動更新" で説明している Oinkmaster のセットアップを行う必要があります。前回、公開していた 2.3.x から 2.6.x への書き直しであるため、手順が前後しています。<(_ _)>
Snort には運用上、重要な起動オプションが多くあります。詳細は、以下を参照していただくとして、重要なポイントを掻い摘んで説明します。
参照 => Snort マニュアル日本語訳
Snort の起動因数は、以下のように指定します。RHL では起動スクリプトが用意されていますのでそちらを修正する事になりますが、、、
以下の例では、ルートユーザが実行していますが、-u で snort 権限で実行するように指定されています。
引数の必要のないオプションは -dev 、または -d -e -v と指定する事も出来ます。また、-v は検証用のオプションで、 パケットダンプの内容をコンソール上に表示する事が出来ます。本番の動作では指定しないようにして下さい。
以下、代表的な起動オプションです。
-c /etc/snort/snort.conf
設定ファイルを指定しています。これにより snort.conf に記述された設定が、初めて有効になります。 つまり " ネットワーク不正侵入検知モード "で snort を実行させる場合に、必要となるオプションです。注意して下さい。
-A fast
/var/log/snort/alert に出力されるログのレベルを指定します。
full fast unlock none
上記の例ではfastを指定していますが、この場合、/var/log/snort/alert に以下のように一行にまとめられます。
03/24-19:00:46.190801 [**] [1:402:4] ICMP Destination Unreachable (Port Unreachable) [**] [Classification: Misc activity] [Priority: 3] {ICMP} xxx.x.xx.x -> 192.168.4.144
特に Swatch でリアルタイムにメール、スクリプト等アクションを起こしたい場合に有効です。
注意
この指定を行った場合、MySQLへの出力が機能しませんでした。また、syslog も無視されてしまうようです。ACID を利用する場合は注意して下さい。
-d
アプリケーションレイヤーを記録します。
-e
レイヤー2のパケットヘッダを記録します。
-D
デーモンモードで起動します。テスト段階でコンソール上で動作状況を確認したい場合は指定しません。このオプションは、動作検証後の運用段階で指定します。 -v
このオプションを指定した場合、コンソール上にパケットを出力します。動作確認を行う段階で指定します。負荷が高い上、パケットの取りこぼしが発生するため、通常の運営には指定してはいけません。
-l /var/log/snort/ (小文字のエル)
ログディレクトリの指定します。
-i eth0
パケットを監視するインターフェイスを指定します。複数のインターフェイスに飛んで来るパケットを監視したい場合は、 -i any とします。この場合、全てのインターフェースが対象となります。(any は kernelバージョンに依存します。FC2、CentOS は問題ありません)
-o
lert → Pass → Log の評価順を Pass → Alert → Logの順に変更します。これにより、 local.rules などで pass アクションを指定し、特定のネットワークを除外するような設定を行った場合、pass アクションが有効に機能します。pass アクションについては後述します。
-p
プロミスキャスモードを無効にします。これを有効にした場合、自分宛てに届くパケット以外は破棄されるため、自ホストのみが監視対象となります。内部の盗聴行為の監視が必要がない、監視するサーバーが自身のみの場合に使用します。
-z
stream4 プリプロセッサを有効にします。ハッカーが管理者の目を詐くための連続するダミー攻撃を回避します。以下のサイトで解り易く解説されています。
参考URL => Snortへの攻撃とその対策
snort の起動オプションは非常に多岐にわたります。上記のオプションで十分対応できると思いますが、それぞれのネットワーク環境に応じて指定する必要も出てきます。
Snort-2.6.x から起動に関する設定で変更があります。次のページで追加説明しています。新たに snort をセットアップする場合は、以下は無視して次のページにお進み下さい。
snort-2.3.3/contrib/ に RHL 用の起動スクリプトが用意されています。これを雛形に起動スクリプトを作成します。snort は、様々な起動オプションがあります。起動オプションはそれぞれの目的に合わせる必要があります。
snortd と名前を代え、適切なパーミッションを設定して /init.d/ へコピーします。
以下修正内容です。
snort-2.1.1-RC1/contrib/ に起動スクリプトが用意されています。起動オプションはそれぞれの目的に合わせる必要があります。
# Source function library.
. /etc/rc.d/init.d/functions
SERVER="/usr/local/snort/bin/snort"
ARGS="-i eth0 -Ddeoz -u snort -g snort -c /etc/snort/snort.conf -l /var/log/snort"
# See how we were called.
case "$1" in
start)
echo -n "Starting snort: "
daemon "$SERVER $ARGS"
echo
touch /var/lock/subsys/snort
;;
stop)
echo -n "Shutting down snort: "
killproc snort
echo
rm -f /var/lock/subsys/snort
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
FedoraCore / CentOS であれば、X window備え付けのサービスツールを使ってRUNレベルを設定すると便利です。起動時のログは messages で確認できます。
動作確認が取れたら、次は、Snort がパケットフィルタリングに使用するルールファイルの自動更新を行います。