SSHのHoneypotであるCowrieを CentOS6で動かしてログを確認するところまでやってみた。

ハニーポットは実際にサイバー攻撃を受けたり悪性サイトにアクセスして攻撃情報を収集する。

元々は前者を指す言葉だけど、最近は巡回型とかクライアント型とか呼ばれるタイプもあるみたい。とりあえず従来のハニーポットを試した。

読んだりしたこと

IPA::セキュリティインシデントの積極的な検知:ハニーポットの利活用 を参考にする。他に下の様ないくつかの記事を見て回った。

Dionaea, Conpot, Cowrie(Kippo), Glastopfあたりの名前がよく出てくる。 またhoneepi, T-Potなんていうハニーポットの集約環境もあるみたい。 (honeepiは既に古めらしい)

CentOS 6で Cowrieを動かすまで

インストール

公式資料を参考にした。公式ではUbuntuを想定して説明されている。 CentOS6はpython27がデフォルトではなかったので素直に進めると途中でエラーログの嵐に見舞われる。

$ sudo yum install centos-release-scl-rh
$ sudo yum install python27
$ scl enable python27 bash

また依存pkgも色々と足りてないので追加する。存在しないとtwistd を入れるときに途中でビルド失敗する。 yum で入れられるものはyum 経由そうでないものはビルドする。

公式資料内でapt でインストールしてるパッケージの対応物とエラーログを頼りにインストールを進める。 また大半はGCCアップグレードメモ(Qiita内記事)に含まれていた。

稼働

やはり公式資料を参考に稼働させた。

iptables設定

Cowrieユーザー権限でしか動かないので特権ポートを使えないためREDIRECTする必要がある。 ポートは全部で3つ用いる。

ポート番号 用途
122345 ホスト管理用
22 ハニーポット入り口
2222 実際のcowrie利用

下の様なスクリプトを作成し、後述する様にiptablesに反映し再起動させる。 実際にはホスト管理用ポートにブルートフォース対策など入れる方が良い。

IPTABLES=iptables
[ "$1" == "-n" ] && IPTABLES="echo ${IPTABLES}"

$IPTABLES -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 23
$IPTABLES -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222

$IPTABLES -P INPUT   ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22222 -j ACCEPT
$IPTABLES -A INPUT -p tcp --dport 22222 -j ACCEPT
$IPTABLES -A INPUT -p tcp --syn --dport 122345 -j SSH
$IPTABLES -A INPUT -f -j LOG --log-level $LOG_LEVEL --log-prefix "$LOG_PROGNAME[fragment] "
$IPTABLES -A INPUT -f -j DROP

今回、下に気付かされたのだけどiptablesのチェーンの繋がりをみると当たり前だった。 ファイアウォールだけど、CentOS 7ではfirewalld ,Ubuntuではufw なので詳細は必要に応じて調べるで済ませたい。

  • REDIRECT で向先portを変更してもデバイス名は変更されない
  • nat テーブルのPREROUTING の後でプロセスに入る前にfilter テーブルのINPUT を通過する
sudo bash setup_iptables
sudd service iptables save
sudd service iptables restart

ログを見てみる

公式資料に従うと~cowrie/cowrie/ 配下に設定フィルやlog ディレクトリなどが来る。 cowrie/log 配下に色々と配置される。

# ~cowrie/cowrie/log/cowrie.json # access log
$ sudo tail -n 1 ~cowrie/cowrie/log/cowrie.json
{"eventid": "cowrie.session.closed", "timestamp": "2016-09-18T02:08:07.00000000Z", "message": "Connection lost after 1 seconds", "system": "HoneyPotSSHTransport,17,${IP}", "isError": 0, "src_ip": "${SRC_IP}", "duration": 1.0753531455993652, "session": "b896482a", "sensor": "${hostname}"}
$ sudo tail -n 1 ~cowrie/cowrie/log/cowrie.log_level

# log/tty 配下の攻撃者の行動記録は bin/playlog で確認できる
$ sudo -u cowrie ./bin/playlog ./log/tty/20160918-212738-d85f774f-0i.log

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
// ...

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

root@svr04:~# #(入力タイミングなども再現してくれる)
$ # 戻ってくる