Raspberry Piをハニーポットに(kippo)

More than 3 years have passed since last update.


はじめに

東北情報セキュリティ勉強会に参加してハニーポットを設置したいと思ったので導入まで.

勉強会についてはWordPressの方に書いた.

第11回東北情報セキュリティ勉強会にいきました.#thksec | Tanakaxaの日常


kippoとは

sshっぽく振る舞うハニーポットみたい.

コマンドもだいぶ制限されているようなので,ある程度安全に設置できるかな?と思い選択.

(最も安全なのは設置しないことだが・・・)


使ったもの


  • Raspberry Pi Model B+本体

  • MicroSDカード16GB(こんなにいらない)

  • LANケーブル

  • HDMIケーブル

  • キーボード・マウス


初期設定

OSはRaspbianを使用.

Raspberry Pi公式サイトから適当に落として適当にSDカードに焼く.

そのあと起動したら適当に初期設定.


  • Expand Filesystem

  • Change Timezone

  • Change Keyboard Layout

以上の3つだけ設定.Piのパスワード変更もするべきだろうが,あとでユーザごと消し去ったので今回は未変更.

このあたりは"Raspbian 初期設定"で検索したらたくさんヒットすると思います.


apt-getで更新

$ sudo apt-get update

$ sudo apt-get upgrade


kippoの導入


digitalOceanクラウド上に安く簡単にkippoハニーポットを構築する | 徳丸浩の日記


とても参考になった徳丸さんのブログ.これに沿ってやればおk.


ユーザの設定


rootのパスワードの設定

$ sudo passwd



普段使うユーザを追加・sudoを許可

$ sudo adduser <username>

$ sudo gpasswd -a <username> sudo

ここでpiからexitして上記で追加したユーザでログイン.


piを消し去る

$ sudo deluser -r pi



kippoで使うユーザを追加

$ sudo adduser kippo



sshdの設定

kippoが22番ポートを使用するため普段使用するポート番号を変更.

例では10022になっているが10022って結構安直?


sshd_configの設定

$ sudo vi sshd_config

(略)
# What ports, IPs and protocols we listen for
Port 10022 ←port番号の変更
(略)
# Authentication:
LoginGraceTime 120
PermitRootLogin no ←ルートでのログインを禁止
StrictModes yes

$ sudo service ssh restart



必要なモジュールをインストール

徳丸さんのブログにも書いてあるが,下2つはどこかの段階で追加されてる模様.


必要なモジュールをインストール

$ sudo apt-get update

$ sudo apt-get -y install python-crypto
$ sudo apt-get -y install python-twisted
$ sudo apt-get -y install python-zope.interface
$ sudo apt-get -y install python-pyasn1


kippoのインストール・設定

kippoユーザに変更して本体をダウンロード,設置.

とりあえずテキストログで吐き出す.


kippoをダウンロード・展開

$ wget http://kippo.googlecode.com/files/kippo-0.8.tar.gz

$ tar xf kippo-0.8.tar.gz


kippoの設定

$ cd kippo-0.8/

$ vi kippo.cfg
(略)
[database_textlog] ←コメントアウトを外す
logfile = kippo-textlog.log ←こいつも

これでkippo本体の導入は完了.


kippoを起動する

kippoは2222番ポートを使用しているのでiptablesで22番ポートからリダイレクトする.

sudoを使うため権限のあるユーザから.

鯖を再起動するたびにこいつを叩くより,起動時に自動で設定を読み込んだほうが楽.


22番ポートから2222番ポートにリダイレクト

$ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j REDIRECT --to-port 2222


あとはkippo本体を起動する.この時はkippoのユーザになっていなければならない.


kippoを起動

$cd ~/kippo-0.8/

$ ./start.sh
Starting kippo in background...Loading dblog engine: textlog
Generating RSA keypair...
done.
$

起動に20秒ぐらいかかるかも.

あとは22番ポートにroot(pass:123456)でログインしてやってそれっぽい動きをすればおk.

お疲れ様でした.


kippoの終了

プロセスを殺す.


pidを調べてkill

$ sudo cat kippo.pid

<pid>
$ sudo kill <pid>


ログをmysqlに保存し,データをKippo-Graphで可視化

テキストログではいろいろともったいないので,Kippo-Graphで可視化する.


Kippo + Kippo-Graph のインストール手順 その2 - shota_61の学習日記



MySQLの導入


MySQLのインストール

$ sudo apt-get install mysql-server


インストール途中でMySQLのrootのパスワードを聞かれるので設定.

インストールが終わったらkippo用のユーザを作成する.

以下の例では次の設定となる.

ユーザ名:kippo_username

パスワード:kippo_passwd

データベース名:kippo


MySQLにkippo用のユーザを追加,権限の設定

$ mysql -u root -p

mysql > create user 'kippo_username'@'localhost' identified by 'kippo_passwd';
mysql > grant all on kippo_username.* to 'ippo_username'@'localhost' identified by 'kippo_passwd';
mysql > quit;


kippoユーザでデータベースの作成,テーブルの作成

$ cd ~/kippo-0.8/doc/sql/

$ mysql -u kippo -p
mysql > create database kippo;
mysql > use kippo;
mysql > source mysql.sql;
mysql > show tables;
+-----------------+
| Tables_in_kippo |
+-----------------+
| auth |
| clients |
| downloads |
| input |
| sensors |
| sessions |
| ttylog |
+-----------------+
7 rows in set (0.00 sec)

mysql > quit;



kippoのログ出力先を変更

kippo.cfgを書き換え,データベースにログが出力されるようにする.


出力先をデータベースに設定

$ cd ~/kippo-0.8/

$ vi kippo.cfg
(略)
[database_mysql] ←コメントアウトを外す
host = localhost ←同上
database = kippo ←コメントアウトを外しデータベース名に変更
username = kippo_username ←コメントアウトを外しMySQLのユーザ名に変更
password = kippo_passwd ←コメントアウトを外しMySQLのパスワードに変更
port = 3306 ←コメントアウトを外す
(略)
#[database_textlog] ←コメントアウト
#logfile = kippo-textlog.log ←同上

あとはkippoを殺して再起動したら終了,のはずだったのだがMySQLdbがないと怒られるのでインストール.


MySQLdbのインストール

$ sudo apt-get -y install python-mysqldb


これでできた.


kippo-Graphの導入


Kippo-Graph - BruteForce Lab's Blog


これもここに書いてあるとおりにやれば終わる.

情報が簡単に手に入る良い時代だ.


必要なモジュールをインストールしてapache2を再起動

$ sudo apt-get update && apt-get install -y libapache2-mod-php5 php5-mysql php5-gd php5-curl

$ sudo /etc/init.d/apache2 restart


Kippo-Graph本体をダウンロードし,/var/www/に設置

$ wget http://bruteforce.gr/wp-content/uploads/kippo-graph-1.3.tar.gz

$ sudo mv kippo-graph-1.3.tar.gz /var/www
$ cd /var/www
$ sudo tar zxvf kippo-graph-1.3.tar.gz
$ sudo mv kippo-graph-1.3 kippo-graph
$ cd kippo-graph
$ sudo chmod 777 generated-graphs


Kippo-Graphの設定

$ cd /var/www/kippo-graph/

$ cp config.php.dist config.php
$ sudo vi config.php
(略)
#You will have to change the following four definitions
#from the default values to the correct ones, according
#to your MySQL server instance. When you installed Kippo
#and configured MySQL logging, you should have created
#a new MySQL server user just for this job.
define('DB_HOST', 'localhost');
define('DB_USER', 'kippo_username'); ←MySQLのユーザ名に変更
define('DB_PASS', 'kippo_passwd'); ←MySQLのパスワードに変更
define('DB_NAME', 'kippo');
define('DB_PORT', '3306');

あとはブラウザから<鯖のIPアドレス>/kippo-graph/を叩いてやれば表示されるはずです.

お疲れ様でした.

Screenshot from 2015-01-18 22:27:49.png


おわりに

導入までは簡単にできた.

ただ,実際に外部に公開するとなると


  • DMZ

  • ファイアウォール

  • Kippo-Graphで外部から見えてはいけないもののパーミッションをいじる

  • いっそのことKippo-Graphをローカル外から見えないようにする

  • 万が一のことがあった時のための対処を調べておく

  • 万が一に気づけるように定期的にメンテナンスする

あたりを検討しなければならない.(実際にはもっと多いはず・・・)

面倒ではあるが,色々と調べつつ早いうちに公開してお客様を迎えられるようにしたい.


Qiita

初めて使ってみましたが思ってた以上に書きやすくて驚いた.

これはまた,WordPressから移動するかもしれない・・・