WOWHoneypotのDocker imageを作ったよ&使うよ

# 概要

WOWHoneypotを簡単に植えられるように、Dockerimageを作りました。これの使い方等をここで説明します。

- https://github.com/hogehuga/wowhoneydocker
- https://cloud.docker.com/u/hogehuga/repository/docker/hogehuga/wowhoney
    - as "hogehuga/wowhoney" docker image

このdocker imageのコンセプトは「なるべく手を加えていない環境とする」です。
その為、ログ分析に必要なものは一切入れていません。今後、自動でまとめたものをSlackに投げる、などのスクリプト等を仕込んだイメージを用意するかもしれません。

確認はある程度したけど、 **バグってたら、すまんな** 。

# 免責事項

本WOWHoneypot docker imageやgithubの情報を基にいかなる損害が八死した場合でも、当方は関知しません。
WOWHoneypot起因の脆弱性による不正侵入などが発生しても、当方は一切関知しません。
自己責任の下で利用ください。

# Quick start

分かっている人は、`docker pull hogehuga/wowhoney` でイメージをを取得して、 `docker run` してください。

そうでなければ、当該githubリポジトリをcloneして、`setup-wow.sh` をたたくと、起動します。

# 利用方法説明

おおよそ、以下の様に利用されることを想定しています。

- githubの`hogehuga/wowhoney`をcloneする
- その中に含まれている `setup-wow.sh` を必要に応じて編集する
- `setup-wow.sh` をたたき、初回起動する
- 以降は、`docker [stop|start]` で適宜利用する


## 1. githubのclone

主に `setup-wow.sh` を使うためにpullします。

構成は以下の様になっています。

- LICENSE
    - ライセンスファイル。WOWHoneypotに合わせてBSDv3にしてある
- README.md
    - 使い方説明。面倒だから英語だけで置いた。
- Dockerfile
    - `hogehuga/wowhoney` なdocker imageの元。
    - 配置したイメージが信用ならん、という場合はこちらで `docker build` してたもれ
- setup-wow.sh
    - 初回設置時にたたけば、WOWHoneypotのコンテナが起動するまでをやってくれるスクリプト
        - `docker pull`と`docker run`するだけの子
        - 但し、ログ出力をDockerホスト側にするとかの設定入れてる。
- start-wow.sh
    - Docker imageを作るときに、イメージ（コンテナ側）で使うスクリプト
        - wowhoneypot を起動するだけのお仕事

作業例

```
$ pwd
/home/hogehuga
$ git clone https://github.com/hogehuga/wowhoneydocker.git
Cloning into 'wowhoneydocker'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 9 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
$ 
```

## 2. 必要に合わせて設定変更する

`setup-wow.sh`には`docker run`時のオプションが含まれています。以下の設定が可能です。

- NATPORT: ポートフォワーディングするポート
    - コンテナでは8080でwowhoneypotが起動しているが、これをホスト側喉のポートに割り当てるかを決める。
    - デフォルトは8080
- LOGDIR: ホスト側へのログ保存先
    - wowhoneypotのログディレクトリは、Dockerホストのディレクトリとbindします。これにより、ログデータはコンテナ上ではなく、Dockerホスト上に配置されます。
    - デフォルトでは、`setup-wow.sh`をたたくユーザのホームディレクトリ上の logsに置きます。（ユーザhogehugaなら、`/home/hogehuga/logs/`）
    - サービス的に起動する等の場合は、`/var/log/`配下等、適宜変えてください
        - 本来は staticなパス に流すべき
- CONTAINERNAME: コンテナの名前
    - `docker run`で作るコンテナの名称。
    - デフォルトはwowhoney。
    - 必要ならホスト名も買えたらいいよ。

作業例

```
$ cd ~/wowhoneydocker
$ vi setup-wow.sh  (変更の必要が無ければ、そのままで)
$ 
```

## 3. 起動する

wowhoneypotのdocker imageを使って起動します。

- `setup-wow.sh` をたたくだけ

先ほど設定変更の際に見た通り、`docker pull`して`docker run`するだけ。

作業例

```
$ ./setup-wow.sh
Using default tag: latest
latest: Pulling from hogehuga/wowhoney
Digest: sha256:b0dc2f8793bef7dc09b1295e18d6caa958058c85028f48c4fb520e165947a953
Status: Image is up to date for hogehuga/wowhoney:latest
docker.io/hogehuga/wowhoney:latest
c7ece94f60c84aee633840c53a1adf75a41501f06412439491a3ed3fe5cb7ceb
$ 
```

## 4. 確認する

`setup-wow.sh` が正常に動けば、コンテナが動いてるはずです。

```
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES
c7ece94f60c8        hogehuga/wowhoney   "/opt/wowhoney/start…"   About a minute ago   Up About a minute   0.0.0.0:8080->8080/tcp   wowhoney
$ 
```

後は通常のコンテナ同様に扱ってください。オーケストレーションは、知らん。こんなもんをk8s使う意味ない。

作業例

```
$ docker stop wowhoney
wowhoney
$ docker start wowhoney
wowhoney
$ ls ~/logs
access_log  wowhoneypot.log
$
```

## 4. そのほか

完全に削除したいよ

- 以下を削除する
    - `rm -rf ~/wowhoneydocker`
    - `docker rm wowhoney`
    - `dokcer rmi hogehuga/wohoney`

docker imageの主な仕様

- wowhoneyユーザで起動してます
    - sudo権限はないので、比較的安全かもしれない
    - `/opt/wowhoney がhome dirにしてある。その下にwowhoneypotをgit cloneしてる。
- 8080ポートで起動している
    - 一般ユーザじゃ特権ポートを使えないので。そもそも、ポートフォワード前提だし。
- OSは Ubuntu:latest
    - これに、python3とgitとvimを入れてる
    - アップデートは各自でヨロ

# 終わりに

ここまで作ってあれば、実験的にハニポを動かすのは楽だと思います。社内やテスト環境での利用想定です。

- インターネットにこのまま公開する場合、作りを理解してからにしましょう
    - `大いなる力には大いなる責任が伴う` という格言があるので。

後は、Dockerホスト側にたまったログをいかに楽しむかに注力する、というコンセプトですね。

書きながら一部ミス等を見つけたりしているので、githubでのpull request/issueは歓迎です。対応できればするし、できなければしばらく放置します。

では、よいログ観察ライフを。