自分のPCとインターネットの間の通信をモニタリングする為にログを取得してみたいと思い、久しぶりにSnortを触ってみたので、その時の操作を記録しておきます。
もうかなり前のSnort 1のころに触ったきりで、ひさりぶりにSnortを調べてみたところバージョンが3になっており、ルールの設定などもかなり変わっているようでしたので少々てこづりました。
1.Snort3のインストール
インストールはかなり大変な作業になるのではないかなあと思っていたのですが、macappstore.orgというサイトにMacへのsnortのインストール方法が超簡単に書いてあり、その通りにやってみたところ、本当にそれだけで入ってしまいました。
具体的には以下の2つのコマンドをMacのターミナルからたたいただけです。
まず1つ目のコマンド
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2> /dev/null
そして2つ目はこちら
brew install snort
ちゃんとインストールされたか確認する為、以下のコマンドでsnortのバージョンを確認します。
snort --version
以下のような形でコンソールにバージョンが表示されたら、インストールは成功です。
,,_ -> Snort++ <- o" )~ Version 3.1.14.0 '''' By Martin Roesch & The Snort Team http://snort.org/contact#team ・・・
この状態で以下のコマンドを実行すれば、ネットワークトラフィックのダンプがコンソールに出力されると思います。
snort -i en1 -L dump
ちなみに、Macの無線LANのデバイス名は”en1″になるようです。
2.Snort3の設定
とりあえずIDSとして動かす為に準備が必要なファイルは、「snort.lua」と「local.rules」の2つです。
2.1 snort.luaファイルの修正
snort.luaはSnort2まででいうsnort.confに相当するようで、サフィックスがconfからluaに変わっております。
このファイルは/usr/local/etc/snortのディレクトリ配下にありますので、以下のコマンドで編集します。
vi /usr/local/etc/snort/snort.lua
ファイルを開くといろいろと書かれていますが、HOME_NETの変数だけ以下のように修正すれば大丈夫です。
なお、192.168.0.0/24はサンプルなので、自分の環境に合わせて変更する必要があります。
HOME_NET = '192.168.0.0/24'
2.2 local.rulesファイルの作成
そして次にlocal.rulesファイルを新規に作成します。
私はsnort.luaファイルと同じディレクトリ(/usr/local/etc/snort)に以下のコマンドで作成しました。
vi /usr/local/etc/snort/local.rules
なお、local.rulesへの記述はとりあえずテストなので以下の1行だけでも大丈夫です。
alert icmp any any -> $HOME_NET any (msg:"ICMP connection test"; sid:1000001; rev:1;)
これで設定作業は完了です。
ちなみに設定ファイルの記述が正しいかどうか以下のコマンドでチェックすることが可能です。
sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/snort/local.rules
3.Snort3をIDSとして動かす
正直、-Aと-s, -k の3つのオプションの意味はちゃんと調べてませんが、以下のコマンドで「2.Snort3の設定」で編集・作成したsnort.lua(-cオプション)とlocal.rules(-Rオプション)ファイルを読み込めば、SnortがIDSとして起動します。
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/snort/local.rules -i en1 -A alert_fast -s 65535 -k none
なお、ネットワークインターフェイスとして、-iオプションでen1を指定しています。
試しに他のPCからMac(Snortを入れたPC)に向けてpingを打ったところ、無事に以下のログがコンソールに表示されました。
10/24-10:05:57.123629 [] [1:1000001:1] "ICMP connection test" [] [Priority: 0] {ICMP} 192.168.0.*** -> 192.168.0.**
10/24-10:05:57.123661 [] [1:1000001:1] "ICMP connection test" [] [Priority: 0] {ICMP} 192.168.0.*** -> 192.168.0.***
・・・
4.ログをファイルに出力する(無理やり)
あとはこのログを-lオプションを使ってファイルに吐き出すだけ、、、と思ったのですが、いまのところそれではうまく言っていません。(なぜだろう。。。)
4.1 ログディレクトリの作成
まずは、ログを出力するディレクトリを作成します。
インストールしてもログディレクトリは無いはずなのでmkdirで以下のように作成しておきます。
cd /var/log
mkdir snort
なお、作成した/var/log/snort のパーミッションには注意が必要です。Snortからログが書き込めるようにパーミッションは与えておいてください。
4.2 ログの出力
冒頭で書いたとおり、いまのことろ-lオプションでの出力がうまくいっていません。
そこでとりあえず以下の通り、リダイレクト”>”をつかってファイルに無理やり吐き出しています。
snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/snort/local.rules -i en1 -A alert_fast -s 65535 -k none -q > /var/log/snort/test01.log
なお補足ですが、リダイレクトで普通に吐き出すとSnort起動時や終了時のメッセージまで出力されてしますので-qオプションを利用して不要のメッセージは出力されないようにしています。
上記のコマンドの後、再度、他のPCからpingを投げてみて、/var/log/snort/test01.logにログが書き込まれて入れば成功です!
5.参考情報
Snort3を動かすまでにかなりてこずりましたが、参考にしたのは主に以下のサイトになります。
■Install snort on Mac OSX
macappstore.org/snort/?utm_source=pocket_mylist
■faceitnet.
faceitnet.blogspot.com/2016/11/snotr-intrusion-detection-system.html
■snort3
www.snort.org/snort3
コメントを残す