Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

Repository files navigation

HTTPハニーポット (honeypot1.py)

概要

本プログラムは、HTTPサーバーを利用したハニーポットです。Webサーバーとして動作し、認証情報(ID/パスワード)を把握する試みについて、その内容を記録することを目的とします。

  • 指定したログインページ(例:/admin/login.php)を模倣
  • アクセスや送信された認証情報をログhoneypot.logに記録
  • 簡易 HTML フォームを返し、常に「Login failed」を表示

ファイル構成

(任意のフォルダ)/
├── honeypot1.py         # メインプログラム
├── config.yaml          # 設定ファイル
├── setup.sh             # サーバー初期設定スクリプト
├── deploy.sh            # ファイルアップロードスクリプト
├── start.sh             # 複数ポート起動スクリプト
├── honeypot.log         # 実行後に生成されるログファイル
└── readme.md            # このドキュメント

必要環境

  • Python 3.7 以上
  • pip

セットアップ・実行手順

  1. 仮想環境の作成 (任意):
    python3 -m venv venv
    source venv/bin/activate
  2. 依存ライブラリのインストール
    pip install pyyaml
  3. ハニーポッドの起動
    これらのファイルがあるディレクトリに移動してから、以下のコマンドを実行します。
    python3 honeypot1.py
  4. ターミナルで以下のようなメッセージが表示されれば成功です。
    *** START HONEYPOT SERVER ***

設定ファイル (config.yaml)

address: "0.0.0.0"            # 待ち受けアドレス(すべてのインターフェース)
port: 8080                   # 待ち受けポート番号

log_response_time: true      # レスポンス時間をログに記録するか
resolve_hostname: true       # ホスト名の逆引きを行うか

login_path_fixed: false      # ログインページパスを固定するか
login_path: "/admin/login.php" #固定している場合のログインページパス
submit_path_fixed: false     # 送信先パスを固定するか
submit_path: "/admin/submit_login.php" #ログインフォーム情報を送信する先のパス

logfile: "honeypot.log"      # ログファイルのパス
  • login_path_fixed: true の場合、login_path のみフォームを返します
  • login_path_fixed: false の場合、全ての GET リクエストでフォームを返します
  • submit_path_fixed: true の場合、submit_path のみPOSTデータを処理します
  • log_response_time: true の場合、レスポンス時間がログに記録されます
  • resolve_hostname: false にすると、ホスト名逆引きを無効化できます(高負荷時に有効)

動作確認方法について

  1. 上記の手順でハニーポッドを起動
  2. ブラウザにて http://<IPアドレス>:8080/admin/login.php にアクセス(IPアドレスは実行環境に応じて変更)
    1. config.yaml で login_path_fixed が false の場合は、任意のパスにアクセスしてもフォームが表示される
  3. ブラウザにログインフォームが表示される
  4. ターミナルにこのアクセスを示す以下のような緑色のログが表示される。また、ログファイル honeypot.log にも同様のログが記録される。
    2025-08-07 12:34:56.123 (+0900) 127.0.0.1:53421 GET /admin/login.php
    
  5. ブラウザ上でログインフォームに任意のユーザー名とパスワードを入力してログインボタンを押下
  6. ターミナルにこのアクセスを示す以下のような黄色と赤色のログが表示される。また、ログファイル honeypot.log にも同様のログが記録される。
    2025-08-07 12:35:56.456 (+0900) 127.0.0.1:49346 POST /admin/login.php
    2025-08-07 12:35:56.456 (+0900) 127.0.0.1:49346 CREDENTIALS username(username)= 'root' password(password)= 'password'
    
  7. ブラウザには常に「Login failed. Please try again.」と表示される
  • 返すべき内容がないパスへのアクセスに対しては、常に404 Not Foundを返します。

主要機能

柔軟な認証情報取得

ハニーポットは様々なフィールド名に対応し、以下のような認証情報を自動的に検出・記録します:

  • ユーザー名フィールド: username, user, usr, login, log, uid, id, account, email, mail
  • パスワードフィールド: password, pass, pwd, passwd, secret

追加フィールド記録

認証情報以外の送信データも自動的に記録します:

  • CSRFトークン(csrf, _token, authenticity_token)
  • ログイン状態保持(remember, remember_me, keep_logged)
  • リダイレクト先(redirect, next, return_url)
  • その他すべてのフォームデータ

コマンドライン引数サポート

python3 honeypot1.py -p 9000 -a 127.0.0.1 -l custom.log
  • -p, --port: ポート番号の指定
  • -a, --address: 待ち受けアドレスの指定
  • -l, --logfile: ログファイルパスの指定

AWS Lightsail ハニーポット総合構築・運用手順書

1. 概要

この手順書は、AWS Lightsail上にUbuntuサーバーを新規に作成し、ローカルPC(Mac)から安全に接続するための設定を行い、ハニーポットのプログラムファイルをサーバーに配置し、最後にポートフォワーディングを設定してハニーポットを稼働させ、後片付け(クリーンアップ)を行うまでの全工程を解説します。


2. インスタンスの作成

  1. Lightsailコンソールにアクセスし、「インスタンスの作成」をクリックします。
  2. 以下の通りに設定します。
    • ロケーション: 東京 (ap-northeast-1)など
    • プラットフォーム: Linux/Unix
    • 設計図: OSのみ → Ubuntu 22.04 LTS
    • インスタンスプラン: 最も安価なプラン(例: 月額$3.50)
    • インスタンス名: honeypot-server
  3. 「インスタンスの作成」をクリックし、起動を待ちます。起動後、パブリックIPアドレスを控えておきます。

3. ファイアウォールの設定

  1. 作成したhoneypot-serverインスタンスの管理画面を開き、「ネットワーキング」タブに移動します。
  2. 「ファイアウォール」セクションで、以下の3つのルールが有効になっていることを確認します。(SSHはデフォルトで有効です)
    • SSH (22): あなたのPCからサーバーに接続するために必要です。
    • HTTP (80): 外部からの攻撃を待ち受けるためのポートです。
    • カスタム (8080): ハニーポット本体が動作するポートです。(アプリケーションカスタム、プロトコルTCP、ポート範囲8080で作成)

4. ローカルPCでのSSH接続設定(Macのターミナル)

4.1. SSHキーのダウンロード

  1. Lightsailの「アカウント」ページ → 「SSHキー」タブに移動します。
  2. デフォルトキーの横にある「ダウンロード」アイコンをクリックし、LightsailDefaultKey-ap-northeast-1.pemのようなキーファイル(秘密鍵)をダウンロードします。

4.2. キーの配置と権限設定

  1. ダウンロードしたキーファイルを、安全な.sshディレクトリに移動させます。Macのターミナルで以下を実行します。
    mv ~/Downloads/LightsailDefaultKey-ap-northeast-1.pem ~/.ssh/
  2. キーファイルの権限を、所有者のみが読み取れるように変更します。これは必須のセキュリティ設定です。
    chmod 600 ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem

4.3. SSH configファイルの設定

  1. nanoエディタで設定ファイルを開きます。
    nano ~/.ssh/config
  2. 以下の内容をコピー&ペーストします。[あなたのサーバーのIPアドレス]の部分は、控えておいたパブリックIPアドレスに書き換えてください。
    Host honeypot-server
        HostName [あなたのサーバーのIPアドレス]
        User ubuntu
        IdentityFile ~/.ssh/LightsailDefaultKey-ap-northeast-1.pem
    
  3. Ctrl + X → Y → Enterで保存して閉じます。

4.4. 接続テスト

以下の短いコマンドだけでサーバーに接続できるはずです。

ssh honeypot-server

5. サーバーの初期設定

  1. SSHでサーバーに接続

    ssh honeypot-server
  2. システムの更新と必要パッケージのインストール setup.shを実行します。

    chmod +x setup.sh
    ./setup.sh

    setup.shは、以下のコマンドを実行します。

    sudo apt update && sudo apt upgrade -y
    sudo apt install python3-pip -y
    sudo apt install python3-yaml -y
  3. 作業が終わったら exit でサーバーから切断します。


6. ハニーポットのファイルアップロード

Macのターミナルから scp コマンドでプログラムと設定ファイルをサーバーに転送します。

※ローカルパスはご自身の環境に合わせて修正してください。 ターミナルのカレントディレクトリを、ハニーポットのプログラムファイルがある場所に移動します。

cd /{path}/honeypot1.py
  # プログラムファイルのパスに合わせて変更

その後、deploy.shを実行して、サーバーにファイルをアップロードします。

./deploy.sh (.ssh/config/で設定したサーバーのホスト名)

実行できない場合は、以下のコマンドを直接実行してください。

# 1. Pythonプログラムをアップロード
scp honeypot1.py honeypot-server:~/

# 2. 設定ファイルをアップロード
scp config.yaml honeypot-server:~/

# 3. 起動スクリプトをアップロード
scp start.sh honeypot-server:~/

7. 実行と後片付け

7.1. ポートフォワーディング設定と実行

  1. 再度SSHでサーバーに接続します。
    ssh honeypot-server
  2. ポート設定の確認(任意)
    cat config.yaml  # port: 8080 であることを確認
  3. start.shを実行して、特権ポートをするためのsetcapコマンドの実行を行い、ポートごとに起動します。デフォルトでは80,8080,8443を使用します。
    chmod +x start.sh
    sudo ./start.sh
  4. 手動でポートフォワーディングを使用する場合は、以下の設定を行ってください。

    (例)ポート80へのアクセスを8080へ転送するルールを設定

    sudo sysctl -w net.ipv4.ip_forward=1
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
  5. 手動で起動する場合は以下のコマンドを実行します。

    ハニーポットをバックグラウンドで起動

    nohup python3 honeypot1.py &
  6. exitでサーバーから切断しても、ハニーポットは動き続けます。
  7. 終了する時
    sudo pkill -f honeypot1.py

7.2. 【最重要】クリーンアップ

  1. 実行中のハニーポットを停止
    ps aux | grep python
    kill [プロセスID]
  2. ポートフォワーディング設定の削除
    sudo iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
  3. Lightsailインスタンスの完全削除
    • Lightsailのコンソールでインスタンスのメニュー(︙)から「削除」を選択

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages