テック・スタディ

IoTとかセキュリティとかの備忘録

Digital OceanでT-Potを構築してみたお話

皆さんお久しぶりです。 GW中、体調不良により外出不能になった人です。

原因は間違いなく食中毒ですが、 送別会開いてくださった方々には文句言えないので。。。w

さて、今回はDigital Oceanという海外のクラウドサービスを利用して T-Potという統合型ハニーポットを構築した!というお話をしますね。

面倒そうな設定とかあるのかと思ったのですが、 特に問題もなく簡単に管理画面を拝めたので 敷居が高いと感じている人のためになればと思い書いております。

f:id:h3xm9s9:20180508074407p:plain

システム構成

まずは公式サイトなどを見ていただきたいのですが、

ある程度の要求スペックがあるため、料金の関係からAWS等の利用は避けることにしました。

最低限の要求スペックは以下のようになります。

4 GB RAM (6-8 GB recommended)

64 GB SSD (128 GB SSD recommended)

引用元:DTAG Community Honeypot Project

今回構築したDigital Oceanではちょうどいいプランがあったので、そちらを利用します。

4 GB 2 vCPUs 80 GB 4 TB $20/mo

引用元:Digital Ocean Pricing

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する必要があるとのことです。

構築時にいつものクセが出たので、僕は公開鍵を使った認証になっていました。

もし、公開鍵を登録していない場合はパスワードを聞かれるのですが、

「パスワード認証?なにそれ?」な僕には関係ない話でした。

www.digitalocean.com

で、ハマったの何よ?って思うでしょうが、

この公式のチュートリアルを見なければ

最初のログインユーザがrootであることを知り得なかったことです。

rootユーザということを知らなければssh/configも書けませんからね(汗

クラウドサービスによってはubuntuというユーザが

最初のログインユーザになっている場合もありますからね〜

ちなみに、後からメールボックス確認すると

公式チュートリアルのリンクが丁寧に送られてきてました。

早とちりですねw

ハニーポット用ユーザの作成

teppay.hatenablog.com

こちらのブログでも紹介されているように

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.

f:id:h3xm9s9:20180508074605p:plain

まとめ

今回は様々なHoneypotが統合されたT-Potを構築していきました。

構築したのちにすぐアクセスが来ていたので、

数日後に蓋を開けるのが楽しみです。

Digital OceanはUbuntuインスタンス立ち上げ後、

すでにGitなどが入っていたためかなり楽に構築できました。

Honeypotter向けにOptimizeされている印象があったので、

クラウドサービスを検討していて安いところが良い方は

利便性や安全性などの観点からオススメです。

2-Factor-Authなどもあるので、しっかり活用しましょう〜