2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WOWHoneypotのログをkibanaで確認したい

Last updated at Posted at 2022-06-30

ハニーポットを試したく、WOWHoneypotというものを使うことにしました。

WOWHoneypot: 初心者向け! 攻撃者をおもてなしする Web ハニーポット

しかしサーバーからアクセスログを確認する必要があったり、部分的にログがbase64でエンコードされていたり、といった悩みがあったので、kibanaを使って可視化しようといった流れになりました。

構築自体経験が浅く、お座なりな部分もありますが、大目に見てください…

前提

自分はVMwareで構築した後にAWSへ移行という流れをとりました。
今回はVMwareでの構築部分のみ記載していきます。

  • OS: Centos7系
  • メモリ2GB, プロセッサ2推奨
  • NAT設定もお忘れなく

前準備​

インストール

git, python3をインストール
vimは任意で

$ yum -y install git​
$ yum -y install python3
$ yum -y install vim

ファイアウォール設定

8080, 5601, 9200を開けます。

# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --zone=public --add-port=5601/tcp --permanent
# firewall-cmd --zone=public --add-port=9200/tcp --permanent
# firewall-cmd --reload

次に、80 ⇒ 8080へポートフォワード (絶対必要ではないが、ブラウザからアクセスするとき少し楽になる)

ユーザーが80番ポートへアクセスしたとき、8080へ飛ばすよう設定

# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
# firewall-cmd --reload

インストールするもの

  • WOWHoneypot
  • Fluentd (td-agent)
  • elastic search
  • kibana

構成イメージ

ざっくりとですが、こんな感じ。
architecture.png

WOWHoneypot

WOWHoneypotとは

  • 攻撃者をおもてなしする Web ハニーポット
  • 送信元からの HTTP リクエストをそのまま保存するので、​後からじっくりゆっくりログ分析をすることが可能

Github: https://github.com/morihisa/WOWHoneypot​

WOWHoneypot インストール手順

gitからクローンするだけでOK
例:/opt/配下にcloneする場合の流れ

$ cd /opt/
$ git clone https://github.com/morihisa/WOWHoneypot​

opt配下に​「WOWHoneypot」が​あれば問題なし

WOWHoneypot 起動確認

「wowhoneypot.py」を起動​

$ cd /opt/WOWHoneypot
$ python3 ./wowhoneypot.py

下記のようなコンソール画面になるはず
wowstart.png

その後、http://"ipアドレス" へアクセス
下記のような画面が表示されれば成功

wowhttp.png

※バッググラインドで動かしたい場合は下記のサイト参照
https://qiita.com/hogehuga/items/cad931485f58ae487d53

WOWHoneypot アクセスログの確認

ブラウザからアクセスすると、「access_log」にログが書き込まれる

$ tail /opt/WOWHoneypot/log/access_log

すると、Base64でエンコードされている…
Fluentdのプラグインを使うことで、デコードしつつelasticsearchに転送することができるので、その設定をしていきます。

Fluentd

Fluentd(td-agent) とは

fluentdimg.png

  • データ収集ソフトウェア
  • 主にRubyで構成されている
  • 今回インストールする「td-agent」は、Fluentdの安定版​

Fluentd インストール手順

下記のコマンドを入力、yumが実行される

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

インストールされたか確認
# yum list | grep td-agent
td-agent.x86_64  3.8.1-0.el7  @treasuredata

Fluentd プラグインインストール

Elasticsearchへのログ転送, base64をデコードするためのプラグインをインストールする。
td-agentをインストールすると、「td-agent-gem」というコマンドが仕様可能となるので、それでインストールを行う

プラグインを調べるためのサイト

# td-agent-gem install elasticsearch
# td-agent-gem install fluent-plugin-filter-base64-decode

Fluentd 起動確認

systemctlで起動

# systemctl start td-agent
# systemctl enable td-agent

activeになっていれば成功
# systemctl status td-agent

Elasticsearch & kibana

Elasticsearch とは

elasticimg.png

  • 分散検索/分析エンジン
  • ログ分析、フルテキスト検索、セキュリティインテリジェンス、ビジネス分析、およびオペレーショナルインテリジェンスのユースケースに広く使用されている

kibana とは

kibana.png

  • Elasticsearch専用のデータ視覚化ダッシュボードソフトウェア
  • ログの可視化に用いられることが多い

ログ可視化となると、Elasticsearcとkibanaは基本的にセット(あくまで僕のイメージ)。

Elasticsearch kibana インストール手順

Javaのインストール

# yum install java-1.8.0-openjdk-devel -y
# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

Elasticsearch PGPキーのインストール

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Elasticsearch リポジトリの登録

# vim /etc/yum.repos.d/elasticsearch.repo

# 下記を入力し、ファイルを保存
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Elasticsearch kibanaのインストール

まとめてkibanaもインストールしてしまう  
(少し時間がかかる)

# yum install -y --enablerepo=elasticsearch  elasticsearch kibana
  • Kibanaに利用するIPアドレスの設定
    サーバに割り当てられているIPアドレスにアクセスできるよう設定
# vim /etc/kibana/kibana.yml

↓を追加
server.host: "0.0.0.0"

Elasticsearch kibana 起動確認

systemctlで起動
少し時間がかかる

# systemctl start elasticsearch kibana
# systemctl enable elasticsearch kibana

Elasticsearch アクセス

以下のように表示すればOK

# curl localhost:9200

{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "CDwf8sbpTfap9zd7CNDaRw",
  "version" : {
    "number" : "7.15.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "83c34f456ae29d60e94d886e455e6a3409bba9ed",
    "build_date" : "2021-10-07T21:56:19.031608185Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

kibana アクセス

http://"IPアドレス":5601へアクセス

以下のような画面が表示されればOK

kibanaAccess.png


8 ログをkibanaで確認する

  • FluentdでWOWHoneypotのログの取得・フォーマット・デコード
  • 取得したログをElasticsearchへ転送

※WOWHoneypotは、opt配下にクローンした前提で進行

Fluentdの設定

ログを取得する設定を記載。
正規表現などの詳しい説明は割愛。

# vim /etc/td-agent/td-agent.conf

下記のコードを張り付け
<source>
  @type tail
  format /^\[(?<time>[^\]]*)\] (?<clientip>[^ ]*) (?<hostname>[^ ]*) "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<status>[^ ]*) (?<mrrid>[^ ]*) (?<requestbody>[^ ]*)$/
  time_format %Y-%m-%d %H:%M:%S%z
  path /opt/WOWHoneypot/log/access_log
  pos_file /var/log/td-agent/wowhoneypot.log.pos
  tag wowhoneypot-access
</source>

<filter wowhoneypot-access>
  @type base64_decode
  fields requestbody
</filter>

<match wowhoneypot-access>
  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
</match>

--再起動
# systemctl restart td-agent

kibanaからログを参照

kibanaへアクセスし、サイドバーから「Discover」をクリック

kibanaDiscover.png

以下のような画面が表示されると思うので、「Create Index Pattern」をクリック

kibanaIndex.png

Nameに「logstash*」Timestanp fieldに「@timestamp」を選択し、右下の「Create Index Pattern」をクリック

kibanaLogstash.png

その後、WOWHoneypotを起動し、何度かアクセスしてログを取得させる

WOWHoneypotアクセス後、少し時間を置くと、下記のようにログが表示

kibanaLogs.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?