5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

無料でハニーポットを運用してみた〜構築編〜

5
Last updated at Posted at 2025-12-14

こんにちは、 @satsuki2200 です。
大学の授業でアドカレをやるというので、何かいいネタがないかと考えているうちに、無料でハニーポットを運用してみたくなったので、実験的にやってみようと思います。

なお、今回は学生の権利を利用して、基本無料で運用します。

本記事はハニーポットの構築のみを扱います。ハニーポット運用後の結果は別記事にて公開予定です。

本記事の内容は学習・検証目的で提供するものです。
本記事を参考にして発生したいかなる損害についても、筆者は一切の責任を負いません。
必ず自己責任のもと、実施してください。

やりたいこと

  • 無料でクラウド上にハニーポットを設置、運用してみたい
  • 無料の範囲内で何日間運用できるか実験したい
  • 運用結果を記事に載せたい

準備物

  • 18歳以上かつ学生である権利
  • 教育機関のメールアドレス

出費を厭わない方は、上記準備物は必要ありません。

今回使用する環境

今回はデプロイ先としてMicrosoft Azureを利用します。Azure for Studentsの無料利用枠$100相当を利用するためです。

そもそもハニーポットってなに?

記事の本題に入る前にハニーポットについておさらいしておきます。
ハニーポットは知っている、おさらいする必要はないという人はAzure無料利用枠を手にいれるへスキップしてください。

ハニーポットとは、あえて攻撃させて侵入方法や攻撃手法を分析するためのシステムのことをいいます。
はちみつを撒いて虫をおびき寄せるように、攻撃者をおびき寄せるためのいわば「おとり」として設置されることから、ハニーポットと呼ばれているそうです。

Azure無料利用枠を手にいれる

まずはデプロイ前にAzureの無料利用枠を手に入れましょう。
Microsoft Azure の学生無料利用枠申し込みページにアクセスします。

遷移先のAzureのページはこんな感じです。

Screenshot 2025-11-27 at 23.39.15.png

無料で始めるをクリックしてMicrosoftアカウントにサインインしましょう。

私の通っている大学の場合、大学のメールアドレスを紐付けたGitHubアカウントでログインしようとすると、大学が配布しているMicrosoft Office用の別のアドレスでログインするよう求められました。
他大学の場合はわかりかねますが、大学によっては上記のような事象が起こりうるかもしれません。

サインイン後、名前や所属している教育機関の情報を入力して教育機関情報のチェックをします。チェックが終わると、名前や通知用メールアドレス、電話番号などの情報を入力してサインアップを完了しましょう。

サインアップが完了してダッシュボードに利用可能なクレジットが表示されていたら無料利用枠ゲットです!
Screenshot 2025-11-28 at 0.03.24.png

下準備

この後VMを作成する際に[高速ネットワークを有効にする]という項目を選びます。ただし、この項目はあらかじめ設定を行っておく必要があるので、VM作成前に行っておきます。

Azure Portalの一番上にある検索ボックスで"サブスクリプション"と検索して、検索結果に出てきた[サブスクリプション]、[Azure for Students]の順に選択してください。

image.png

サブスクリプションの概要ページに移ったら、左側のパネルから[設定]→[リソースプロバイダー]を選び、リソースプロバイダーページ内の検索ボックスに"Microsoft.Network"と入力して出てきた[Microsoft.Network]を選択して登録しましょう。

image.png

VM作成前に必要な設定はこれで終わりですが、もしAzureアプリを使用予定かつAzureアプリで通知を受け取る場合は[microsoft.insights]もオンにしてください。

microsoft.insightsは任意です。設定しなくてもハニーポットは構築できます。

Azureのリソース作成

Azure無料枠を手に入れたので、デプロイに向けてハニーポットの準備をしていきます。

まずはAzureでリソースを作成・起動します。
今回使用するAzureリソースの詳細は以下です。

  • リージョン
    • Japan East
  • VM
    • Standard D4s_v3
  • OS
    • Ubuntu Server 24.04 LTS
  • SSD
    • Standard SSD 64GB
  • IP
    • Standard SKU

筆者はこれまでAzureを触ったことがなかったので、VMの選定はCopilotやChatGPTに頼っています。もしかしたらもっといい構成があるかもしれません。
リージョンについては、日本国内でT-potを運用してみたいという筆者のエゴでJapan Eastにしました。もうちょっと安いリージョンにしてもいいかもしれませんが、設置している国によって結果が異なる可能性を考慮する必要があるかもしれません。


ではVMを作成していきます。左上のハンバーガーメニューを開いて[リソースの作成]→[仮想マシン]の順にクリックしてください。

次に作成するVMの詳細を入力していきます。VMの設定はこんな感じになりました。(項目が多いのでトグルにしまってあります)

基本
  • サブスクリプション
    • Azure for Students
  • リソース グループ
    • (新規) t-pot
  • 仮想マシン名
    • tpot
  • リージョン
    • (Asia Pacific) Japan East
  • 可用性オプション
    • インフラストラクチャ冗長は必要ありません
  • セキュリティの種類
    • Standard
  • イメージ
    • Ubuntu Server 24.04 LTS - x64 Gen2
  • VMアーキテクチャ
    • x64
  • サイズ
    • Standard_D2s_v3 - 2 vcpu 数、8GiB のメモリ ($94.17/月)
  • 認証の種類
    • SSH公開キー
  • ユーザー名
    • tpotadmin
  • SSH公開キーのソース
    • 新しいキーの組の生成
  • SSHキーの種類
    • Ed25519 SSH 形式
  • キーの組名
    • tpot_key
  • パブリック受信ポート
    • 選択したポートを許可する
  • 受信ポートを選択
    • SSH (22)

Screenshot 2025-11-29 at 23.58.19.png

Screenshot 2025-11-30 at 0.02.53.png

ディスク
  • OSディスクサイズ
    • 64GiB(E6)
  • OSディスクの種類
    • Standard SSH (ローカル冗長ストレージ)
  • VMと共に削除
    • チェックあり
  • キーの管理
    • プラットフォームマネージドキー

Screenshot 2025-11-30 at 22.37.59.png

ネットワーク
  • 仮想ネットワーク
    • (新規) vnet-japaneast (tpot)
  • サブネット
    • (新規) snet-japaneast-1
  • パブリックIP
    • (新規) tpot-ip
  • NICネットワークセキュリティグループ
    • Basic
  • パブリック受信ポート
    • 選択したポートを許可する
  • 受信ポートを選択
    • SSH (22)
  • VMが削除されたときにパブリックIPとNICを削除する
    • チェックあり
  • 高速ネットワークを有効にする
    • チェックあり
    • Microsoft.Networkをregisterdにしておかないとオンにできない
  • 負荷分散のオプション
    • なし

Screenshot 2025-11-30 at 22.57.17.png

管理
  • 無料のBasicプランを有効にする
    • チェックあり
  • パッチオーケストレーションオプション
    • イメージの規定値

Screenshot 2025-11-30 at 23.00.45.png

監視 何も選択せず、追加等も行わずにスルーしました

Screenshot 2025-11-30 at 23.02.24.png

詳細 何も選択せず、追加等も行わずにスルーしました
タグ プロジェクト名のみ入れました
  • 名前
    • project
    • tpot

Screenshot 2025-11-30 at 23.06.50.png

確認および作成

スクショを載せておきます。

Screenshot 2025-11-30 at 23.08.53.png

Screenshot 2025-11-30 at 23.08.59.png

Screenshot 2025-11-30 at 23.09.04.png

VMの構成が設定できたら作成してしまいましょう。作成後、必ずSSH用の鍵ファイルをダウンロードしてください。ダウンロードした鍵ファイルはchmod 600 <ファイルパス>で権限の変更を行ってください。また、~/.sshなどに置いておくと良いかと思います。

Azure側のポート設定をする

ハニーポットをデプロイする前に、ハニーポットで使用するポートの解放を行っておきます。AzureはNetwork Security Group(NSG)という機構でポートの制限を管理しているので、NSGのルールセットを追加していきます。
必要ポートは以下になります。( T-PotのGitHubリポジトリより抜粋 )

TCP
21, 22, 23, 25, 42, 80, 102, 110, 135, 143, 389, 443, 445, 502, 631, 993, 995, 1025, 1080, 1433, 1521, 1723, 1883, 2404, 2575, 3000, 3306, 3389, 5060, 5432, 5555, 5900, 6379, 6667, 8080, 8081, 8090, 8443, 9100, 9200, 10001, 11112, 11211, 25565, 44818, 47808, 50100, 64294, 64295, 64297
UDP
19, 53, 69, 123, 161, 623, 1900, 5000, 5060

まずはAzure Portal一番上の検索ボックスで"NSG"と入力して、検索結果に出てきた[ネットワークセキュリティグループ]→[tpot-nsg]をクリックします。tpot-nsgの概要ページが開けたら、[設定]→[受信セキュリティ規則]からルールを追加します。
ルールはTCPとUDPそれぞれで作成してください。宛先ポートには、上記の値をコピペすればOKです。プロトコルの箇所をAnyからTCPもしくはUDPに変更してください。必要事項を入力したら、必ず[追加]を押してください。


本当は上記のポートのみを解放するだけでもいいのかもしれませんが、もし上記以外からの攻撃が来た場合を想定して、今回は全てのポートを解放してみようと思います。セキュリティの観点から、全てのポートを解放する方法については本記事では扱いません。

全てのポートを解放することは危険が伴います。個人の判断で実施してください。

T-Potをデプロイする

VMのデプロイが完了したらハニーポットをデプロイしていきます。

ハニーポットはさまざまな種類のものがOSSなどで公開されているのですが、今回はT-Potというハニーポットを使用します。
T-Potは20以上のハニーポットやElasticなどの分析ツールが一つにまとまった便利なツールです。ハニーポットで調べたら上位に出てきたことと、どのような種類の攻撃が届いたのかをWeb上でリアルタイムに観測することができること、過去に参加したイベント第4回 セキュリティ若手の会でT-Potについて聞いたこともあったので採用しました。


まずはVMにsshで入りましょう。

 ssh -i tpot_key.pem tpotadmin@<your_public_ip>

sshできたら、T-Potインストール前に一応実行しておきます。

sudo apt update && sudo apt upgrade -y
sudo reboot # カーネルアップグレードのため
ssh -i tpot_key.pem tpotadmin@<your_public_ip>

サーバーなのでsshd_configもいじっておきたいところですが、sshd_configの設定は長くなりそうなので割愛します。ご自身で調べてやってみてください。T-Potインストール完了後にSSHのポートが変わるので、Port 22はコメントアウトしておくと良いと思います。

早速T-Potをインストールします。T-PotのREADME.mdに倣って、ワンライナーでいきます。

env bash -c "$(curl -sL https://github.com/telekom-security/tpotce/raw/master/install.sh)"
 _____     ____       _      ___           _        _ _
|_   _|   |  _ \ ___ | |_   |_ _|_ __  ___| |_ __ _| | | ___ _ __
  | |_____| |_) / _ \| __|   | || '_ \/ __| __/ _` | | |/ _ \ '__|
  | |_____|  __/ (_) | |_    | || | | \__ \ || (_| | | |  __/ |
  |_|     |_|   \___/ \__|  |___|_| |_|___/\__\__,_|_|_|\___|_|


### This script will now install T-Pot and all of its dependencies.

### Install? (y/n) 

全部インストールしていいか聞かれてますね。インストールするのでyで回答します。すると大量のインストールが始まります。少し待つと、以下の質問が来ました。

### Choose your T-Pot type:
### (H)ive   - T-Pot Standard / HIVE installation.
###            Includes also everything you need for a distributed setup with sensors.
### (S)ensor - T-Pot Sensor installation.
###            Optimized for a distributed installation, without WebUI, Elasticsearch and Kibana.
### (L)LM    - T-Pot LLM installation.
###            Uses LLM based honeypots Beelzebub & Galah.
###            Requires Ollama (recommended) or ChatGPT subscription.
### M(i)ni   - T-Pot Mini installation.
###            Run 30+ honeypots with just a couple of honeypot daemons.
### (M)obile - T-Pot Mobile installation.
###            Includes everything to run T-Pot Mobile (available separately).
### (T)arpit - T-Pot Tarpit installation.
###            Feed data endlessly to attackers, bots and scanners.
###            Also runs a Denial of Service Honeypot (ddospot).

### Install Type? (h/s/l/i/m/t)

どうやらT-Potには色々な種類があるみたいですが、今回はHiveでやってみます。質問にはhで回答します。

### Install Type? (h/s/l/i/m/t) h

### Installing T-Pot Standard / HIVE.

### T-Pot User Configuration ...

### Enter your web user name:

今度はweb userの名前を入力しないといけないみたいです。読者の皆様におかれましては、お好きな名前を命名ください。私はいい名前が思いつかなかったのでCopilotとChatGPTに案を出してもらい、どちらを採用するかGeminiに決めてもらった結果、honeywardenになりました。

次にweb user passwordも聞かれますので、パスワードを決めて入力してください。パスワード入力後、Dockerイメージのインストールが始まります。

### Please review for possible honeypot port conflicts.
### While SSH is taken care of, other services such as
### SMTP, HTTP, etc. might prevent T-Pot from starting.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          7055       1020/sshd: /usr/sbi
tcp        0      0 0.0.0.0:64295           0.0.0.0:*               LISTEN      0          31135      5881/sshd: /usr/sbi
tcp6       0      0 :::22                   :::*                    LISTEN      0          7057       1020/sshd: /usr/sbi
tcp6       0      0 :::64295                :::*                    LISTEN      0          31137      5881/sshd: /usr/sbi
udp        0      0 172.16.0.4:68           0.0.0.0:*                           998        7949       716/systemd-network
udp        0      0 127.0.0.1:323           0.0.0.0:*                           0          9367       846/chronyd
udp6       0      0 ::1:323                 :::*                                0          9368       846/chronyd

### Done. Please reboot and re-connect via SSH on tcp/64295.

すべてのインストールが完了すると上記のようなメッセージが出力されました。再起動してもう一回SSH接続してと書いてあるので、言われた通り再起動してSSH接続しましょう。

sudo reboot
ssh -i tpot_key.pem -p 64295 tpotadmin@<your_public_ip>

SSH接続に成功したら、試しにKibanaの画面を出してみます。ブラウザでhttps://<your_public_ip>:64297/ にアクセスします。アクセスする際にログインを求められるので、T-Potインストール時に入力したユーザー名/パスワードを入力します。

Screenshot 2025-12-01 at 2.14.52.png

Kibanaを選ぶとこんな感じです。すでに5件のAttackが来ているみたいですね:eyes:
Screenshot 2025-12-01 at 3.05.25.png


これでT-Potの構築は終了です!ここからは運用するフェーズになりますが、今回はアドカレ用に構築したので、12/1からAzure for Studentsの無料利用枠が尽きるまで運用します。

おわりに

本記事ではハニーポットの構築を扱いました。運用結果は後日別の記事で公開予定ですので、楽しみにお待ちください!

もし間違えているところがあれば、チャットで教えて頂けると嬉しいです。
読んでいただきありがとうございました。

参考文献

https://group.gmo/security/cybersecurity/penetration-testing/blog/honeypot/
https://azure.microsoft.com/ja-jp/free/students
https://github.com/telekom-security/tpotce
https://knowledge.sakura.ad.jp/35289
https://tech-lab.sios.jp/archives/26325

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?