まずはsnortの起動から思い出した。
ちなみに全てrootで動かしてる。
普通に動かす(ログは/var/log/snort下に保存される)
# snort -c /etc/snort/snort.conf
コンソール形式で検知を出力する
# snort -c /etc/snort/snort.conf -A console
詳細な情報を残す(-d でアプリケーションレイヤのデータも記録)
# snort -c /etc/snort/snort.conf -A full -d
次にシグネチャルールを作ってみる
ルールを追加するファイルは/etc/snort/rules/local.rules
■nmapのFinスキャンの検知ルール
alert tcp any any -> [ターゲットIP] 22 (msg:"Nmap Fin Scan"; flags:F; sid:1000008; rev:1;)
これにnmapを打ってみる
#nmap -sF -p22 [ターゲットIP]
コンソール形式で下記が出力される
12/23-12:59:24.994072 [**] [1:1000008:1] Nmap Fin Scan [**] [Priority: 0] {TCP} [攻撃元IP]:36763 -> [ターゲットIP] :22
■特定のuser-agentを遮断
reject tcp any any -> [ターゲットIP] 80 (msg: "OpnVAS Scanner Protected"; content:"OpenVAS"; sid:1000010; rev:1; )
ポイントはcontentの後の文字列
もっと正確に入れたければ
content:"OpenVAS"; http_header;
っていれればいいのかな
telnet [ターゲットIP] 80
GET / HTTP/1.1
Host: 対象Webサーバホスト
User-Agent: OpenVAS
Connection closed by foreign host.
遮断ルールなのでUser-Agent送った時点でコネクションが切断された。
そしてターゲット側で下記ログが出力される
12/23-13:08:10.280658 [**] [1:1000010:1] OpnVAS Scanner Protected [**] [Priority: 0] {TCP} [攻撃元IP]:58878 -> [ターゲットIP] :80
========
※rejectでhttp_header無しで記載するとtelnetでリクエスト送るときに、user-agent送った時点でコネクションが切られログが出力される。htmlは返ってこない。
http_headerありでやると、user-agent送れちゃって、レスポンス(htmlデータも含む)が返ってきた後にコネクションが遮断されてログが出力される
どういう違い何んだろか
========
念願のsnortのシグネチャルールを好きにいじることができた
あとできてないことでやってみたいこと
・BruteForce系の検知(どういったロジックでルール設定するの気になる)