概要
Google Cloud Platfom上でWowhoneypotを構築し、取得したログをStackdriverで閲覧できるようにします。
また、ログをCloudStorageにエクスポートします。
構築
VMインスタンス作成
「Compute Engine」-「VMインスタンス」より、インスタンスを作成します。
今回はf1-micro、Ubuntu18.04で作成しました。
SSH鍵生成
VMインスタンスに接続するためのSSHのカギを生成します。
今回はTeratermを使用しました。Teratermの場合、「設定」-「SSH鍵生成」より作成します。
SSH鍵生成画面でコメントに入力したものがユーザ名となります。
「生成」を実行後、公開鍵と秘密鍵を保存します。
SSH鍵登録
上記で生成した鍵のうち、公開鍵をVMインスタンスに登録します。
GCPのポータル上で、作成したVMインスタンスを選択し、編集から公開鍵を登録します。
GCP側のファイアウォール設定
VMインスタンスにSSHで接続するポートを変更する場合はこの手順を実施します。
「VPCネットワーク」-「ファイアウォール」より、新しくSSHで接続するためのルールを作成します。
ここで「ターゲット」に入力したものが、VMインスタンス側の「ネットワークタグ」に対応します。
構築
VMインスタンスに接続して設定します。
SSHの設定はまだ変更していないので、デフォルトの22番ポートにSSHで接続します。
接続時はSSH鍵生成で入力したユーザ名と秘密鍵を使用します。
投入コマンド
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ufw
sudo ufw default DENY
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp・・・Wowhoneypotで使用するポート、実際の攻撃は80でうけつけます。
sudo ufw allow SSHのポートを変更する場合/tcp
sudo ufw enable
sudo ufw status
以下のファイルで「*filter」より上部に以下の内容を追加します。
この記述で80でアクセスした通信を8080に変更します。
/etc/ufw/before.rules
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
COMMIT
その後、ufwをリロードします。
sudo ufw reload
Wowhoneypotを構築します。
git clone https://github.com/morihisa/WOWHoneypot.git wowhoneypot
cd wowhoneypot/
また、以下の設定方法は別記事の内容を参照して下さい。
- viの設定(矢印キーで操作できない、バックスペースが使えない事への対処)
- SSHのポート変更
- Wowhoneypotのサービス化(サービス化しないと、コンソールを閉じたときにWowhoneypotが停止します。)
Stackdriverへログを送信
GCPのStackdriverでWowhoneypotのログが見れるように設定します。
curl -sSO "https://dl.google.com/cloudagents/install-logging-agent.sh"
sudo bash install-logging-agent.sh
上記実行後、以下のファイルを新規に作成します。
/etc/google-fluentd/conf.d/wowhoneypot.conf
<source>
@type tail
format none
path Wowhoneypotのディレクトリ/wowhoneypot/log/access_log
pos_file /var/lib/google-fluentd/pos/wowhoney-access_log
read_from_head true
tag wowhoneypot
</source>
上記ファイルの「tag」に設定した名前でGCP上ではログをフィルタして確認ができます。
ファイルを作成したら以下のコマンドを実行します。
sudo service google-fluentd restart
ここまで実行すると、GCP上でログを確認することができます。
ログをCloudStorageにエクスポート
GCPの管理コンソール上にあるログビューアでは、ログを最大300件までしかダウンロードできないため、ログを外部にエクスポートする設定を行います。ログのエクスポートには以下の3つの方法があるようですが、今回はGCS (Google Cloud Storage)を使ったエクスポートを行います。
- GCS (Google Cloud Storage)
- BigQuery
- Cloud Pub/Sub
GCSバケット作成
エクスポート先となるGCSのバケットを作成します。
「Storage」-「ブラウザ」より、「バケットを作成」をクリックします。
表示される内容に従ってバケットを作成します。
エクスポートの設定
作成したGCSバケットにログをエクスポートするための設定(シンク)を作成します。
ログビューワの画面上で対象とするログを表示(フィルタ)し、その後、「シンクの作成」よりエクスポート先を設定します。
今回の場合はGoogleCloudStorageがエクスポート先となります。
ログの確認
上記の設定を行うと、CloudStorageに日毎のフォルダが作成され、1時間ごとのログファイルが作成されます。(上記シンク設定で過去24時間を選択した状態)
ログファイルはJSON形式で格納されます。
ログの扱う方法はまだ試行錯誤段階ですが、今は暫定的にCloudShellより以下を実行してみています。
gsutil cat gs://バケットのパス/*.json >> 日毎に集計したファイル
cloudshell dl 上記で作成した集計ファイル
CloudShellでdlコマンドを実行すると、ダウンロードのダイアログが表示されます。