honeeepi でハニーポット(Dionaea)を構築する

Raspberry PiにハニーポットDionaeaを導入しようとして、いろいろインストールしたのですがうまくいかず。と、調べたら簡単にハニーポット環境を構築できる[Honeeepi](https://redmine.honeynet.org/projects/honeeepi/wiki)という、Raspbianをハニーポット用にカスタマイズしたOSがあることを知りました。なかなか面白そうなものなので、布教の意を込めてこの記事を書かせていただきます。
#honeeepiとは
Raspbianをハニーポット用にカスタマイズしたもの。ハニーポットはDionaea、Conpot、Glastopf、Kippoが入っています。今回はDionaeaを導入します。
#環境
・Raspberry Pi・・・私が利用したモデルはB+
・[Honeeepi](https://redmine.honeynet.org/projects/honeeepi/wiki)・・・イメージファイルが配布されています。
・SDカード・・・私は16Gを使いました。短期間なら8Gほどで良さそうです。長期運用する場合は容量の大きなものを選びましょう。
#初期設定
Honeeepiを起動すると、いきなりログイン名とパスワードの入力を促されます。[Honeeepi](https://redmine.honeynet.org/projects/honeeepi/wiki)のサイトを見ればわかるよう、ログイン名とパスワードは

```text:login
login: pi
password: honeeepi
```

となっていますので、これを入力します。ログインしたら
`sudo raspi-config`
で好きなように設定をいじくりましょう。
##raspi-configの設定
いじくる場所としては、1.Expand Filesystemと8.Advanced OptionsのA0.Updateは必ず実行します。SSH接続するなら8.Advanced OptionsのA4.SSHをenableを選択します。使わない場合はdisableを選択します。
4.Internationalisation OptionsのI1.Change Locale、I2.Change Timezone、I3.Change Keyboard Layout、8.Advanced OptionsのA2.Hostnameはお好みで設定します。
終わったら、
`sudo reboot`
で再起動しましょう。

##IPアドレスの設定
Raspberry PiのIPアドレスを固定します。
`sudo vi /etc/network/interfaces`
開くと以下のように初期設定されています。

```vim:/etc/network/interfaces
      1 auto lo
      2 iface lo inet loopback
      3
      4 auto eth0
      5 allow-hotplug eth0
      6 iface eth0 inet manual
      7
      8 auto wlan0
      9 allow-hotplug wlan0
     10 iface wlan0 inet manual
     11 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
     12
     13 auto wlan1
     14 allow-hotplug wlan1
     15 iface wlan1 inet manual
     16 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
     17
```
これを、以下のように変更します。※有線LANの場合

```vim:/etc/network/interfaces
      1 auto lo
      2 iface lo inet loopback
      3
      4 auto eth0
      5 allow-hotplug eth0
      6 #iface eth0 inet manual　　#コメントアウトしておく
      7 iface eth0 inet static
      8 address 192.168.11.10   #好きなIPアドレス
      9 netmask 255.255.255.0   #状況により変えてください
     10 gateway 192.168.11.1    #ルータ等のIPアドレス
     11
     12 auto wlan0
     13 allow-hotplug wlan0
     14 iface wlan0 inet manual
     15 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
     16
     17 auto wlan1
     18 allow-hotplug wlan1
     19 iface wlan1 inet manual
     20 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
     21
```
変更を適用します。
`sudo /etc/init.d/networking restart`

##ユーザーの追加、piユーザーの削除
piのユーザー名のままネット上に公開して運用を開始するのは、パスワードを変えていたとしても危険です。piの代わりとなる新たなユーザーを追加します。
`sudo useradd -m -G sudo ユーザー名`
上記コマンドではグループにsudoを指定することで管理者権限が使えるようにしています。
次はパスワードを設定します。
`sudo passwd ユーザ名`

それでは正常に追加されているか確認しましょう。

```text:
su ユーザ名
sudo cat /etc/shadow
```
これでシャドウファイルの内容が表示されれば成功です。
それでは、exitを2回叩いてログアウトしてから、今度は追加したユーザーでログインしてください。piユーザーを削除します。
`sudo userdel -r pi`

##SSHの設定
SSHをenableにしている場合、ネット上に公開するためセキュリティを固める必要があります。
`sudo vi /etc/ssh/sshd_config`

```vim:/etc/ssh/sshd_config
      4 # What ports, IPs and protocols we listen for
      5 Port 22
```
まず、5行目のポート番号を49152～65535番の中で好きな番号に変更します。以後、変更したポート番号を指定して

```vim:/etc/ssh/sshd_config
     25 # Authentication:
     26 LoginGraceTime 120
     27 PermitRootLogin yes  #noに変更
     28 StrictModes yes
     29
     30 RSAAuthentication yes
     31 PubkeyAuthentication yes
     32 #AuthorizedKeysFile     %h/.ssh/authorized_keys
```
27行目のPermitRootLoginをnoに変更します。これでrootでのログインを禁止します。

あとは、オプションになるのですが

```vim:/etc/ssh/sshd_config
     50 # Change to no to disable tunnelled clear text passwords
     51 PasswordAuthentication yes   #noに変更
```

51行目のPasswordAuthenticationをnoにすることでパスワード認証を通さないようにします。こうすることで、以後秘密鍵での認証になります。
秘密鍵作成等は以下を参考にしてください。
[ssh公開鍵認証を実装する（自分メモ）](http://qiita.com/HamaTech/items/21bb9761f326c4d4aa65)
[WindowsでSSHの鍵を作る](http://qiita.com/digdagdag/items/9e5c061e7d86e0af9a57)
[ssh sshd 設定方法](http://changineer.info/server/centos_basic/ssh_sshd_conf.html)

authorized_keysのパーミッションは600、.sshのパーミッションは700です。

設定が終わったら、
`sudo /etc/init.d/ssh restart`
でサービスを再起動します。

##更新
```text:
sudo apt-get update
sudo apt-get upgrade
```
を実行しておきましょう。いくつか保留パッケージが発生する場合は、
`sudo apt-get dist-upgrade`
でインストールします。



この時点で既にDionaeaを稼働させることができますが、このまま稼働させるとDionaeaのログファイルが非常に大きくなり、普通のSDカードでは厳しくなります。そのため、Dionaeaの設定を変更します。
##Dionaeaの設定
dionaea.confを編集します。
`sudo vi /opt/dionaea/etc/dionaea/dionaea.conf`

```vim:/opt/dionaea/etc/dionaea.conf
      1 logging = {
      2         default = {
      3                 // file not starting with / is taken relative to LOCALESTATEDIR (e.g. /opt/dionaea/var)
      4                 file = "log/dionaea.log"
      5                 levels = "all"
      6                 domains = "*"
      7     }
      8
      9         errors = {
     10                 // file not starting with / is taken relative to LOCALESTATEDIR (e.g. /opt/dionaea/var)
     11                 file = "log/dionaea-errors.log"
     12                 levels = "warning,error"
     13                 domains = "*"
     14         }
     15 }
```

5行目と12行目を次のように変更します

```vim:/opt/dionaea/etc/dionaea.conf
      1 logging = {
      2         default = {
      3                 // file not starting with / is taken relative to LOCALESTATEDIR (e.g. /opt/dionaea/var)
      4                 file = "log/dionaea.log"
      5                 levels = "all,-debug"　　#ここを変更
      6                 domains = "*"
      7     }
      8
      9         errors = {
     10                 // file not starting with / is taken relative to LOCALESTATEDIR (e.g. /opt/dionaea/var)
     11                 file = "log/dionaea-errors.log"
     12                 levels = "error"　　　　　#ここを変更
     13                 domains = "*"
     14         }
     15 }
```

これで、デバッグログ、警告ログは出力されなくなります。
##ポートスキャンツールの導入
Dionaeaの動作確認をするため、[nmap](https://nmap.org/)(ポートスキャンツール)を導入します。Windows版、MacOS版、Linux版がありますのでお好きなものを。Debian系やHoneeepiではaptで導入できます。今回はWindows版で行います。
インストールが終わったらコンソールを立ち上げて、
`nmap -p 0-65535 Raspberry PiのIPアドレス※`
を入力し実行すると

```text:
C:\>nmap -p 0-65535 Raspberry PiのIPアドレス

Starting Nmap 6.47 ( http://nmap.org ) at ****-**-** **:** 東京 (標準時)
Nmap scan report for Raspberry PiのIPアドレス
Host is up (0.0054s latency).
Not shown: 65535 closed ports
PORT      STATE SERVICE
*****/tcp open  unknown   #先ほど設定したSSHの番号(ポート番号は伏せています)
MAC Address: Raspberry PiのMACアドレス (Raspberry Pi Foundation)

Nmap done: 1 IP address (1 host up) scanned in 84.39 seconds
```
現在、sshのためのポートだけが開いていることがわかります。
※Raspberry Piにnmapを導入した場合、自分宛てにポートスキャンを行うときは"localhost"や"127.0.0.1"ではなくネットワーク上から見えるIPアドレスを入力すること("192.168.1.5"など)

#Dionaeaの起動
`sudo /honeeepi/dionaea-honeypot/./start.sh`
これで起動されます(少し時間がかかります)。この後再度nmapを実行すると

```text:honeeepi
C:\>nmap -p 0-65535 Raspberry PiのIPアドレス

Starting Nmap 6.47 ( http://nmap.org ) at ****-**-** **:** 東京 (標準時)
Nmap scan report for Raspberry PiのIPアドレス
Host is up (0.0036s latency).
Not shown: 65525 closed ports
PORT      STATE SERVICE
21/tcp    open  ftp
42/tcp    open  nameserver
80/tcp    open  http
135/tcp   open  msrpc
443/tcp   open  https
445/tcp   open  microsoft-ds
1433/tcp  open  ms-sql-s
3306/tcp  open  mysql
5060/tcp  open  sip
5061/tcp  open  sip-tls
*****/tcp open  unknown   #sshのポート番号
MAC Address: Raspberry PiのMACアドレス (Raspberry Pi Foundation)

Nmap done: 1 IP address (1 host up) scanned in 75.66 seconds
```

複数のポートを開いて待機していることがわかります。
ブラウザで80番ポートにアクセスすると、
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/77099/34ba07d0-c546-3340-adde-758a8b8cac12.png)
このような画面が表示されます。この画面は、
`/opt/dionaea/var/dioanea/wwwroot`
に自由に編集したindex.htmlを置くことで変えられます。
##ファイアウォールの設定
iptablesで設定・・・と行こうかと思ったのですが、面倒なので(というかまだ私があまり解ってないので)ufwを使います。
`sudo apt-get install ufw`
まず、sshのポートを制限付きで開放させるよう設定します。
`sudo ufw limit [sshポート番号]`
あとは、Dionaeaで存在するサービスを登録します。

```text:
sudo ufw allow 21
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 445
sudo ufw allow 1433
sudo ufw allow 3306
sudo ufw allow 5060
sudo ufw allow 5061
```
ufwを有効化します。
`sudo ufw enable`
状態を確認します。
`sudo ufw status`

```text:
Status: active

To                         Action      From
--                         ------      ----
sshのポート番号             LIMIT       Anywhere
21                         ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
445                        ALLOW       Anywhere
1433                       ALLOW       Anywhere
3306                       ALLOW       Anywhere
5060                       ALLOW       Anywhere
5061                       ALLOW       Anywhere
```
それではnmapで確認してみましょう。

```text:
C:\>nmap -p 0-65535 Raspberry PiのIPアドレス

Starting Nmap 6.47 ( http://nmap.org ) at ****-**-** **:** 東京 (標準時)
Nmap scan report for Raspberry PiのIPアドレス
Host is up (0.016s latency).
Not shown: 65527 filtered ports
PORT      STATE SERVICE
21/tcp    open  ftp
80/tcp    open  http
443/tcp   open  https
445/tcp   open  microsoft-ds
1433/tcp  open  ms-sql-s
3306/tcp  open  mysql
5060/tcp  open  sip
5061/tcp  open  sip-tls
*****/tcp open  unknown  #sshのポート
MAC Address: Raspberry PiのMACアドレス (Raspberry Pi Foundation)

Nmap done: 1 IP address (1 host up) scanned in 137.65 seconds
```

これで設定は終了です。

#ログについて
全体ログは`/opt/dionaea/var/log`内に、アクセスログは`/opt/dionaea/var/dionaea/bistreams`に保存されます。`/opt/dionaea/var/dionaea`内にはsqlite形式のログも記録されます。
また、`/opt/dionaea/var/dionaea/wwwroot`にはFTPで共有されたファイルが置かれるので定期的な確認が必要です。

#まとめ
honeeepiを導入するだけでインストールの難しいDionaeaを簡単に扱うことができます。Dionaeaを運用してみて、
飽きたらkippo、
飽きたらGlastopfと、気軽に変えることもできます
(kippoぐらいなら同時運用しても持ちこたえます)
。研究用にいいと思います。(打ち消し線については追記参照)
##余談
DionaeaFRというログ解析ツールがありますが、Raspberry Piには入れないほうがいいです。重いので。SCPなどでlogsql.sqliteだけ取り出して、余裕のあるほかのマシンで動かすことを推奨します。

#参考にしたサイト(さらに詳しい設定などが載っています)
[dionaea — catches bugs](http://dionaea.carnivore.it/)(落ちてる・・・)
[Wiki - Honeeepi - Honeynet Project Redmine](https://redmine.honeynet.org/projects/honeeepi/wiki)
[ハニーポット観察記録(9) at www.morihi-soc.net](http://www.morihi-soc.net/?p=96)
[VPSにハニーポット(Dionaea)を入れてみた - Tahoo!!](http://takahoyo.hatenablog.com/entry/2014/05/26/023409)
[2章：Honey Pod Dionaeaの設定 - それでもアメリカに憧れる(仮)](http://d.hatena.ne.jp/yankun/20131110/1384091621)
[Dionaeaを改変してNmapによる検出を回避する - sonickun.log](http://sonickun.hatenablog.com/entry/2015/01/30/193142)

#追記
2016-07-03追記
####kippoについて
kippoはコマンド等のエミュレーションが不完全であるため推奨しません。(それに、honeeepiに入っているバージョンが古いです)
改良版(?)である[cowrie](https://github.com/micheloosterhof/cowrie)を別途導入することをお勧めします。
[GitHub - micheloosterhof/cowrie: Cowrie SSH Honeypot (based on kippo)](https://github.com/micheloosterhof/cowrie)

honeeepiも少し古くなってきてるのでraspberry piに入れるのが難しいdionaea用にしたほうがよいかもしれませんね。