ハニーポットGlastopfをSystemdにサービス登録する

2018年5月2日

Web特化型ハニーポットのGlastopfを導入してから1ヶ月ほどが経ちました.ログの収集は行っているものの,時間を掛けてログ分析を行うことがなかなかできておらず,良くないなぁと思っています(笑)

ハニーポットのログは生物(ナマモノ)であり,鮮度が大事なので,定期的にログ分析しなければ意味がないですからね^^;(笑)

しかしながら,Glastopfを導入した段階ではうまくいかなかったサービス登録を行うことができたので,手法をまとめておきたいと思います.
Glastopfの導入記事

Glastopfをsystemdにサービス登録

起動シェルスクリプトの作成

Unit定義ファイルから直接起動コマンドで起動しようとするとエラーが発生してしまい,うまく起動することができないのでGlastopfを起動するシェルスクリプトを作成します.

# cd /opt/glastopf/bin/
# vim glastopf-start.sh
#!/bin/bash

cd /opt/glastopf/
glastopf-runner &

exit 0

# chmod 744 glastopf-start.sh
# chown -R glastopf:glastopf /opt/glastopf/

Unit定義ファイルの作成

次にsystemdによる管理を行うために,Unit定義ファイルを作成します.

# vim /etc/systemd/system/glastopf.service
[Unit]
Description=Glastopf Web Application Honeypot
Documentation=https://github.com/mushorg/glastopf
After=network.target

[Service]
Type=forking
User=glastopf
Group=glastopf
ExecStart=/opt/glastopf/bin/glastopf-start.sh
Restart=on-failure
TimeoutSec=300

[Install]
WantedBy=multi-user.target

firewallの設定

Glastopfを80番ポートで起動すると,なぜかSystemdから制御できなかったので別のポートで起動し,firewalldでポートフォワーディングします.

# vim /opt/glastopf/glastopf.cfg
port = 10080

# firewall-cmd --permanent --add-forward-port="port=80:proto=tcp:toport=10080"
# firewall-cmd --reload

サービスの自動起動設定と起動

最後に自動起動の設定と,正常な起動の確認を行います.

# systemctl daemon-reload
# systemctl enable glastopf
# systemctl list-unit-files --type=service | grep glastopf
kippo.service                              enable
# systemctl start glastopf
# systemctl status glastopf
  Active: active (running)

この他にhttp://サーバのIPアドレス/にアクセスを行い正常のアクセスできるかの確認や,その際にtail -f /opt/glastopf/log/glastopf.logを用いてエラーが出力されていないかなどの確認も行ってください.

おわりに

今まではUnit定義ファイルから直接起動コマンドを実行しようとしていたため,systemdにエラーを吐かれてしまいなかなかうまくサービス登録を行うことができませんでした.そこで起動シェルスクリプトを作成し,systemdにそのシェルスクリプトを実行させることでうまく動作させることができました.

これによりサーバをリブートした際にいちいちGlastopfの起動コマンドを入力するといった,煩わしい作業を行う必要がなくなりました^^v