Tahoo!!

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

VPSにDionaeaログ解析ツール、DionaeaFRを入れてみた

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

Dionaeaのログは基本的に文字だけであるので、情報を可視化することでさらに見やすくなり、運用するのも楽しくなることを期待し、今回はDionaeaのログを可視化してくれるDionaeaFRを導入してみた。

DionaeaFRのインストール

構築環境は、前回DionaeaをインストールしたVPSなので、CentOS 6.5

今回インストールにあたって参考にしたサイトはこちら

  1. ショなんとかドットねっと | 【きょうのITレポ】ハニーポット可視化ツール、DionaeaFRを導入してみた
  2. Visualizing Dionaea's results with DionaeaFR - BruteForce Lab's Blog
  3. DionaeaFR - Catches bugs

CentOSに入れて、ちょっとはまった点が何点かあるので、それも踏まえて以下で手順を説明する。

必要なものをインストール

Python 2.7

上記の3のサイトによると、使われてるテクノロジーがPython2.7.3らしいので、Python2.7.3以上のバージョンを別にインストールして使う。
CentOSに標準でインストールされているPythonは2.6系という罠があるので、入ってない人はいれましょう。yumでも入れられないぽいですし。

参考 - CentOS 6.4にPython 2.7.5をインストール(altinstall)し、さらに、デフォルトで2.6.6ではなく2.7.5が起動するようにする - コンピュータ/ソフトウェア関連Tips

# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
# cd
# wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
# tar -Jxvf Python-2.7.6.tar.xz
# cd Python-2.7.6
# ./configure --with-threads --enable-shared --prefix=/usr/local
# make

SSLがインストールされてるディレクトリがデフォルトと違うので./Modules/Setupを以下のように編集。

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

編集が終わったら、インストール続行。make installではなくmake altinstallであることに注意。

# make altinstall
# ln -s /usr/local/lib/libpython2.7.so.1.0 /lib64/

python2.7で動作確認。

# python2.7
Python 2.7.6 (default, Jun  1 2014, 14:01:44)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
pip

yumで入れるとデフォルトで入ってるPython 2.6対応のものになったので、easy_installから入れた。
参考 - CentOSにpython 2.7.3をインストールする手順 - memo.yomukaku.net

# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
# tar zxvf distribute-0.6.49.tar.gz
# cd distribute-0.6.49
# python2.7 setup.py install
# easy_install-2.7 pip
Django関連

django-tables2-simplefilter以外は、pipを使ってインストール

# pip2.7 install Django pygeoip django-pagination django-tables2 django-compressor django-htmlmin django-filter
# cd /opt
# wget https://github.com/benjiec/django-tables2-simplefilter/archive/master.zip -O django-tables2-simplefilter.zip
# unzip django-tables2-simplefilter.zip
# mv django-tables2-simplefilter-master/ django-tables2-simplefilter/
# cd django-tables2-simplefilter/
# python2.7 setup.py install
python-netaddr

上記の参考サイトだとapt-get、CentOSだとyumで入れることになるが、yumで入れるとデフォルトで入ってるPython 2.6のライブラリに入るのでこれもソースから。

# cd /opt
# wget https://pypi.python.org/packages/source/n/netaddr/netaddr-0.7.11.tar.gz
# tar xzvf netaddr-0.7.11.tar.gz
# cd netaddr-0.7.11
# python2.7 setup.py install
PySubnetTree
# cd /opt/
# git clone git://git.bro-ids.org/pysubnettree.git
# cd pysubnettree/
# python2.7 setup.py install
Node.js関連
# cd /opt/
# wget http://nodejs.org/dist/v0.8.16/node-v0.8.16.tar.gz
# tar xzvf node-v0.8.16.tar.gz
# cd node-v0.8.16
# ./configure
# make
# make install
# npm install -g less

DionaeaFRのインストール

まず、DionaeaFRのコードをgithubからダウンロード。

# cd /opt/
# wget https://github.com/RootingPuntoEs/DionaeaFR/archive/master.zip -O DionaeaFR.zip
# unzip DionaeaFR.zip
# mv DionaeaFR-master/ DionaeaFR

次に、GeoIPとGeoLiteを落として、特定のディレクトリに入れる。

# cd /opt/
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip GeoLiteCity.dat.gz
# gunzip GeoIP.dat.gz
# mv GeoIP.dat DionaeaFR/DionaeaFR/static
# mv GeoLiteCity.dat DionaeaFR/DionaeaFR/static

Dionaeaの結果のSQLiteのデータベースファイルが、Dionaea公式に書いてあるpath(/opt/dionaea/var/dionaea/logsql.sqlite)通りに設定してない場合は、/opt/DionaeaFR/DionaeaFR/settings.py:17のpathを変更する。

最後に、以下のコマンドを実行。
collectstaticでSTATIC_ROOTが~って出てエラーを吐く場合は、上記のsettings.py:68で"STATIC_ROOT=/opt/DionaeaFR/DionaeaFR"を指定した。
実行すると、起動メッセージが表示される。

# cd /opt/DionaeaFR/
# python2.7 manage.py collectstatic #type yes when asked
# python2.7 manage.py runserver 0.0.0.0:8000
Validating models...

0 errors found
June 1, 2014 - xx:xx:xx
Django version 1.6.5, using settings 'DionaeaFR.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

あとは、http://自分のIP:8000にアクセスすれば、以下のような画面が表示されるはず。(めっちゃ情報隠してますすみませんw)
f:id:takahoyo:20140607202721p:plain

DionaeaFRの機能

  • GRAPHS
    • Services:通信してきたサービスのランキング
    • Ports:通信してきたTCPポートのランキング
    • URLs:Downloadsで示されたURL数のランキング
    • IPs:URLsのURLをIPにしたランキング
    • Malwareマルウェアの種類のランキング
    • Connections:月毎のコネクション数の遷移
  • MAPS
    • Attackers:どの都市から攻撃されてきたか地図で表示
    • Countries:どの国から攻撃されてきたか地図で表示

例えばMAPSのAttacker画面はこんな感じになる。
f:id:takahoyo:20140608230857p:plain

ここで注意しなければならないのが、Malwareの項目。
DionaeaでVirusTotalの連携機能を有効にして、logsqlに出力しないと表示されない。
有効にする方法は、前回のエントリに追記しておくので、そちらを参考に。

感想

インストールして全部の機能が使えるまで結構トラップ(笑)にハマってしましい時間がかかって大変だったけど、実際に使ってみるとログをグラフ等で表示することによって直感的に確認できるので非常に便利。(そのログの有用性は別としてw)
特に、MAP機能はどこから攻撃が多く来てるのかわかるので、非常に楽しい✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

Dioaneaを利用してる人はこれも併せて是非。