●Snortルールの作成 |
実際にルールを作成するには、冒頭で触れたように
ルールヘッダ(ルールオプション) |
という形で記述する。ルールヘッダには、「alert」のほかに「pass」や「log」といった指定をすることができる。passは文字通りパスすることを指す。たとえば、Webサーバに対するアクセスをすべて記録したくない場合には、passを使用して、ポート80への通信は記録しないようなルールを作成すればよい。また、ルールにマッチングしたものを、アラートを出さずにログディレクトリにのみ残したい場合にはlogを使用する。
ルールオプションに利用できるキーワードは数多く、今回は一部のみしか紹介しないが、すでに存在するルールセットの中から、参考になるものを取りだしてみるとよいだろう。
ルールオプションの記述は、()でくくり、
([キーワード]:[値];[キーワード]:[値];[キーワード]:[値];・・・) |
のように「[キーワード]コロン:[値]セミコロン;」という形で記述を行う、セミコロンで区切って複数のキーワードを記述することができる。
表3■キーワード(抜粋)
|
●単純なルールを作成してみる |
一例として、telnetアクセスでのルールを作成してみよう。下記のルールはtelnetで「/etc/shadow」が含まれるものはアラートを出力するルールだ。しかし実用性はないため、テスト用と考えていただきたい。
ルールの記述は、テスト用のルールセットを新規(ここではtest.rurles)に作成するか、すでにルールセットにあるローカル用のルールセット「local.rules」などに記述する。ルールを記述したらSnortを再起動し、動作を確認すればよい。なお、新規のルールセットを作成した場合には、snort.confでテスト用ルールセットを読み込むように指定しておく必要がある。第2回を参考にして設定しよう。
# cd /etc/snort # vi test.rules ←snort.confで新規に作成したルールセットを読み込む設定をしておく alert tcp any any -> 192.168.1.5 23 (msg:"telnet test"; flags:A+; content:"/etc/shadow"; nocase;) |
記述したら、snortを再起動し、telnet端末で「cat /etc/shadow」とでも入力すれば、アラートが出力されるだろう。
2/5 |