さくらのクラウドにハエトリグサ(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です
朝から行こうと思ってたんだけど、ゆっくりしてて出かけるのが遅くなったり道に迷ったりして着いたのは昼過ぎでした
場所が見つからないw
— Phos/リン (@_Phos) October 6, 2013
見てきたものをいくつか紹介
あんまり写真とってなかった
展示ブース
・日本NetBSDユーザーグループ
なにやら大きな機器が展示されていて一番目立ってた気がします
x68kという20年ほど前に発売されていたコンピュータらしい
NetBSDやOSの移植についてお話を聞かせてもらいました
いろんな機器に移植することを前提に設計されたOSで、移植しやすい構成になってるらしい
たしか電子辞書で動いてるのを見たことがあるような・・・
OSの移植とか結構面白そうだったので自分でもやってみたいですね
といってもなかなかドキュメントとかまとまったものがないらしい
なんかいい資料とかないですかねぇ
・特定非営利活動法人コモンズネット
NetCommonsの紹介をしてました。
最近大学の図書館のページがNetCommonsを使ったものに変わっていたので、ちょっと気になってました
簡単に言うとCMS+グループウェアのような感じかな?
掲示板とか出欠管理とかもできるみたいなのでサークルのページとかに使えそうかも
・OpenStreetMap Japan
みんなで編集して地図を作り上げるというもの
地域によって編集に参加している人の数が違うようで、地図の出来も違ってくるみたいです
自分の住んでる周辺は割と残念な感じだったw
・えれくら!
LEDキューブや金属メッキなどの工作や、Emuduinoの展示をしていました。
Emuduinoというのは、@triringさんが製作したArduinoのエミュレータで、実機なしでArduinoのプログラムを試すことができます
Emuduino書籍化?
・Future Versatile Group/MyDNS.JP
MyDNS.JPとGVCの紹介
GVCというのはハード屋の人とソフト屋の人の間をつないでくれる装置、といった感じですかね
ソフト屋の人がより簡単にセンサーやIOを使えるようにしてくれるような印象
Webアプリとかに連携させてみると面白いかも
セミナー
・「さくらのクラウド」について、社長と企画担当が語る~in広島編~
さくらクラウドの紹介とデモでした
社長自らがデモをやってました
さくらではそういう風習?らしいw
VPSと違って途中で構成を変更したりとかできるらしい(よくわかってない
便利そうだけどVPSと比べるとちょっと割高
自分で使うならVPSで十分かなー
そのうち同じぐらいの値段になるとか言ってたような・・・気のせい?
LT
松屋ネタが素晴らしかった・・・
おかげで迷わず懇親会会場に行くことができましたw
みなさん時間ぴったりでしかもしっかりネタも仕込んであってすごかったです(小並感
懇親会
120分間の食べ飲み放題でしたー
知らない人ばっかりだったのでちょっと緊張しましたが、いろんなお話を聞くことができました
結構話してばっかだったので食べ放題を満喫できなかったのがちょっと残念←
今回の頂き物
アンケートのくじ引きでさくらインターネットのポロシャツを頂きました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