Raspberry PiにハニーポットDionaeaを導入しようとして、いろいろインストールしたのですがうまくいかず。と、調べたら簡単にハニーポット環境を構築できるHoneeepiという、Raspbianをハニーポット用にカスタマイズしたOSがあることを知りました。なかなか面白そうなものなので、布教の意を込めてこの記事を書かせていただきます。
#honeeepiとは
Raspbianをハニーポット用にカスタマイズしたもの。ハニーポットはDionaea、Conpot、Glastopf、Kippoが入っています。今回はDionaeaを導入します。
#環境
・Raspberry Pi・・・私が利用したモデルはB+
・Honeeepi・・・イメージファイルが配布されています。
・SDカード・・・私は16Gを使いました。短期間なら8Gほどで良さそうです。長期運用する場合は容量の大きなものを選びましょう。
#初期設定
Honeeepiを起動すると、いきなりログイン名とパスワードの入力を促されます。Honeeepiのサイトを見ればわかるよう、ログイン名とパスワードは
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
開くと以下のように初期設定されています。
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の場合
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 ユーザ名
それでは正常に追加されているか確認しましょう。
su ユーザ名
sudo cat /etc/shadow
これでシャドウファイルの内容が表示されれば成功です。
それでは、exitを2回叩いてログアウトしてから、今度は追加したユーザーでログインしてください。piユーザーを削除します。
sudo userdel -r pi
##SSHの設定
SSHをenableにしている場合、ネット上に公開するためセキュリティを固める必要があります。
sudo vi /etc/ssh/sshd_config
4 # What ports, IPs and protocols we listen for
5 Port 22
まず、5行目のポート番号を49152~65535番の中で好きな番号に変更します。以後、変更したポート番号を指定して
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でのログインを禁止します。
あとは、オプションになるのですが
50 # Change to no to disable tunnelled clear text passwords
51 PasswordAuthentication yes #noに変更
51行目のPasswordAuthenticationをnoにすることでパスワード認証を通さないようにします。こうすることで、以後秘密鍵での認証になります。
秘密鍵作成等は以下を参考にしてください。
ssh公開鍵認証を実装する(自分メモ)
WindowsでSSHの鍵を作る
ssh sshd 設定方法
authorized_keysのパーミッションは600、.sshのパーミッションは700です。
設定が終わったら、
sudo /etc/init.d/ssh restart
でサービスを再起動します。
##更新
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
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行目を次のように変更します
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(ポートスキャンツール)を導入します。Windows版、MacOS版、Linux版がありますのでお好きなものを。Debian系やHoneeepiではaptで導入できます。今回はWindows版で行います。
インストールが終わったらコンソールを立ち上げて、
nmap -p 0-65535 Raspberry PiのIPアドレス※
を入力し実行すると
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を実行すると
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番ポートにアクセスすると、
このような画面が表示されます。この画面は、
/opt/dionaea/var/dioanea/wwwroot
に自由に編集したindex.htmlを置くことで変えられます。
##ファイアウォールの設定
iptablesで設定・・・と行こうかと思ったのですが、面倒なので(というかまだ私があまり解ってないので)ufwを使います。
sudo apt-get install ufw
まず、sshのポートを制限付きで開放させるよう設定します。
sudo ufw limit [sshポート番号]
あとは、Dionaeaで存在するサービスを登録します。
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
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で確認してみましょう。
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(落ちてる・・・)
Wiki - Honeeepi - Honeynet Project Redmine
ハニーポット観察記録(9) at www.morihi-soc.net
VPSにハニーポット(Dionaea)を入れてみた - Tahoo!!
2章:Honey Pod Dionaeaの設定 - それでもアメリカに憧れる(仮)
Dionaeaを改変してNmapによる検出を回避する - sonickun.log
#追記
2016-07-03追記
####kippoについて
kippoはコマンド等のエミュレーションが不完全であるため推奨しません。(それに、honeeepiに入っているバージョンが古いです)
改良版(?)であるcowrieを別途導入することをお勧めします。
GitHub - micheloosterhof/cowrie: Cowrie SSH Honeypot (based on kippo)
honeeepiも少し古くなってきてるのでraspberry piに入れるのが難しいdionaea用にしたほうがよいかもしれませんね。