さくらのクラウドにハエトリグサ(Dionaea)を植えてみた

セキュリティミニキャンプin福岡の時、@connect24hさんにlow interactive型のハニーポットNepenthes(ウツボカヅラ)を教えていただきました。
調べてみたところ、Nepenthesは現在開発終了しており、その後継としてDionaea(ハエトリグサ)が開発されているようです。
ということで、勉強のためにさくらのクラウドにDionaeaをビルドし、インストールしてみました。

公式にインストール方法がありますが、一部うまくいかない部分があったので、そのあたりも含めて書いていきます。

環境は下記のとおりです。
・さくらのクラウド:1コア,1GB,ディスク容量20GB(最小プラン)
Ubuntu 13.04 64bit

OSは公式のマニュアルがUbuntuっぽかったので、Ubuntuを使用しました。
クラウドのパブリックアーカイブを使ってOSをインストールし、初期設定を済ませただけの状態です。



1.まずaptitudeを使って必要なパッケージをインストールします

$ sudo aptitude install libudns-dev libglib2.0-dev libssl-dev libcurl4-openssl-dev libreadline-dev libsqlite3-dev python-dev libtool automake autoconf build-essential subversion git-core flex bison pkg-config

aptitudeが入ってない場合はapt-getを使うか、

$ sudo apt-get install aptitude

としてaptitudeを入れてもOKです。


2.次に、/opt/dionaea以下にDionaeaに必要なものをビルド、インストールしていきます。
homeディレクトリに適当に作業用のディレクトリを作って、そこで作業していきます。

$ mkdir ~/temp
  • liblcfg
$ cd ~/temp
$ git clone git://git.carnivore.it/liblcfg.git liblcfg
$ cd liblcfg/code
$ autoreconf -vi
$ ./configure --prefix=/opt/dionaea
$ sudo make install
  • libemu
$ cd ~/temp
$ git clone git://git.carnivore.it/libemu.git libemu
$ cd libemu
$ autoreconf -vi
$ ./configure --prefix=/opt/dionaea
$ sudo make install
  • libnl
$ sudo apt-get install libnl-3-dev libnl-genl-3-dev libnl-nf-3-dev libnl-route-3-dev

apt-getで入れられます。

  • libev
$ cd ~/temp
$ wget http://dist.schmorp.de/libev/Attic/libev-4.04.tar.gz
$ tar xfz libev-4.04.tar.gz
$ cd libev-4.04
$ ./configure --prefix=/opt/dionaea
$ sudo make install
$ cd ~/temp
$ wget http://www.python.org/ftp/python/3.2.2/Python-3.2.2.tgz
$ tar xfz Python-3.2.2.tgz
$ cd Python-3.2.2/
$ ./configure --enable-shared --prefix=/opt/dionaea --with-computed-gotos --enable-ipv6 LDFLAGS="-Wl,-rpath=/opt/dionaea/lib/ -L/usr/lib/x86_64-linux-gnu/"
$ make
$ sudo make install
  • Cython
$ cd ~/temp
$ wget http://cython.org/release/Cython-0.15.tar.gz
$ tar xfz Cython-0.15.tar.gz
$ cd Cython-0.15
$ /opt/dionaea/bin/python3 setup.py install
  • libpcap
$ cd ~/temp
$ wget http://www.tcpdump.org/release/libpcap-1.1.1.tar.gz
$ tar xfz libpcap-1.1.1.tar.gz
$ cd libpcap-1.1.1
$ ./configure --prefix=/opt/dionaea
$ make
$ sudo make install
  • OpenSSL
$ git clone git://git.openssl.org/openssl.git
$ cd openssl
$ ./Configure shared --prefix=/opt/dionaea linux-x86_64
$ make SHARED_LDFLAGS=-Wl,-rpath,/opt/dionaea/lib
$ sudo make install

公式ではcvsで取ってきていますが、うまくいかなかったのでgitで取ってきました。

  • glib
$ apt-get install libffi-dev gettext
$ wget http://ftp.acc.umu.se/pub/gnome/sources/glib/2.31/glib-2.31.22.tar.xz
$ tar Jxvf glib-2.31.22.tar.xz
$ cd glib-2.31.22
$ ./configure --prefix=/opt/dionaea/
$ make
$ sudo make install

公式では入れていませんが、最新バージョンではDionaeaのビルド時にエラーが出たので、glib2.31.22を使いました。
詳しくは後述します。


3.最後にDionaea本体をビルド、インストールします。

$ cd ~/temp
$ git clone git://git.carnivore.it/dionaea.git dionaea
$ cd dionaea
$ autoreconf -vi
$ ./configure --with-lcfg-include=/opt/dionaea/include/ \
              --with-lcfg-lib=/opt/dionaea/lib/ \
              --with-python=/opt/dionaea/bin/python3.2 \
              --with-cython-dir=/opt/dionaea/bin \
              --with-emu-include=/opt/dionaea/include/ \
              --with-emu-lib=/opt/dionaea/lib/ \
              --with-gc-include=/usr/include/gc \
              --with-ev-include=/opt/dionaea/include \
              --with-ev-lib=/opt/dionaea/lib \
              --with-curl-config=/usr/bin/ \
              --with-ppcap-include=/opt/dionaea/include \
              --with-pcap-lib=/opt/dionaea/lib/ \
              --with-glib=/opt/dionaea/ \
              --with-ssl-lib=/opt/dionaea/lib/
$ make
$ sudo make install

以上でインストール完了です。
あとは、

sudo /opt/dionaea/bin/dionaea -l all,-debug -L '*'

とすれば起動できます。

*glibについて
バージョンは忘れましたが、aptで入れたglibを使ってDionaeaをビルドしようとすると、

dionaea.c: In function ‘main’:
dionaea.c:686:3: error: ‘g_thread_init’ is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:260) [-Werror=deprecated-declarations]
dionaea.c:689:2: error: ‘g_mutex_new’ is deprecated (declared at /usr/include/glib-2.0/glib/deprecated/gthread.h:272) [-Werror=deprecated-declarations]

エラーが出て止まってしまいます。
どうやら、dionaeaのソースで使われているg_thread_initはglib-v2.3.2からなくなっているようです。
https://developer.gnome.org/glib/2.34/glib-Deprecated-Thread-APIs.html#g-thread-init
そのため、今回はglib-v2.31.22を利用しました。




記事を書いている間にDionaeaについてわかりやすく説明している記事を見つけました。
日本語の詳しい資料は少ないので、参考になると思います。
http://www.morihi-soc.net/?p=96
aptで入れられたんですね・・・

次はDionaeaのログをいい感じで見やすく表示してくれるDionaeaFRについて書こうと思います。
こっちはそんなにエラーもなく楽にできました。
また、Dionaeaで観測したログなども紹介しようと思っています。

OSC2013広島に行ってきました

10/6にサテライトキャンパスひろしまで行われたOSC広島に行ってきました
初OSCです

朝から行こうと思ってたんだけど、ゆっくりしてて出かけるのが遅くなったり道に迷ったりして着いたのは昼過ぎでした


見てきたものをいくつか紹介
あんまり写真とってなかった

展示ブース
・日本NetBSDユーザーグループ
なにやら大きな機器が展示されていて一番目立ってた気がします
https://dl-web.dropbox.com/s/wy6umj96usblpal/osc13hi002.jpg
x68kという20年ほど前に発売されていたコンピュータらしい

NetBSDやOSの移植についてお話を聞かせてもらいました
いろんな機器に移植することを前提に設計されたOSで、移植しやすい構成になってるらしい
たしか電子辞書で動いてるのを見たことがあるような・・・

https://dl-web.dropbox.com/s/eba30wywdwx5ibl/osc13hi003.jpg
RaspberryPiでも動いてました

https://dl-web.dropbox.com/s/qdub00049auo1dg/osc13hi001.jpg
そしてお決まり?のmikutter

OSの移植とか結構面白そうだったので自分でもやってみたいですね
といってもなかなかドキュメントとかまとまったものがないらしい
なんかいい資料とかないですかねぇ

特定非営利活動法人コモンズネット
NetCommonsの紹介をしてました。

最近大学の図書館のページがNetCommonsを使ったものに変わっていたので、ちょっと気になってました
簡単に言うとCMSグループウェアのような感じかな?
掲示板とか出欠管理とかもできるみたいなのでサークルのページとかに使えそうかも

OpenStreetMap Japan
みんなで編集して地図を作り上げるというもの
地域によって編集に参加している人の数が違うようで、地図の出来も違ってくるみたいです
自分の住んでる周辺は割と残念な感じだったw

えれくら!
LEDキューブや金属メッキなどの工作や、Emuduinoの展示をしていました。
Emuduinoというのは、@triringさんが製作したArduinoエミュレータで、実機なしでArduinoのプログラムを試すことができます
https://dl-web.dropbox.com/s/6e0mafwrrkhfraz/osc13hi004.jpg
Emuduino書籍化?

・Future Versatile Group/MyDNS.JP
MyDNS.JPGVCの紹介
GVCというのはハード屋の人とソフト屋の人の間をつないでくれる装置、といった感じですかね
ソフト屋の人がより簡単にセンサーやIOを使えるようにしてくれるような印象
Webアプリとかに連携させてみると面白いかも

セミナー
・「さくらのクラウド」について、社長と企画担当が語る~in広島編~
さくらクラウドの紹介とデモでした
社長自らがデモをやってました
さくらではそういう風習?らしいw
VPSと違って途中で構成を変更したりとかできるらしい(よくわかってない
便利そうだけどVPSと比べるとちょっと割高
自分で使うならVPSで十分かなー
そのうち同じぐらいの値段になるとか言ってたような・・・気のせい?

LT
松屋ネタが素晴らしかった・・・
おかげで迷わず懇親会会場に行くことができましたw
みなさん時間ぴったりでしかもしっかりネタも仕込んであってすごかったです(小並感

懇親会
120分間の食べ飲み放題でしたー
知らない人ばっかりだったのでちょっと緊張しましたが、いろんなお話を聞くことができました
結構話してばっかだったので食べ放題を満喫できなかったのがちょっと残念←


今回の頂き物
https://dl-web.dropbox.com/s/swug8euyxueqrna/osc13hi005.jpg
アンケートのくじ引きでさくらインターネットのポロシャツを頂きましたw
NetBSDブースではmikutterとかNetBSDのシールとか
気が付いたららこらこシール15枚ぐらいもってた
宮島ドロップスはじゃんけん大会の景品です
懇親会の時には「学生集合ー」ということで、エコバッグとスマホスタンドを頂きました
ありがとうございました!


懇親会まで来ていた学生は6,7人ぐらいでした
そのうちスタッフが半分ちょっと?
もっと参加する学生が増えてほしいですねー

個人的なOpenCV設定メモ

OpenCVを入れたときの設定メモ

Microsoft Visual C++ 2010 Express

OpenCV 2.4.3

x86,x64のどちらかに統一する(x86の方がいいとか・・・?)
 今回はx86を導入した

・OpenCVのダウンロード

http://opencv.willowgarage.com/wiki/

・展開する

C:\opencv243

環境変数の設定

システム環境変数のPathに

"C:\opencv243\build\x86\vc10\bin"

を追加

・Visual C++のディレクトリの設定

Projectごとに設定する必要がなくなる
C:\Users\ユーザー名\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props

以下のように書き換え

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>$(IncludePath);C:\opencv243\build\include</IncludePath>
</PropertyGroup>
<PropertyGroup>
<LibraryPath>$(LibraryPath);C:\opencv243\build\x86\vc10\lib</LibraryPath>
</PropertyGroup>
</Project>

・プロジェクトの作成
Visual C++にて
新しいプロジェクトの作成→Win32コンソールアプリケーション
設定は特にいじらず"完了"をクリック

サンプルプログラム

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <opencv/highgui.h>

#ifdef _DEBUG
//Debugモードの場合
#pragma comment(lib,"opencv_core243d.lib")
#pragma comment(lib,"opencv_imgproc243d.lib")
#pragma comment(lib,"opencv_highgui243d.lib")
#pragma comment(lib,"opencv_video243d.lib")
#else
//Releaseモードの場合
#pragma comment(lib,"opencv_core243.lib")
#pragma comment(lib,"opencv_imgproc243.lib")
#pragma comment(lib,"opencv_highgui243.lib")
#pragma comment(lib,"opencv_video243.lib")
#endif

int _tmain(int argc, _TCHAR* argv[]){

	cv::Mat mat = cv::imread("C:/opencv243/samples/c/lena.jpg");
	cv::imshow("lena", mat);

	cv::waitKey(0);
	return 0;
}

これであの有名な画像が表示されればOK

以下のページを参考にさせていただきました
http://iwaki2009.blogspot.jp/2012/11/windows7-64bitopencv-243.html
http://iwaki2009.blogspot.jp/2012/08/visual-c-2010-expressopencv.html