サーバのに"何か"が起きたとき、管理者へ教えてくれると同時にそれとなく対処してくれる便利な仕組みについて。
最近わりと有名になってきた感があります。
IDSとIPS
IDS(Intrusion Detection System:不正侵入検知システム)として有名なSnortは使ったことがあるという方も多いのではないでしょうか。
ブタさんが可愛いあいつです。
自分も大好きなあいつですが、今回はさらに可愛いミーアキャットを意味する"Suricata"というIPS(不正侵入検知・防御システム)を導入して使ってみました。
基本的な仕組みとしては、予め「不正である」として定めたルールに則って不正侵入と思われる通信を検知すると同時に攻撃からの防御もしてくれるようにするという、素敵な仕組みです。
試しに導入してみる
どちらも導入するだけなら簡単なので、まずは動かしてみたほうがイメージしやすいですね。
詳しいインストール手順については、公式サイトのDocsに"Quick start guide"や"Installation guides", "Basic Setup"として、環境ごとに丁寧な手順が掲載されているので参考にしてみてください。
注意すべき点として、/etc/suricata/suricata.yamlの設定で誤りがあると、たとえ起動したとしても期待通りの動きをしてくれませんので注意してください。
Suricataの起動は
$ suricata -c <suricata.yaml> -i <対象インタフェース>
で可能です。
$ suricata -c /etc/suricata/suricata.yaml -i eth1
ログファイルは、その種類ごとに/var/log/suricataへ記録されていきます。
あとは、この検知した内容によってどのような動作をするか、設定してやれば自動化が可能です。
が、それはまた次の機会に。
(おまけ)Snorbyのインストール・設定
Suricataもしっかりとログを吐いてくれるのですが、よりグラフィカルに確認するにはSnorbyが便利です。
SuricataとSnorbyの組み合わせについてはこちらのサイトでも紹介されていますので、参考にしてみてください。
ただし、インストール時にrubyのバージョンが古いと引っかかってしまうのでrbenvなどからruby 2.x系を導入しておくとスムーズかと思います。
インストールに成功すると、ブラウザからサーバへアクセスする事で以下のようなログイン画面が表示されます。
初期設定は
ID:snorby@snorby.org
Pass:snorby
ですが、ドメイン名等設定されている場合には
ID:snorby@<ドメイン名>
Pass:snorby
となりますのでご注意ください。