かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

WOWHoneypot をサービス化してみる

前回の記事では単にプログラムを自身のユーザ権限で実行しただけなので、SSHを切断したりするとハニーポット自体も終了してしまいます。なのでちゃんとデーモン化して常時起動しておくようにしてみたいと思います。

WOWHoneypot用のユーザを作る

万が一 WOWHonyepot に脆弱性があってユーザ権限を取られてしまった場合に、影響が最小限になるよう専用ユーザとし、sudo 権限などは与えないでおきます。

$ sudo adduser wow

安直にハニーポット名の先頭三文字を取ったけど、他のハニーポッターな方はもっと凝った名前をつけているのでしょうか…?

サービス化する

wowhoneypot.py を直接起動してしまうと、SSHを切断したりするとハニーポット自体も終了してしまうので、ちゃんとサービス化します。 バージョンアップ等に容易に対応できるように起動用のシェルスクリプトファイルを作ることにします。

以下の内容を、 /home/wow 直下に wowhoneypot.sh として保存します。WOWHoneypot 本体は /home/wow/wowhoneypot 以下にクローンされているとします。

#!/bin/bash
cd /home/wow/wowhoneypot
/usr/bin/python3 /home/wow/wowhoneypot/wowhoneypot.py

systemctl から扱えるように /etc/systemd/system 以下に wowhoneypot.service というファイルで以下の内容を保存します。

[Unit]
Description=WoWHoneypot daemon
Documentation=https://github.com/morihisa/WOWHoneypot

[Service]
ExecStart = /home/wow/wowhoneypot.sh
ExecRestart = /bin/kill -WINCH ${MAINPID} ; /home/wow/wowhoneypot.sh
ExecStop = /bin/kill -WINCH ${MAINPID}
Restart = no
Type = simple
User = wow
Group = wow

[Install]
WantedBy = multi-user.target

サービスとして起動、停止するには以下のコマンドを使います。

$ sudo systemctl enable wowhoneypot.service // 自動起動設定を有効に
$ sudo systemctl start wowhoneypot.service     // サービスを開始する
$ sudo systemctl stop wowhoneypot.service     // サービスを停止する

上記の eneble と start の両方を実行すると、以下のように wowhoneypot のプロセスが起動しているはずです。 もし起動していなかったら、 /var/log/syslog をみて原因を特定しましょう。大抵の場合、実行ファイルのパスが間違っているのではないかと思います。

f:id:kawa_xxx:20180506133236p:plain

おわりに

前回の記事とあわせて、これで wowhonyepot をきちんと植えることが出来ました。 次回は syslog でログを外部サーバに集積、簡易分析するのと、WOWHoneypot 1.1 で実装されたハンティング機能をいじって見ようと思います。