俺、ハニーポッターになります その2 - honeytrapを構築してみた -
はじめに
ハニーポッター向けのslackにて,皆様のハニーポットに来た攻撃を見ているうちに,様々なポートに来た攻撃を見れるhoneytrapなるハニーポットに興味を持ちました.大抵これを使っている人はT-POTを使っているのですが,リソース的にT-POTを使うのが厳しいため,単体で構築してみました.
インストールと起動まで
まずはiptablesを編集してパケットを取得できるようにします.
*filter (省略) -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -p tcp --syn -m state --state NEW -j NFQUEUE COMMIT
追加したのはCOMMITの前の行です.これにより,この行より上で処理されていないTCPパケットをNFQUEUEに送ります.NFQUEUEに送ったパケットをhoneytrapが読み取り,レスポンスを返す,ログを残すなどの処理を行うというイメージです(多分). (ここをudpにするとUDPパケットも同様に取得できると考えられますが未検証です.)
構築はdockerでやります.どう作ろうか悩んだんのですが,結局T-POTで使うイメージを使用するのが手っ取り早いということがわかりました.docker-compose.ymlもgithubページのものとほとんど変わらないです.
version: '2.0' services: honeytrap: container_name: honeytrap restart: always network_mode: "host" cap_add: - NET_ADMIN image: "dtagdevsec/honeytrap:1710" volumes: - ./attack:/opt/honeytrap/var/attacks - ./download:/opt/honeytrap/var/downloads - ./log:/opt/honeytrap/var/log
network_mode: "host"
でホストのインターフェースをそのまま使用するようです.これにより,dockerの中からホストにくるパケットを監視できます. また
cap_add: - NET_ADMIN
でネットワーク関連の権限を与えています.
コンテナを定期的に再作成する
仮にpwnをされても被害を最小限に食い止めるために,毎日0時にコンテナを再作成するように設定しておきます.crontabに以下を記述しました.
docker-compose --file /(docker-compose.ymlのパス)/docker-compose.yml down -v && docker-compose --file /(docker-compose.ymlのパス)/docker-compose.yml up -d
まとめ
今回はhoneytrapを構築してみました.とりあえずしばらくはどんなログが取れるかを見てみたいと思います.