
CVE-2021-44228 向け Docker化されたハニーポット.
拡張されたDocker化ハニーポット CVE-2021-44228 向けで、包括的なセキュリティ機能、監視、アラート機能を備えています。
# SSL証明書の生成
./generate-ssl.sh
# docker-composeで起動
docker-compose up -d
# ログの監視
./monitor.py --tail
# fail2ban設定のためにrootで実行
sudo ./deploy.sh
# x86_64
docker run -d -p 8080:8080 \
-e HONEYPOT_NAME="log4shell-honeypot" \
-e LOG_FORMAT="json" \
-e RATE_LIMIT_REQUESTS="100" \
--name="log4shell-honeypot" \
msanford/log4shell-honeypot:latest
# ARM(例:Raspberry Pi)
docker run -d -p 8080:8080 \
-e HONEYPOT_NAME="log4shell-honeypot" \
--name="log4shell-honeypot" \
msanford/log4shell-honeypot:arm-latest
# 設定ファイルから読み込み
docker-compose --env-file config.env up -d
このハニーポットは以下のLog4Shellパターンを検出します。
${jndi: - JNDIルックアップ(主要な攻撃ベクトル)${ldap: - LDAPディレクトリルックアップ${rmi: - RMIリモートメソッド呼び出し${dns: - DNSルックアップ${env: - 環境変数へのアクセス${sys: - システムプロパティへのアクセス${java: - Javaランタイム情報# 整形出力でのログテール表示
./monitor.py --tail
# 過去24時間の分析
./monitor.py --hours 24
# 過去1時間の分析
./monitor.py --hours 1
curl http://localhost/health
curl http://localhost/metrics
sudo fail2ban-client status log4shell-honeypot
拡張JSONログ形式には以下が含まれます。
{
"timestamp": "2024-01-15T10:30:45Z",
"honeypot": "log4shell-honeypot",
"event_type": "log4shell_attempt",
"source_ip": "192.168.1.100",
"real_ip": "10.0.0.5",
"method": "POST",
"url": "http://honeypot.local/",
"user_agent": "Mozilla/5.0...",
"detected_patterns": ["${jndi:", "${env:"],
"detection_source": "form_field:username",
"headers": {...},
"form_data": {...},
"query_params": {...},
"content_length": 45
}
構造化JSONログは以下に簡単に取り込めます。
以下に基づいてアラートを設定。
# コンテナのビルド
docker build -t log4shell-honeypot:latest .
# 特定のタグでビルド
docker build -t log4shell-honeypot:v2.0 .
docker-compose ps
docker-compose logs log4shell-honeypot
curl -f http://localhost/health || echo "ヘルスチェックに失敗しました"
sudo fail2ban-client status
sudo tail -f /var/log/fail2ban.log
# 最近の攻撃を確認
./monitor.py --hours 1
# 生ログの表示
tail -f /var/log/log4shell-honeypot.log
RATE_LIMIT_REQUESTS を増やすMAX_LOG_SIZE と LOG_BACKUP_COUNT を調整# docker-compose.yml内
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
cpus: '0.1'
memory: 128M
これは BinaryDefense/log4shell-honeypot-flask を拡張したフォークであり、セキュリティと運用面で大幅な改良が加えられています。
| 変数 | デフォルト | 説明 |
|---|
HONEYPOT_NAME | log4shell-honeypot | ハニーポットの名前識別子 |
LOG_LEVEL | INFO | ログレベル(DEBUG、INFO、WARNING、ERROR、CRITICAL) |
LOG_FORMAT | json | ログ形式(json または text) |
MAX_LOG_SIZE | 10485760 | 最大ログファイルサイズ(バイト、10MB) |
LOG_BACKUP_COUNT | 5 | 保持するバックアップログファイルの数 |
RATE_LIMIT_REQUESTS | 100 | ウィンドウあたりのIPごとの最大リクエスト数 |
RATE_LIMIT_WINDOW | 3600 | レート制限ウィンドウ(秒、1時間) |