Tahoo!!

自分の勉強していること(コンピュータ関連 / ネットワーク / セキュリティ / サーバ)や趣味について書いていきます

VPSにハニーポット(Glastopf) を入れてみた

夏休み頃からいろいろ立て込んでた事が終わって少し余裕ができたので、VPSGlastopfをインストールしてみた。

Glastopfとは

Glastopfは、Webアプリケーション型のハニーポットで、Web系の攻撃に特化している。Glastopfを起動すると、デフォルトの設定では、ポート80番で待ち受け、Webアプリケーションサーバのように動く。
前に書いたDionaeaの記事でも紹介したが、IPAのドキュメントでも推奨されている。

VPSにハニーポット(Dionaea)を入れてみた - Tahoo!!

ちなみに、これを入れようと思ったきっかけは、Dionaeaに少し飽きた

Glastopfのインストール

今回もOSは、CentOS 6.5 x86-64

インストールにあたって参考にしたサイトは以下の通り

  1. glastopf/glastopf · GitHub
  2. infinity is null: how to install glastopf on centos 6 in a couple of minutes, no hassle
  3. Glastopf at www.morihi-soc.net


1の公式のGithubリポジトリのドキュメントには、BSD系やDebian系のインストール方法しか書いてなかったので、2のCentOS 6.2にインストールした人のサイトの情報を中心にインストールを進めた。
@k_morihisaさんのブログからはGlastopfがどんな感じなのかを参考にさせてもらった。

さて、本題。

Gastopf動かすのに必要なもののインストール

まず、yumで入れられるものから

# yum groupinstall "Development Tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel php-devel libxml2-devel libxslt-devel atlas atlas-devel gcc-gfortran g++ git php php-devel wget mysql mysql-server mysql-devel libevent-headers libffi-devel

Python2.7

Glastopfを動かすためにPython 2.7が必要なので、Python 2.7をインストールする。

# wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
# tar Jxvf Python-2.7.8.tar.xz
# cd Python-2.7.8
# ./configure --prefix=/usr/local
# make 
# make altinstall

pipでいろいろインストール

pipは特に何もしなくても使えた。pup

# pip2.7 install --upgrade pymongo
# pip2.7 install numpy
# pip2.7 install chardet sqlalchemy lxml beautifulsoup pyOpenSSL requests MySQL-python
# pip2.7 install scipy

antlr

# wget http://www.antlr3.org/download/antlr-3.1.3.tar.gz
# tar xzf antlr-3.1.3.tar.gz
# cd antlr-3.1.3/runtime/Python
# python2.7 setup.py install

SKLearn

# git clone git://github.com/scikit-learn/scikit-learn.git
# cd scikit-learn
# python2.7 setup.py install

evnet

まず、evnetをインストールするのにlibevが必要なので、それからインストールする。

# wget http://dist.schmorp.de/libev/libev-4.19.tar.gz
# tar xzvf libev-4.19.tar.gz
# cd libev-4.19
# ./configure
# make
# make install

次にevnetをインストール

# git clone git://github.com/rep/evnet.git
# cd evnet
# python2.7 setup.py install

ちなみに、evnetをインストールするとき手元の環境では、以下のようなエラーが表示された。

error: libev.so.4: cannot open shared object file: No such file or directory

この場合、共有ライブラリにパスを通してあげることで解決できた。

# echo $LD_LIBRARY_PATH

# export LD_LIBRARY_PATH=/usr/local/lib
# echo $LD_LIBRARY_PATH
/usr/local/lib

BFR

# git clone git://github.com/glastopf/BFR.git
# cd BFR
# phpize
# ./configure --enable-bfr
# make
# make install

php.iniに1行を加える。

[php]
zend_extension = /usr/lib64/php/modules/bfr.so

Glastopf本体のインストール

必要なものが揃ったので、Glastopfをインストール。

# git clone https://github.com/glastopf/glastopf.git
# cd glastopf
# python2.7 setup.py install

Glastopfを動かす

インストールが終わったら、glastopf用のディレクトリを作成(今回は/opt以下に作成)して、コマンドを実行する。

# mkdir /opt/glastopf/
# cd /opt/glastopf/
# glastopf-runner

ここで/opt/glastopf/に設定ファイルのglastopf.cfgとlogディレクトリ等が作成される。glastopf-runnerを動かすときはこの設定ファイルがあるディレクトリにcdして動かす。
また、CentOSだとエラーが出て停止する。これは、glastopf.cfgのuidとgidが存在しないものだとエラーが出るので、ここを存在するuidとgidに変更する。
今回はglastopf用のユーザを作成し、設定ファイルでそのユーザ、グループを指定した。

# groupadd glastopf
# useradd -g glastopf -s /usr/sbin/nologin glastopf
# chown -R glastopf:glastopf /opt/glastopf/
# vim /opt/glastopf/glastopf.cfg
# cat /opt/glastopf/glastopf.cfg
[webserver]
host = 0.0.0.0
port = 80
uid = glastopf
gid = glastopf
proxy_enabled = False
(以下省略)

設定を変えたら、今度はバックグラウンドで実行する。

# glastopf-runner &

起動したサーバにブラウザでアクセスするとこんな感じで表示される
f:id:takahoyo:20141117014306p:plain

ログについて

glastopfには2種類のログデータがある。

ぱっと見ですが、glastopf.logはいろいろ情報が混ざってて見難いが、glastopf.dbはSQLiteのBrowserで見ると結構見やすいし情報も多いので、解析するときは後者をソースにすると、いろいろ解析出来るかも。

感想

動かして数日くらいになりますが、結構様々なHTTPリクエストが集まってます。
個人的には、ShellShockとかStruts脆弱性とか大きな脆弱性だとそれを探すスキャンがどれくらい飛んでくるのがとても興味深いところです。(もちろん、そういう脆弱性が見つからないのが一番ですが…)
まだ動かしてから数日なので、引き続き動かして様子を見たいと思います。