読者です 読者をやめる 読者になる 読者になる

内角540°

セキュリティ。SIEMとかIPSとか統計とかクラウドとか。数学以外で。

Snort ルールの作成方法(very easy)

Snortのルールを作ってみる

今回は超初級編・ICMP検知をしよう!

 

<目標!>

・とりあえずルールを作る

・ルールの構造理解する

 

検知ルールはSnort\rules配下にたくさん入ってる

自作ルールは基本的にlocal.rulesファイルに記入していくんだ

f:id:gokaxtukei:20151220153958p:plain

 

ルールはこんなふうに追記だ

f:id:gokaxtukei:20151220154233p:plain

alert icmp any any -> any any (msg:"Protocol ICMP rule" ; sid:1000000;)

 

これは恐ろしいルールで、ICMP通信をすべて検知する!

 

説明はともかく、実行してみるよ

pingを4回送信して…

f:id:gokaxtukei:20151220154502p:plain

8件検知したぞ!

f:id:gokaxtukei:20151220154431p:plain

 

送信したICMPと、相手からエコーされたICMP両方検知してるんだな!

無意味なログがゴロゴロ恐ろしい…

 

さておき、ルールを説明しよう

 

ルールの基本構造は7つに別れるよ

①alert ②icmp ③any ④any -> ⑤any ⑥any ⑦(msg:"Protocol ICMP rule" ; sid:1000000;)

 

①アクション

ルールにマッチした時、何をするかを指定する

基本的には「alert」で、ログを残し、通知もする設定

ほかにも「log(ログ残すだけ)」「pass(パケットを無視)」などあるよ

プロトコル

通信のプロトコルを示す

tcp / udp / icmp / ip

多くのルールはtcpで行われてて、udpDNS関連が多いイメージ

icmpはそのままで、

ipはすべてのプロトコルで検知をするよ

送信元IP

今回は"any"ですべてのIPで検知

指定方法はいろいろ出来て

単一IP:192.168.1.1

複数IP:[192.168.1.1,192.168.1.2,192.168.1.3]

サイダー指定:192.168.1.0/24

送信元ポート

今回は"any"ですべてのポートで検知

指定方法は

単一ポート:80

複数ポート:[80,8000,8080]

範囲指定:80:1024

⑤受信先IP

受信IPを指定する

指定方法は送信元と同じ

⑥受信先ポート

受信IPを指定する

指定方法は送信元と同じ 

⑦オプション

ルールの名前や、検知方法を細かく指定できる

 

今回はルール名の指定と、

msg:***;

SIDの指定の指定をしているよ

sid:***;

 

SIDはSnort IDの略で、ルールの識別番号を示すんだ

snortからダウンロードするルールは30000以上まで使ってるので競合しないように

1000000から順につけていく!