Cowrieのログをデータベースに出力する

SSH/Telnetに特化した低対話型サーバ側ハニーポットであるCowrieを導入してから4ヶ月ほどが経ちました.Cowrieでは毎日1,000件以上のサイバー攻撃を観測しており,かなり楽しくログ分析を行っています.
CentOS7にハニーポットCowrieを導入する

今までは主にjson形式のログを分析に利用していましたが,導入記事で紹介したようにCowrieはデータベースと連携を行い,ログをデータベースに出力することも可能となっています.データベースにログを出力することでまた違った視点からログ分析を行うことや,ログを扱うことができます.

さらにデータベース連携を行うことで,Cowrieの前身的なハニーポットであるKippoを可視化するKippo-Graphといったモジュールを用いてCowrieのログを可視化することが可能となっているようです.(Kippo-Graphについては当ブログでは検証を行っていません)
CowrieとKippo-Graphの連携方法

今回は実際にCowrieのログをデータベースに出力する手法をまとめておきたいと思います.

CowrieとMariaDBの連携

今回は連携を行うデータベースですが,CentOS7から推奨されているMariaDBを使用していきたいと思います.

MariaDBの導入と設定

MariaDBのインストール

# yum install mariadb mariadb-server mariadb-devel

MariaDBの自動起動設定と起動

# systemctl enable mariadb
# systemctl start mariadb

MariaDBの初期設定

# /usr/bin/mysql_secure_installation

Cowrie用のユーザ作成と権限の付与

# su cowrie
$ mysql -u root -p    // MariaDBのrootパスワードを入力
[MariaDB]> CREATE DATABASE cowrie;
[MariaDB]> GRANT ALL ON cowrie.* TO 'cowrie'@'localhost' IDENTIFIED BY 'PASSWORD HERE';
[MariaDB]> FLUSH PRIVILEGES;
[MariaDB]> exit

Cowrieの設定

必要なライブラリのインストール

$ source cowrie/cowrie-env/bin/activate
(cowrie-env)$ pip install mysqlclient
$ deactivate

Cowrie用のデータベースを作成

$ cd ~/cowrie/doc/sql/
$ mysql -u cowrie -p    // MariaDBのcowrieパスワードを入力
[MariaDB]> USE cowrie;
[MariaDB]> source mysql.sql;
[MariaDB]> exit

Cowrieの設定を変更

$ vim ~/cowrie/cowrie.cfg
[output_mysql]
host = localhost
database = cowrie
username = cowrie
password = PASSWORD HERE
port = 3306
debug = false

CowrieとMariaDBの連携を確認

Cowrieのログを確認

$ sudo systemctl restart cowrie
$ tail ~/cowrie/log/cowrie.log
2018-01-18T19:03:32+0900 [-] Loaded output engine: jsonlog
2018-01-18T19:03:32+0900 [-] Loaded output engine: mysql
...
2018-01-18T19:03:32+0900 [-] Ready to accept SSH connections
...
2018-01-18T19:03:32+0900 [-] Ready to accept Telnet connections

実際にデータベースを確認

一度Cowrieにログインを行った後,データベースのログを確認します.

$ mysql -u cowrie -p    // MariaDBのCowrieパスワードを入力
[MariaDB]> USE cowrie;
[MariaDB]> SELECT * FROM auth;
+----+--------------+---------+----------+----------+---------------------+
| id | session      | success | username | password | timestamp           |
+----+--------------+---------+----------+----------+---------------------+
|  1 | 3260e024ddf4 |       1 | root     | !123456  | 2018-01-18 19:07:27 |
+----+--------------+---------+----------+----------+---------------------+
1 row in set (0.00 sec)

[MariaDB]> exit

おわりに

これでCowrieとMariaDBの連携は以上になります.
json形式とはまた違ったフォーマットでログが出力されるので,目的に応じて分析時に利用するログを使い分けるのがいいと思います.特に分析結果を可視化する場合は,データベースを利用する方が向いているのかなぁと思っています.

参考文献

https://github.com/micheloosterhof/cowrie/tree/master/doc/sql