ハニーポットをパワーアップさせた。
AWSのLightSailが少し安くなっていた。
RAM 1Gでも$5なのでとてもおすすめ。
前回のハニーポットはRAM 500Mで制限がとても多かったのでいっそのこと最初から作り直した。
作るのに4日くらいかかった。その代わりSystemdやrsyslogとか若干わかるようになった。うれしい。
便宜上、suricataとufwもハニポってことにしてるけど許してくださいな。
構成
AWSのVPSに各ハニーポット等を設置して、それらをS3にいったんアップロード。
自宅のPCにインストールしたELKにてログを収集して分析する。
前回と比べてufwとdionaeaが追加された。
使用したもの
Suricata
IDSとして動作。
アクセスを一般的なシグネチャにマッチさせることでどのような攻撃が来たかをパッとで判断できる。Dionaea
様々なポートに対するアクセスをキャプチャできるハニーポット。BlackHole機能に期待。WOWHoneypot
HTTPに特化したハニーポット。
作り方
OS: Ubuntu 18.04
方針として各ログをLogrotateのPostscriptでs3にアップロードします。
詳細は各情報元をご参照ください。
「動けばいい」で作っているのでこの記事によって引き起こされた問題等の責任は負えません。
rootで作業したのでsudoとか使ったとか忘れました。
もの | ばしょ |
---|---|
Suricata | /var/log/suricata/eve.json |
Dionaea | /opt/dionaea/var/lib/dionaea/dionaea.json |
Cowrie | /var/log/cowrie/cowrie.json |
ufw | /var/log/ufw.log |
WOWhoneypot | /home/wow/wowhoneypot/log/access_log |
ハニポ
Suricata
以下のコマンドを実行
2. Installation — Suricata 4.1.0-dev documentation
sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata
また、ルールの管理は suricata-update が便利だったのでこちらを使います。
Quick Start — suricata-update 1.1.0dev0 documentation
pip install --upgrade suricata-update sudo suricata-update
これらのコマンドを使うことでルールはいろいろ設定されています。
アラート以外にもHTTPやssh等の監査ログ、統計ログが出てしまっているので /etc/suricata/suricata.yml
で調整します。
Dionaea
最近アップデートされたようですね。非常にインストールが楽になったような気がします。
Ubuntu 18.04でも以下のコマンドで動きました。
Installation — dionaea 0.8.0 documentation
git clone https://github.com/DinoTools/dionaea.git /opt/dionaea cd /opt/dionaea sudo apt-get install \ build-essential \ cmake \ check \ cython3 \ libcurl4-openssl-dev \ libemu-dev \ libev-dev \ libglib2.0-dev \ libloudmouth1-dev \ libnetfilter-queue-dev \ libnl-3-dev \ libpcap-dev \ libssl-dev \ libtool \ libudns-dev \ python3 \ python3-dev \ python3-bson \ python3-yaml mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/dionaea .. make sudo make install
http serviceについては必要ないので設定から削除して、ihandler-enableにlog_jsonを移動させます。
Cowrie
これをなぞるだけ。
cowrie/INSTALL.md at master · cowrie/cowrie · GitHub
ログ出力先の設定を変えました。
ufw
ufwはlogging levelをhighに設定。 ufwのログはrsyslogにて制御しているため適宜設定を変えます。
WOWHoneypot
こちらのインストール方法を見ながらインストールします。 github.com
Logrotate
各ハニポのログは1時間おきにs3にアップロードしたいと考えました。
その時に有効なのがLogrotateです。
postscript
というものを使うと任意のコマンドを実行することができるためs3にアップロードするように調整します。
サービス登録
OSをシャットダウンしたとしても自動で起動するようにサービスとして登録を行います。
Serviceセクションの Type
をうまく使うとハニポの起動コマンドでもサービスとして登録できました。
自宅ELK分析環境
OS: CentOS 7.X
今回はELKを分析環境として利用します。メモリは8GBぐらいあれば足りるでしょう。
ElasticSearch、Logstash、Kibanaを以下のURLからダウンロードします。
それぞれ yum localinstall
等でインストールしましょう。
kibana
kibanaはlocalhostのみで待ち受けているため以下を変えます。
server.host: "0.0.0.0"
http:// IPアドレス:5601でアクセスができるはずです。
Logstash
ハニポのログをElasticSearchにぶっこむ設定を行います。本来であれば型をしてしたテンプレートファイルを作成すると思いますが、今回は面倒なので作成しません。
サンプルとしてufwの取り込み設定のコンフィグをあげます。
inputセクションでどこからデータを持ってくるのかを指定して、filterセクションでデータの加工を行います。最後にoutputセクションでどこへデータを送るのかを指定します。
iptables.patはこちらからいただきました。
iptables Grok Pattern · GitHub
特にfilterセクションではとても便利で、UAの解析やgeoipの取得やリバースDNSの取得など様々な加工を行うことができます。
非常にたくさんのプラグインがあるのでぜひ活用してください。
configのアップロードは別の記事にしようと思います。
それぞれハニポのログを別のパイプラインとして登録をすると以下のようにいい感じになります。
ここまでくるとs3を経由してハニポのログが自宅PCのElasticSearchに入りました。 kibanaから確認してみましょう。
kibanaでの設定
まずはインデックスを設定する必要があります。以下の順にクリックします。
Management → index Patterns → Create Index Pattern
画像のようにハニポのログが種類別、日付別のインデックスになっているのでそれぞれインデクスを作成します。
ログを見てみよう
honeypot-suricata-*のログを見てみます。
いい感じにカラムを指定するとこんな感じになります。SuricataはIDSなのでシグネチャ名とペイロードまで確認することができますね。
honeypot-*で特定のIPアドレスを指定して検索してみましょう。
このインデックスであればハニーポットの種別を問わない検索ができます。
特定のIPアドレスがさまざまなログを残してくれているようです。ありがとうございます。
さいごに
T-POTという素晴らしいハニーポット分析環境がありますが、自分で一から作ってみると環境に愛着がわいておすすめですよ。
TODO
- configの需要が有りそうならconfigのブログをかく
- 気が向いたときにログの記事をかく
- ログ分析のやり方の記事をかく