2014年1月7日火曜日

digitalOceanクラウド上に安く簡単にkippoハニーポットを構築する

ozumaさんの公開された抱腹絶倒のスライド資料「さくらのVPSに来る悪い人を観察する その2」が凄い人気で、ブクマコメントなどで「ぼくもやってみたい」という希望が多いようです。既に、同じozumaさんが「sshハニーポットをkippoで作ってみる」というエントリで作り方(CentOS6.4想定)を公開されていますが、pythonのモジュールのセットアップなど少し難しいという人がいるかもしれません。

それ、digitalOcean + Ubuntuならもっと簡単に安く(しかも安全に)できるよ

ということで、簡単・安い・安全な kippoハニーポットの作り方を説明します。digitalOceanは一時間約1円の完全従量制なので、お財布も安心ですw

digitanOceanのアカウントを作成する

こちらを参考にdigitalOceanのアカウントをご用意ください。こちらのリンクからアカウントを作成いただけると、私が喜びますw digitalOceanは、完全従量制なので、アカウントを作成した時点では、課金は発生しません。

kippo用のインスタンス(Droplet)を作成する

digitalOceanのコントロールパネルからCREATEというパネルをクリック(あるいはこちらのリンク)して、インスタンスを作成します。
Hostname: kippo                   ← なんでもよい
Select Size: 512MB / 1 CPU  ← できるだけお安いもの
Select Region: New York 2     ← サンフランシスコリージョンが使えないようなのでNew Yorkで
Select Image
Linux Distributions: Ubuntu
Ubuntu 12.04.3 x32              ← Ubuntu 12.04.03 32ビットを選択
Settings: そのままでよい
この状態で、Create Dropletのパネルをクリックするとインスタンスが作成されます。課金はこの時点から始まります。
IPアドレスとrootパスワードがメールで送信されてくるので、それを用いてセットアップします。

Ubuntuのセットアップ

適当なターミナルソフトで、rootでログインしてください。

まず、Ubuntuのアカウントを2つ作成します。1つは管理者(ここでは yamada とします)、もう1つはkippo実行用のユーザ(kippo)です。
# adduser yamada     ← 一般ユーザの管理者。パスワードはしっかり管理
# gpasswd -a yamada sudo    ← yamadaをsudo可能なグループに追加
# adduser kippo       ← kippo実行用ユーザ。パスワードは捨てて良い
# passwd                            ← rootパスワードを変更しておく。捨てて良い
次に、sshのポート番号を変更します。sshのデフォルトポート番号22は kippoに食わせるので、本当のsshのポート番号は別の番号(ここでは10022)に変更します。
# vi /etc/ssh/sshd_config

##Port 22       ← コメントアウト
Port 10022     ← 追加

# service ssh restart
ここで、別のターミナルを起動して、管理用ユーザ(yamada)でログインします(ポート番号の変更をお忘れなく)。sudoできることを確認します。
yamada@kippo:~$ sudo whoami
root                                     ← これを確認した段階で root側の端末はexitして良い
yamada@kippo:~$
kippoに必要なモジュールを追加します。下の2つはdigitalOceanだと予めインストールされているようです。
yamada@kippo:~$ sudo apt-get update
yamada@kippo:~$ sudo apt-get -y install python-crypto
yamada@kippo:~$ sudo apt-get -y install python-twisted
yamada@kippo:~$ sudo apt-get -y install python-zope.interface
yamada@kippo:~$ sudo apt-get -y install python-pyasn1
kippoはデフォルトで2222番ポートを使うため、iptablesを使って、22 ポートを 2222 ポートにリダイレクトしておきます。
yamada@kippo:~$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j REDIRECT --to-port 2222
ここまでで下準備は終わりです。

kippoのインストール

kippoでログインします。
yamada@kippo:~$ sudo su - kippo
kippoをダウンロード、展開。
kippo@kippo:~$ wget http://kippo.googlecode.com/files/kippo-0.8.tar.gz
kippo@kippo:~$ tar xf kippo-0.8.tar.gz
kippo@kippo:~$ cd kippo-0.8/
ログファイルの設定を変更します。
kippo@kippo:~/kippo-0.8$ vi kippo.cfg
※ ファイルの末尾にジャンプ
[database_textlog]            ← コメントアウトの#を消す
logfile = kippo-textlog.log    ← 同上
ここまでで kippoの導入は終わりです。

ここでいったんシャットダウンして、digitalOceanのイメージを作成しておくとよいでしょう。イメージがあれば、いつでもインスタンスは復元できます。インスタンス(Droplet)を削除すると課金が止まります。

kippoの起動

kippoをインストールしたディレクトリに start.sh という起動シェルがあります。
kippo@kippo:~/kippo-0.8$ ./start.sh    ← kippoの起動
Starting kippo in background...Loading dblog engine: textlog
Generating RSA keypair...
done.
kippo@kippo:~/kippo-0.8$

監視する

kippo@kippo:~/kippo-0.8$ tail -f kippo-textlog.log

色々遊ぶ

インスタンスのポート22にsshでログインしてください。デフォルトパスワードは124356です。
nas3:~# w       定番の w コマンド
 00:32:10 up 0 min,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    xxx.xxx.xxx.xxx   00:31    0.00s  0.00s  0.00s w
nas3:~# wget http://example.jp/
--2014-01-07 00:32:16--  http://example.jp/
Connecting to example.jp:80... connected.
HTTP request sent, awaiting response... DNS lookup failed: address 'example.jp' not found: [Errno -2] Name or service not known.
nas3:~# ps -ef
 PID TTY         TIME COMMAND
5673 pts/0       0:00 -bash
5679 pts/0       0:00 ps -ef
nas3:~# exit

ログを見て楽しむ

kippo@kippo:~/kippo-0.8$ tail -f kippo-textlog.log  (続き)
01429996775d11e3b8c304010e82e801 [2014-01-07 00:31:48]: New connection: xxx.xxx.xxx.xxx:xxxx
01429996775d11e3b8c304010e82e801 [2014-01-07 00:31:58]: Login failed [root/admin]
01429996775d11e3b8c304010e82e801 [2014-01-07 00:32:04]: Login succeeded [root/123456]
01429996775d11e3b8c304010e82e801 [2014-01-07 00:32:05]: Terminal size: 90x35
01429996775d11e3b8c304010e82e801 [2014-01-07 00:32:10]: Command [w]
01429996775d11e3b8c304010e82e801 [2014-01-07 00:32:16]: Command [wget http://example.jp/]
01429996775d11e3b8c304010e82e801 [2014-01-07 00:32:41]: Command [ps -ef]
01429996775d11e3b8c304010e82e801 [2014-01-07 00:33:14]: Command [exit]
01429996775d11e3b8c304010e82e801 [2014-01-07 00:34:16]: Connection lost

kippoを終了する

以下のコマンドで kippo を終了できます。
kippo@kippo:~/kippo-0.8$ kill `cat kippo.pid`
kippo@kippo:~/kippo-0.8$

まとめ

kippoをDigitalOcean上のUbuntu12.04に導入、実行する方法を紹介しました。
DigitalOceanの一番安いプランだと、1時間約1円の完全従量ですので、お安く、安全にkippoを楽しむことができます。飽きたらインスタンスをシャットダウンして、イメージ取得の後インスタンスを削除しておけば、課金は発生しません。
それでは、楽しいハニーポットライフを!

0 件のコメント:

コメントを投稿

フォロワー