WoWHoneypotのaccess_logをFluentdでBigQueryに入れる(base64デコード)

公開日:2019-01-20
最終更新:2019-01-20

@morihi_socさんの本や講演を聞いて、ハニーポットに興味を持ったというのもあり、WoWHoneypotでハニーポットしてみます

Github:WOWHoneypot

で、動かしてみると、すごい攻撃は来るんだけど、access_logのリクエストの詳細をbase64エンコードしているテキストログなので、これをテキストのまま分析するのは大変だなぁと思って、fluentdとBigQuery使うことにしました

動作環境は ubuntu18.04 です

事前準備

Fluentdをインストール
Ubuntu 16.04.3 LTSにtd-agent3(Fluentd v1.0)をインストールする。2018-03-01

WoWHoneypotの設定

githubに記載されている通りの内容でok
ufwを有効にして、80ポートから8080に転送するNATを入れる
外部公開ポート(80番)からWoWHoneypotがListenするポート(8080番)へ転送する設定

$ sudo ufw default DENY  
$ sudo ufw allow 80/tcp  
$ sudo ufw allow 8080/tcp  
$ sudo ufw allow xxxx/tcp # SSHのポートを指定する  
$ sudo ufw enable  
$ sudo vi /etc/ufw/before.rules  
※ 「*filter」より前に下記の4行を追記する。  
———————————————————————————  
*nat  
:PREROUTING ACCEPT [0:0]  
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080  
COMMIT  
———————————————————————————  
$ sudo ufw reload  
$ cd ~/  
$ git clone https://github.com/morihisa/WOWHoneypot.git wowhoneypot

起動/停止用にスクリプト作るのがベター

BigQueryの設定

GCPにてプロジェクトを作成し、BigQueryを準備する

Fluentdの設定

認証用JSONの配置

先ほど作成した認証用JSONを配置する
今回は/tmp以下に gcp_key.json というファイル名で配置

BIgQueryとbase64デコードのプラグインをインストール

fluent-plugin-bigqueryのプラグインをインストール
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-bigquery

fluent-plugin-filter-base64-decodeのプラグインをインストール
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-filter-base64-decode

Fluentdの設定ファイルを編集

td-agent.confの最下部に下記を追記

$ sudo vi /etc/td-agent/td-agent.conf  
-----------------  
# WoWHoneypot  
<source>  
  @type tail  
  path WoWHoneypotのアクセスログ  
  tag wowhoneypot.access  
  pos_file /var/log/td-agent/wowhoneypot.pos  
  format /^\[(?<time>[^\]]*)\] (?<clientip>[^ ]*) (?<hostname>[^ ]*) "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<status>[^ ]*) (?<mrrid>[^ ]*) (?<request>[^ ]*)$/  
  time_format %Y-%m-%d %H:%M:%S%z  
  read_from_head true  
</source>  

# request 部分のbase64デコード  
<filter wowhoneypot.access>  
  @type base64_decode  
  fields request  
</filter>  

# BigQueryへのストリーミング設定  
<match wowhoneypot.access>  
  @type bigquery_insert  

  auth_method json_key  
  json_key /tmp/gcp_key.json  

  project プロジェクト名  
  dataset データセット名  
  auto_create_table true  
  table wowhoneypot_access_%Y%m%d  

  <buffer time>  
    @type file  
    path /var/log/td-agent/bigquery  
    timekey 1d  
  </buffer>  

  <inject>  
    time_key time  
    time_type string  
    time_format %Y-%m-%d %H:%M:%S  
  </inject>  

  schema [  
    {"name": "time", "type": "TIMESTAMP"},  
    {"name": "clientip", "type": "STRING"},  
    {"name": "hostname", "type": "STRING"},  
    {"name": "method", "type": "STRING"},  
    {"name": "path", "type": "STRING"},  
    {"name": "status", "type": "INTEGER"},  
    {"name": "mrrid", "type": "STRING"},  
    {"name": "request", "type": "STRING"}  
  ]  
</match>

起動

WoWHoneypotとFluentdを起動する

BigQueryを確認する

あとはSQLで煮るなり焼くなり

参考にした記事

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
メモ書きを晒しておけば、誰かの役にたつかも?

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする