CentOS7にハニーポットGlastopfを導入する

2018年5月2日

SSHとTelnetに特化したハニーポットであるCowrieを運用し始めて,3ヶ月ほどが経過しました.初めて扱うjson形式のログにも徐々に慣れてきたので,そろそろ別のサービスに対する攻撃の観察も行いたいと考えていました.

国立研究開発法人 情報通信研究機構(NICT)によると2015年に観測したサイバー攻撃545.1億件のうち,約5%にあたる27億件ほどがホームページを狙った攻撃だそうです.
サイバーセキュリティの現状と総務省の対応について

このことからWebに特化したハニーポットの運用を始めることにしました.そこで今回はWeb特化型のハニーポットであるGlastopfを導入していきたいと思います.

※Glastopfの運用開始後に,同じくWebに特化したWOWHoneypotというハニーポットの存在を知りました.Glastopfは現在開発が行われていないため,しばらく運用した後にWOWHoneypotの導入についても検討してみたいと思っています.
WOWHoneypot

ハニーポットGlastopfとは

Glastopf is a Python web application honeypot.
We use vulnerability type emulation instead of vulnerability emulation.
Popular attack type emulation is already in place: Remote File Inclusion via a build-in PHP sandbox, Local File Inclusion providing files from a virtual file system and HTML injection via POST requests.

http://mushmush.org/より

GlastopfはPythonで記述されたWebアプリケーションハニーポットです.様々な脆弱性のあるWebサイトをエミュレートしているため,脆弱性を利用した生の攻撃を観測することが可能になっています.

Glastopfでできること

  • Webサーバ(Webサイト)に対する攻撃の観測
  • sqlite形式のログ出力

Glastopfの導入

それではGlastopfを導入していきたいと思います.

必要なライブラリのインストール

まずはGlastopfのインストールに必要なライブラリなどをインストールします.

# yum groupinstall "Development Tools"
# yum install atlas atlas-devel bzip2-devel libevent-devel libffi-devel libxml2-devel libxslt-devel mariadb mariadb-devel mariadb-server ncurses-devel openssl-devel php php-devel python-devel python-setuptools readline-devel sqlite-devel tk-devel wget zlib-devel
# easy_install pip
# pip install gevent cryptography

Glastopfのインストール

次にGlastopf本体をGitから取得し,インストールします.

# cd /opt/
# git clone https://github.com/glastopf/glastopf.git
# cd glastopf/
# python setup.py install

Glastopf用のユーザ作成

Glastopf用のユーザとグループを作成します.Glastopf用のユーザはログインする必要がないため,オプションに-s /usr/sbin/nologin glastopfを指定します.

# groupadd glastopf
# useradd -g glastopf -s /usr/sbin/nologin glastopf
# chown -R glastopf:glastopf /opt/glastopf/

Glastopfの設定及び起動

Glastopfの設定及び起動を行います.

設定ファイルの作成

# glastopf-runner

## エラーになるので,設定ファイルの修正を行う

# vim glastopf.cfg

[webserver]
host = 0.0.0.0
port = 80
uid = glastopf
gid = glastopf
proxy_enabled = False

バックグラウンドで起動

# glastopf-runner &

Glastopfには終了コマンドが用意されていないので,Glastopfを終了する際は直接プロセスを終了するようにしてください.

(追記:2018/02/06)Glastopfをsystemdにサービス登録する手法についてはこちらを参照してください→ハニーポットGlastopfをSystemdにサービス登録する

ファイアウォールの設定

GlatopfはWebサーバに対する攻撃を記録するため,一般的なWebサービスのポートである80番ポートを開放します.

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

これでGlastopfは正常に動作します.Webブラウザからhttp://サーバのIPアドレス/にアクセスすると以下のようなWebサイトが表示されると思います.

Glastopfの利用方法

Glastopfの簡単な利用方法は以下のとおりです.

・設定ファイル
/opt/glastopf/glastopf.cfg

・ログファイル
システムログ:/opt/glastopf/log/glastopf.log
sqlite形式のログ:/opt/glastopf/db/glastopf.db

Glastopfはsqliteのデータベース形式でログを保存することができます.サーバ上のsqliteコマンドやDB Browser for SQLiteといったツールを利用してログを分析してみてください.Web特化型のハニーポット運用は初めてのため,どのようなログが収集できるのか非常に楽しみです.

おわりに

これでGlastopfの導入は以上になります.
Glastopfで収集したログの分析結果も,ブログの記事にしていきたいと思っているので良ければ覗いてみてください.

参考文献

https://github.com/mushorg/glastopf
http://atani.github.io/2015/06/Glastopf%E3%81%A7%E4%B8%8D%E7%A9%8F%E3%81%AA%E8%A1%8C%E5%8B%95%E3%82%92%E5%AE%89%E5%85%A8%E3%81%AB%E8%A6%B3%E5%AF%9F%E3%81%97%E3%82%88%E3%81%86%EF%BC%81/
http://takahoyo.hatenablog.com/entry/2014/11/17/191919