Digital OceanでT-Potを構築してみたお話
皆さんお久しぶりです。 GW中、体調不良により外出不能になった人です。
原因は間違いなく食中毒ですが、 送別会開いてくださった方々には文句言えないので。。。w
さて、今回はDigital Oceanという海外のクラウドサービスを利用して T-Potという統合型ハニーポットを構築した!というお話をしますね。
面倒そうな設定とかあるのかと思ったのですが、 特に問題もなく簡単に管理画面を拝めたので 敷居が高いと感じている人のためになればと思い書いております。
システム構成
まずは公式サイトなどを見ていただきたいのですが、
ある程度の要求スペックがあるため、料金の関係からAWS等の利用は避けることにしました。
最低限の要求スペックは以下のようになります。
4 GB RAM (6-8 GB recommended)
引用元:DTAG Community Honeypot Project
今回構築したDigital Oceanではちょうどいいプランがあったので、そちらを利用します。
4 GB 2 vCPUs 80 GB 4 TB $20/mo
OS
公式Gitにも書かれていますが、OSはUbuntu16.04が必要です。
なので、Digital Oceanでインスタンスを立ち上げる際にUbunutu16.04を選択します。
Digital Oceanでハマったこと
Digital Oceanのセットアップについては割愛しますが、若干個人的にハマったところを書きます。
Step One - Root Login
Ubuntuだけなのかよくわかりませんが、
少なくともUbuntu16.04や14.04はステップ1でroot loginする必要があるとのことです。
構築時にいつものクセが出たので、僕は公開鍵を使った認証になっていました。
もし、公開鍵を登録していない場合はパスワードを聞かれるのですが、
「パスワード認証?なにそれ?」な僕には関係ない話でした。
で、ハマったの何よ?って思うでしょうが、
この公式のチュートリアルを見なければ
最初のログインユーザがrootであることを知り得なかったことです。
rootユーザということを知らなければssh/configも書けませんからね(汗
最初のログインユーザになっている場合もありますからね〜
ちなみに、後からメールボックス確認すると
公式チュートリアルのリンクが丁寧に送られてきてました。
早とちりですねw
ハニーポット用ユーザの作成
こちらのブログでも紹介されているように
T-Pot用のユーザを作成します。
# adduser pooh Adding user `pooh' ... Adding new group `pooh' (1000) ... Adding new user `pooh' (1000) with group `pooh' ...
さすがにおふざけが過ぎますねw
インストール
簡単インストールできるのでautoinstallのスクリプトを使います。
GitHub - dtag-dev-sec/t-pot-autoinstall: Autoinstall T-Pot on Ubuntu 16.04
20180507時点でautoinstallスクリプトでのインストール時にエラーの発生を確認しました。
ここから先の手順には独自で行なった手法が含まれるため、
同一手順を利用する場合は自己責任でお願いします。
$ git clone https://github.com/dtag-dev-sec/t-pot-autoinstall.git Cloning into 't-pot-autoinstall'... remote: Counting objects: 155, done. remote: Total 155 (delta 0), reused 0 (delta 0), pack-reused 155 Receiving objects: 100% (155/155), 53.20 KiB | 0 bytes/s, done. Resolving deltas: 100% (78/78), done. Checking connectivity... done. $ cd t-pot-autoinstall/ $ sudo su
上記の手順を行う前に、t-potを起動するユーザへsudo権限を付与してやる必要がありました。
# usermod -G sudo pooh
これをしておかないと、$ sudo su
を実行した際に怒られます。
# ./install.sh ########################################################## # T-Pot 17.10 install script # # for Ubuntu server 16.04.0x, x64 # ########################################################## Make sure the key-based SSH login for your normal user is working! Which user do you usually work with? This script is invoked by root, but what is your normal username? Enter username: pooh <- ユーザ名を入力します。
公開鍵認証はいいのだが。。。
ハマりポイント2個目です。
公開鍵認証の手順として、以下のような手順を踏むとハマりポイント2個目に突入します。
・Digital Oceanでrootユーザに公開鍵を設定し、セットアップを完了させる
・セットアップ後に公開鍵でroot loginし、前途した手順でユーザ作成を行う
・作成したユーザ用にrootユーザで使っている公開鍵をコピーする
(具体的にはauthorized_keysをコピーする)
僕の場合は以下のようなエラーを吐いたので、poohで鍵ペアを作成し
authorized_keysに追記することとなりました。
Checking prerequisites... ### No SSH key for user 'pooh' found in /home/pooh/.ssh/authorized_keys.\n ### Script will abort! # su pooh $ ssh-keygen -t rsa -b 4096 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
もう一度挑戦してみる
今度はうまくいきました!
########################################################## # # # How do you want to proceed? Enter your choice. # # # # Required: 4GB RAM, 64GB disk # # Recommended: 8GB RAM, 128GB SSD # # # # 1 - T-Pot's STANDARD INSTALLATION # # Standard Honeypots, Suricata & ELK # # # # 2 - T-Pot's HONEYPOTS ONLY # # Honeypots only, w/o Suricata & ELK # # # # 3 - T-Pot's INDUSTRIAL EDITION # # Conpot, eMobility, Suricata & ELK # # # # 4 - T-Pot's FULL INSTALLATION # # Everything # # # ########################################################## Your choice: 1 <- 自分のインストールしたい番号を入力
とりあえず今回は様子見ということで、1番を選択しておきました。
途中でNGINXに関する設定
### Removing NGINX default website. ### Please enter a password for your user pooh for web access. Password:
インストール中に上記のようなメッセージが出るのですが、
Webアクセスのためのものらしいです。
作成したユーザのパスワードを入力して次に進みます。
謎のエラーが出てきた
~~~ File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
今回はあまり深く調べてないですが、pythonの環境に関係ありそうです。
pipで止まっているのですが、とりあえずt-potのエラーメッセージに従いました。
ログは残せてないですが、「cannot rm install.log 」といった箇所があったように記憶してます。
なので1回目削除して、またエラーが出たので2回目も同じファイル(install.log)を削除して挑戦しました。
なお、install.logはinstall.shと同じ階層に作成され、
エラー時にinstall.errというファイルも生成されることが確認されています。
トラブルシューティングに役立てばと思います。
また、2回目のファイル削除前に/etc/nginx/sites-enabled/defaultを消せないと怒られたので、
僕は/etc/nginx/sites-enabled/に空のdefaultを作成します。
# touch /etc/nginx/sites-enabled/default
インストール完了!
何度か試行錯誤して頑張りました。
しばらく様子を見守っていると、dockerコンテナをPULLし始めます。
インストールが完了すると以下のようなメッセージが出ます。
ようやく終わりました〜
これから悪い人を観察する生活が始まります
[MAIN] ip = <IP ADDR> MY_EXTIP=<IP ADDR> MY_INTIP=<IP ADDR> MY_HOSTNAME=<HOSTNAME> ### Thanks for your patience. Now rebooting. Remember to login on SSH port 64295 next time or visit the dashboard on port 64297! Connection to <IP ADDR> closed by remote host. Connection to <IP ADDR> closed.
まとめ
今回は様々なHoneypotが統合されたT-Potを構築していきました。
構築したのちにすぐアクセスが来ていたので、
数日後に蓋を開けるのが楽しみです。
Digital OceanはUbuntuのインスタンス立ち上げ後、
すでにGitなどが入っていたためかなり楽に構築できました。
Honeypotter向けにOptimizeされている印象があったので、
クラウドサービスを検討していて安いところが良い方は
利便性や安全性などの観点からオススメです。
2-Factor-Authなどもあるので、しっかり活用しましょう〜