WOWHoneypotのログを分析してみた - 導入編

このブログは、数年前にN高等学校を卒業し株式会社ArmorisにやってきたアルバイトKaepiが書いています。

あるもりすぶろぐの内容は個人の意見です。

概要

今回はGCP(Google Cloud Platform)のVMインスタンス(無料枠)にWOWHoneypotを設置し、そのログをElasticsearchで分析します。
今回の分析にはドメインが必要なので、実践される方はドメインの取得とネームサーバーの変更が必要です。

WOWHoneypotについて導入から分析まで全3回に分けて投稿します。
1. WOWHoneypotのログを分析してみた - 導入編(今回)
2. WOWHoneypotのログを分析してみた - Logstash編
3. WOWHoneypotのログを分析してみた - 分析編

github.com

目次

  1. VMインスタンスの構築
  2. 構築したVMインスタンスssh接続をする
  3. ドメインの設定とSSL/TLS対応
  4. nginxの設定
  5. WOWHoneypotの構築

構築

VMインスタンスの構築

GCPVMインスタンスGoogleがホストするクラウドサービスの仮想マシンのことです。
VMインスタンスの簡単な設定を済ませるとすぐに利用できるので、手軽にサーバーを用意することができます。

無料枠についてはこちらの説明を見て下さい。

新しいプロジェクトを作成し、左側のメニューからCompute Engine->VMインスタンスを開きます。

リージョン

  • リージョン -> us-west1(オレゴン)
  • ゾーン -> ws-west1-b

マシンの構成

  • マシンファミリー -> 汎用
  • シリーズ -> E2
  • マシンタイプ -> e2-micro (2 vCPU, 1GBメモリ)

ブートディスク

  • OS -> Ubuntu
  • バージョン -> Ubuntu 18.04 LTS
  • ブートディスクの種類 -> バランス永続ディスク
  • サイズ(GB) -> 30

ファイアウォール

以上の設定をしてVMインスタンスの作成をします。

構築したVMインスタンスssh接続をする

今回ssh接続するためにtera termを使用します。
tera termの設定からSSH鍵生成を開き、生成した2つの鍵を保存します。
次にGCP側に公開鍵(id_rsa.pub)を登録します。
GCPコンソールの左側のメニューからメタデータを開き、SSH認証鍵に公開鍵を設定します。
VMインスタンスのページに戻り、作成したインスタンスの外部IPを調べてメモしておきます。
tera termを開き、ホストIPを入力したらOKで次に進み、ユーザー名と秘密鍵のパスを入力すると接続することができます。

ドメインの設定とSSL/TLS対応

GCPのコンソールから、ネットワークサービスのCloud DNSを開きます。

ゾーンを作成

  • ゾーン名 -> 任意の名前
  • DNS名 -> 使用するドメイン (例: test.example)

作成ボタンでゾーンを作成します。
Cloud DNSの画面に戻ったら、作成したゾーン名を開いてレコードセットを追加します。
IPv4アドレスの入力欄に作成したVMインスタンスの外部IPを設定してレコードセットを作成します。

ネームサーバーの登録

ドメインレジストラ側の設定画面でNSレコードを設定する。
登録するNSレコードは先程作成したゾーンのレコードセットにNSレコードがあるのでこれをコピーする。
※この作業はドメインレジストラごとに違うので、わからない場合は調べながら行ってください。

Let's Encryptで証明書発行

Let's Encryptのクライアント(certbot)を使って、SSL/TLSの対応をします。
Let's Encryptとは、HTTPSを普及させる事を目的としたプロジェクトで、証明書の発行を完全に自動化することで無料で手軽にSSL/TLS対応ができます。

$ sudo apt update
$ sudo apt install -y certbot
$ sudo certbot certonly --standalone -t

その後は指示に従って情報を入力していきます。
生成された鍵は/etc/letsencrypt/live/ドメイン名/に保存されています。

Nginxの設定

$ sudo apt install -y nginx

Nginxをインストールしたら、発行した証明書のパスをnginx.confに記入します。

$ sudo vim /etc/nginx/nginx.conf

##
# SSL Settings
##
~
# 以下を追記
ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;

続いて、リバースプロキシを作っていきます。

$ sudo vim /etc/nginx/conf.d/proxy.conf

server {
    listen 80;
    server_name ドメイン;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name ドメイン;
    real_ip_header proxy_protocol;
    location / {
        proxy_pass http://localhost:8080;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

この設定では、http(80)で接続して来たらhttps(443)にリダイレクトするサーバーと、受け取ったリクエストをWOWHoneypot(8080)に転送するサーバーの2つがあります。
ただし、nginxでリバースプロキシをすることでWOWHoneypotが受け取る接続元IPがリバースプロキシのIPになってしまうため、X-Real-IPヘッダーを追加することで本当の接続元IPを記録できるようにします。

$ sudo systemctl restart nginx

nginxを再起動して構築は完了です。

WOWHoneypotの構築

github.com

Welcome to Omotenashi Web Honeypot(WOWHoneypot)は、簡単に構築可能で、シンプルな機能で動作を把握しやすくした、サーバ側低対話型の入門用 Web ハニーポットです。 ルールベースのマッチ&レスポンス機能により、攻撃者に気持ちよく攻撃してもらい、得られるログの幅を広げることができます。 送信元からの HTTP リクエストをそのまま保存するので、後からじっくりゆっくりログ分析をすることが可能です。

インストール

$ git clone https://github.com/morihisa/WOWHoneypot.git wowhoneypot

サービスの作成

WOWHoneypotを24時間稼働させたいので、systemdを使ってサービスを作成します。
まずWOWHoneypot実行用のシェルスクリプトを用意します。

$ vim wowhonypot.sh

#!/bin/bash
cd /home/ユーザー名/wowhoneypot
/usr/bin/python3 /home/ユーザー名/wowhoneypot/wowhoneypot.py

$ sudo chmod 755 wowhoneypot.sh

systemdのサービスを作成します

$ sudo vim /etc/systemd/system/wowhoneypot.service

[Unit]
Description=WOWHoneypot daemon
Documentation=https://github.com/morihisa/WOWHoneypot

[Service]
ExecStart = /home/ユーザー名/wowhoneypot.sh
ExecRestart = /bin/kill -WINCH ${MAINPID} ; /home/ユーザー名/wowhoneypot.sh
ExecStop = /bin/kill -WINCH ${MAINPID}
Restart = no
Type = simple

[Install]
WantedBy = multi-user.target
$ sudo systemtl enable wowhoneypot.service
$ sudo systemtl start wowhoneypot.service

以上で今回の作業は終わりです。

まとめ

今回はGCPVMインスタンスにWOWHoneypotとnginxのリバースプロキシを構築しました。
次回のLogstash編では、WOWHoneypotのアクセスログを分析しやすいようにLogstashを使って情報の加工と取得を自動化していきます。