Suricata(on T-Pot)が新しい攻撃に対応できていなかった問題の対処
ハニーポットシステムのT-Potには、通信を監視するIDS/IPSであるSuricataが導入されています。
SuricataはSnortなどと同様で、あらかじめ定義されたシグネチャを用い、その通信がどのような通信かを調べています。
すなわち新しい攻撃を検知するためには、それに対応した新しいシグネチャを用意する必要があります。
シグネチャのアップデート方法など調べたところ、どうやら設定の誤りがあり、最新のシグネチャが適用できていないことがわかりました。
今回は調査過程と設定変更方法について書いていきたいと思います。(設定変更部分だけ見たい方は、設定変更する節まで読み飛ばしてください。)
調査
まずはSuricataがどのようにシグネチャ(ルール)をアップデートしているのか、またそもそもアップデートは行われているのかを確認しました。
SuricataのDockerファイルを確認すると、dist/update.shを実行しているのがわかります。
update.shを確認します。wgetコマンドでルールを持ってきて、所定の場所に配置させています。
持ってこようとしているルールファイルを確認してみます。wgetのダウンロード元にアクセスしてみると、以下のようにルールファイルが配置されており、なおかつ最近の日付で更新されていました。
試しにダウンロードし、中にあるtor.rulesを開いてみたところ、つい最近アップデートされたことを示すコメントが書かれています。
T-Potのほうに戻り、ルールが正しくダウンロード・反映されているか確認してみます。
確認するため、SuricataのDockerコンテナ内に入ります。入ったあと、tor.rulesを見てみたところ、最新のものではなく、正しく更新されていないことがわかりました。またCVE-2018-~のルールも無いことが確認できます。
update.shを再度確認します。ルールファイルをダウンロードする前に/tmpに移動し、いったんここに保存していましたので、/tmpを見てみます。
お分かりでしょうか・・・
コンテナイメージ作成のタイミングでルールファイルがすでにおいてあり、そのうえでwgetをするため、wgetが気を利かせ別名で保存してくれています。その結果、ダウンロードしてきた新しいルールは適用されず、もともとイメージ化されていた古いルールが適用されてしまう、という結末でした。
設定変更
wgetで別名保存されるのを回避するため、上書きするようオプションを追加します。
具体的には、update.shファイルのwgetコマンドで、URLの前に、「-O emerging.rules.tar.gz」を追加します。これで同じファイルがあっても上書き保存されます。
T-Potを停止させ、Docker Composeの設定ファイルを編集します。(設定ファイルは適宜バックアップしてください。)
Suricataの箇所で、最終行に1行追加します。Volume機能で、コンテナ内から直接ホスト上にあるupdate.shを参照するように設定します。(最初はコンテナイメージを直接編集していたのですが、どうも毎日行われているDocker Composeで元の設定になってしまうようだったので、この方法をとってます。)
続いて、update.shのパーミッションを変更します。直接参照にしたため、実行権限が必要になるようです。rootユーザのみ実行できる権限を付与します。その後、T-Potを起動させます。
動作確認
ルールが適用されているか確認します。Suricataコンテナに入り、再度ルールを確認してみます。
Updateの日付が更新されており、またCVE-2018~のルールも追加され、正常にアップデートされていることが確認できました。
最後に
今回は簡単ですが、T-Pot上のSuricataのチューニングについてやってみました。
ルール上は新しいものも検知できるようになったので、今後の検知についてみていきたいと思っています。