Snort

【Snort】
IDS (Intrusion Detection System)
http://www.snort.org/
【rules】
Snort用のルールセット(定義ファイル)
http://www.snort.org/
【IDScenter】
Snortを使いやすくする
http://www.engagesecurity.com/
【WinPcap】
Snortが通信を監視できるようにする(パケットキャプチャ用ドライバ)
http://www.winpcap.org/
【Oinkmaster】
ルールセットを更新する
http://oinkmaster.sourceforge.net/
【ActivePerl】
Perlで書かれたプログラムを動かす
http://www.activestate.com/
【Snort Geographic Trace log Manager】
Snortの検知結果を解析し攻撃元を地図上に表示する
http://i9001f.hp.infoseek.co.jp/

Snortをエラーなしに動かすことはできるようになりましたが、アラートへの対応の仕方がわかりません。(IDSは原則として不審な通信を検知しても警告するが遮断しない。誤検知の可能性も。)ファイアウォールや「Windowsファイアウォール」やルータで攻撃元のIPアドレスや攻撃に使われたポートをブロックすればいいのだろうか。

また、IDScenterはまだSnort 2.1.0以降に正式には対応していないので調整が必要です(以下の説明で「(2.1.0以降)」と書いてある部分)。


動かし方

  1. WinPcapをインストール。
  2. Snortをインストール。
  3. ルールセットを上書き。
    (「Sourcefire VRT Certified Rules」・・・公式・登録者用
    「Community Rules」・・・非公式・未登録者用)
    (上書きした後で「rules」フォルダの中の「snort.conf」「unicode.map」を
    「etc」フォルダの中に移動したほうがいい。)
  4. IDScenterをインストール。
  5. IDScenterの設定。

IDScenterの設定について

(Snortをデフォルトでインストールした場合)

1General

  • Configuration
    「Snort 2.x」を選ぶ。
    「Snort executable file」・・・「C:\Snort\bin\snort.exe」
    「Autostart options」・・・両方チェック
    「Log folder」・・・「C:\Snort\log\alert.ids」
    (これは存在しないファイルだけど、後述の「Portscan detection」と同様SnortかIDScenterが自動で作ってくれる
    自分で空のテキストファイルを作ってもいい)
  • Snort options
    「Configuration file」・・・「C:\Snort\etc\snort.conf」

2Wizards

  • Network variables
    • 「HOME_NET」を選ぶ
      →「Edit variable」を押す
      →「Single host/network/parameter」を選ぶ
      →「Update」を押す
      →リストから自分のIPアドレスを選んで「Select/Add」を押す
      (→IPアドレスの後のサブネットマスクを「/32」から「/24」に変える
      (たとえば
      IPアドレス 192.168.0.1
      (二進数 11000000.10101000.00000000.00000001)
      のとき、
      1. サブネットマスク 255.255.255.255 (32)
        (二進数 11111111.11111111.11111111.11111111)
        ならIPアドレスのうち
        • ネットワークアドレス部・・・192.168.0.1
        • ホストアドレス部・・・なし
        となりそのパソコンだけをHOME_NETとして監視するが、
      2. サブネットマスク 255.255.255.0   (24)
        (二進数 11111111.11111111.11111111.00000000)
        ならIPアドレスのうち
        • ネットワークアドレス部・・・192.168.0
        • ホストアドレス部・・・1
        となり192.168.0.1〜192.168.0.254のIPアドレスを同じネットワーク(サブネット)のHOME_NETとして監視するので変えなくてもいい))
      →右下の「Apply」を押す (1)
    • 「EXTERNAL_NET」を選ぶ
      →「Edit variable」を押す
      →「Single host/network/parameter」を選ぶ
      →「!$HOME_NET」と入力する
      →右下の「Apply」を押す
    • 「RULE_PATH」を選ぶ
      →「Edit variable」を押す
      →「Single host/network/parameter」を選ぶ
      →「C:\Snort\rules」と入力する
      →右下の「Apply」を押す
  • Preprocessors
    • 「Portscan detection」タブの「Portscan detection」にチェックして「Monitored hosts/networks」で「$HOME_NET」を選ぶ
    • (2.1.0以降) 「Misc」タブの「Unsupported preprocessors」のリストにある

      preprocessor flow: stats_interval 0 hash 2
      preprocessor http_inspect: global \
      preprocessor http_inspect_server: server default \
      preprocessor sfportscan: proto { all } \

      の2つ目と3つ目と4つ目を修正して

      preprocessor flow: stats_interval 0 hash 2
      preprocessor http_inspect: global iis_unicode_map unicode.map 932
      preprocessor http_inspect_server: server default profile all ports { 80 8080 8180 } oversize_dir_length 500
      preprocessor sfportscan: proto { all } memcap { 10000000 } sense_level { low }

      とする(\は逆スラッシュの代わり)

      3つ目は途中で折り返され後で「Apply」を押すとそこで改行されてしまうため、実際は「Wizards」の「Preprocessors」でなく「General」の「Snort options」で直接編集して、最後に「Apply」でなく「Save」を押さなければならない (2)
  • Rules/Signatures
    • 空欄の右にあるフォルダの絵のボタンを押し、
      • C:\Snort\rules\classification.config
      • C:\Snort\rules\reference.config
      • 「community-」で始まる名前のもの
      を選んでそれぞれ「Add」を押してリストに加える
    • 元からあった「classification.config」「reference.config」のチェックをはずす
    • リストの「C:\Snort\rules\classification.config」を選び「Classification file」の「Select」を押す
    • (ここで監視する不正アクセスの種類を決められるが、初めはそのままで、後で反応を見ながら調節すればよい)

3Logs

  • Options
    「Packet logging and network options」タブの「Network settings」欄
    • 「Update lists」を押す
    • 「Home network」・・・「HOME_NET」で指定したものと同じIPアドレス(空欄のままでもいい)
    • 「Network Interface #」・・・使っているネットワークアダプタの番号
ネットワークアダプタの番号の確認方法
  1. Snortが動いているならIDScenterで「Stop Snort」を押して止める
  2. コマンドプロンプトで C:\Snort\bin に移る(cd C:\Snort\bin)
  3. 「snort -W」を実行する

4Alerts

  • Alert detection
    「Snort alert log/XML log file」のリストに「C:\Snort\log\alert.ids」があることを確認する
    なかったら「Add alert log file」を押す

5最後に右上の「Apply」を押す

  • (2.1.0以降) 先述の「General」の「Snort options」の

    「preprocessor http_inspect_server: server default profile all ports { 80 8080 8180 } oversize_dir_length 500」

    の部分で改行されている所を半角スペースに修正して「Save」を押す
  • Snortが動いているなら「Stop Snort」を押し、「Test settings」を実行して、エラーが出ず

    「Snort sucessfully loaded all rules and checked all rule chains!」

    と出れば成功(sucessfullyはスペルミスですよーMartin Roeschさん)
    このコマンドプロンプトはタイトルバーにもあるようにEnterキーで閉じる

以後ウィンドウズと同時にSnortも起動します。Snortが侵入を検知するとIDScenterはタスクトレイのアイコンを点滅させます。ルールセットは数日〜数週間ごとに新しいものが出ているので、ときどき更新してください。

1

HOME_NET変数にネットワークアダプタを指定することもできる。

コマンドプロンプトからSnortを「-W」オプションで実行してインターフェース名の一覧を取得し、それを基に

$(\Device\NPF_{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}_ADDRESS)

のように入力すればいい。見ながら写すのが面倒なら、レジストリエディタ(「ファイル名を指定して実行」で「regedit」を実行)で

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

の中から見つけてキー名をコピーすればいい。

2

IDScenterはこれらのプリプロセッサの機能を知らないので、設定(snort.conf)を保存するときにオリジナルが

preprocessor http_inspect: global \
iis_unicode_map unicode.map 1252

preprocessor http_inspect_server: server default \
profile all ports { 80 8080 8180 } oversize_dir_length 500

(略)

preprocessor sfportscan: proto { all } \
memcap { 10000000 } \
sense_level { low }

となっている所を

preprocessor http_inspect: global \
preprocessor http_inspect_server: server default \
preprocessor sfportscan: proto { all } \

と変えてしまうためにエラーが起きていた(たぶん)。

なぜ1252でなく932にするかというと、unicode.map(snort.confと同じ場所)を見るとアメリカのサーバは1252、日本のサーバは932を推奨または指定しているような感じだから。

ただしhttp_inspect_serverはそのままだと誤検知が多いので調整が面倒なら

preprocessor http_inspect_server: server default profile all ports { 80 8080 8180 } no_alerts oversize_dir_length 500

とするとアラートが出なくなる。


おまけ

・アラート

Snortが侵入を検知するとIDScenterはタスクトレイのアイコンを点滅させるが、他の方法でアラートを出させることもできる。

4Alerts

  • Alert notification
    音を鳴らす・任意のソフトを起動する
    例 C:\WINDOWS\Media\tada.wav
  • AlertMail
    メールを送る
    (「SMTP server」「From」「To」を設定すれば使える
    「Add last # lines of alert log」で6くらいを入力しておいたほうがいい
    「Test AlertMail」を押せば確認できる)

ただしこの2つの設定はなぜかIDScenterを起動するたびに「General」の「Overview」では「off」になっている(そのままでもアラートのときに機能する)ので、それが気になるなら毎回設定画面の右上の「Apply」を押さなければならない。(しかし押すと「Wizards」の「Preprocessors」の「Misc」タブの「Unsupported preprocessors」を修正しなければならなくなるので面倒になる。)しかも、アラートのときに音は鳴るがメールは同じ種類の通信でも送ってくれるときと送ってくれないときがある。

・ルールセット更新

Oinkmasterを使えばルールセットを簡単に更新できる。

Oinkmaster
  1. ActivePerl(5.8.1以上)をインストール。
    MSI版を実行できなければAS package版の「Installer.bat」を実行する。
  2. Oinkmasterを解凍してどこかに置き、「contrib」フォルダの中の「oinkgui.pl」を実行する。
    • 「Required files and directories」タブ
      「oinkmaster.pl」欄・・・oinkmaster.plの場所
      「oinkmaster.conf」欄・・・oinkmaster.confの場所
      「output directory」欄・・・「C:/Snort/rules」
    • 「Optional files and directories」タブ
      「Alternate URL」欄・・・使うSnortのバージョンに合うルールセットを選ぶ
      (リストに無ければ

      http://www.snort.org/pub-bin/downloads.cgi/Download/comm_rules/Community-Rules.tar.gz

      などのように入力する)
      「Backup directory」欄・・・ルールセットをバックアップしておきたいならフォルダを作ってそれを指定する
      (例 C:\Snort\rules_backup)
      「Editor」欄・・・テキストエディタを指定する
      (例 C:/WINDOWS/notepad.exe)
  3. 「Save current settings」を押す。
  4. 「Update rules!」を押す。
クリエイティブ・コモンズ・ライセンス
このサイトの文章は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
トップページ