🐾
Suricata IPSでカスタムルールを設定する時にハマったこと
概要
Suricataは、オープンソースのネットワーク侵入検知・防御システム(IDS/IPS)です
SuricataをIPSとして利用しようとしたとき、いくつかつまずいた点があったので備忘録としてまとめます
つまずいた点
1.公式ルールは直接変更しない
/etc/suricata/rules/suricata.rulesは公式配布ルールです
特定のシグネチャをdropに変更したい場合、alert → dropに書き換えて設定を反映させればいいと考えていました
しかし、suricata-updateでルールをアップデートすると、上書きされalertになっていました
特定のシグネチャを変更したい場合、local.rulesにカスタムルールとして追記した方が良さそうです
alert → dropに変更
[root@test ~]# grep 2100498 /var/lib/suricata/rules/suricata.rules
drop ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, confidence Medium, signature_severity Informational, updated_at 2019_07_26;)
[root@test ~]#
suricata-updateでルールを更新
[root@test ~]# suricata-update
---
<Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules
---
<Info> -- Done.
[root@test ~]#
alertに戻っている
[root@test ~]# grep 2100498 /var/lib/suricata/rules/suricata.rules
alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, confidence Medium, signature_severity Informational, updated_at 2019_07_26;)
[root@test ~]#
2. SID(シグネチャID)は一意に設定する
公式ルールをdropに変更したものをそのままカスタムルールに記載したところ、エラーが発生しました
どうやらSID(シグネチャID)が重複するとエラーになってしまうようです
元ルールをコピーして使う場合は SIDを新しい番号(1000000~1999999)に変更する必要があります
NOTE: 1000000-1999999 Reserved for Local Use – Put your custom rules in this range to avoid conflicts!
公式ルールをそのままdropに変更してカスタムルールに記載
[root@test ~]# cat /var/lib/suricata/rules/local.rules
drop ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, confidence Medium, signature_severity Informational, updated_at 2019_07_26;)
[root@test ~]#
構文チェックでSIDが重複のエラーが発生
[root@test ~]# suricata -T -c /etc/suricata/suricata.yaml
---
E: detect-parse: Duplicate signature
E: detect: error parsing signature
---
[root@test ~]#
まとめ
- 公式ルールは直接変更しない → 必ず local.rules に追加
- SIDは一意に設定(1000000〜1999999 推奨)
- local.rules に追加後は
suricata -T -c /etc/suricata/suricata.yamlで構文チェックする
参考リンク
Discussion