ハニーポットはおとりのサーバであり、そこに行われた攻撃のログを見ることで、攻撃者の手口を学べるものです。
かねてから興味があったので実際に構築してみました。本記事はその構築メモです。
実装する機能
- Webサーバに対する攻撃の観察→wowhoneypotを使用
- SSHのアカウントに対する攻撃の観察→cowrieを使用
- ポートスキャンの観察→suricataを使用
サーバの環境
さくらのVPS
- CPU:2コア
- メモリ:1GB
- ストレージ:30GB
- OS:Ubuntu18.04
構築手順
0.事前の設定
サーバ環境の事前の設定として以下の操作を実行しました。
0-1.アップデート関連(さくらVPSのubuntuを16→18にアップデート)
sudo apt-get update
sudo apt-get upgrade
sudo apt dist-upgrade
sudo do-release-upgrade
0-2.日本語環境の設定
sudo apt-get install language-pack-ja
sudo update-locale LANG=ja_JP.UTF-8
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
0-3.vi環境の設定
viの設定ファイル作成と編集
vi ‾/.vimrc
set nocompatible
set backspace=indent,eol,start
0-4.SSH環境の設定(管理用)
管理用のSSHは鍵認証とし、パスワード認証を禁止しました。
- TeraTerm上で鍵生成
「設定」-「SSH鍵生成」より、生成した公開鍵(rsa_id.pub)と秘密鍵(rsa_id)を保存 - ubuntuに公開鍵を登録
rsa_id.pubをubuntuにアップロードし、authorized_keysとする。
→mv id_rsa.pub /home/ubuntu/.ssh/authorized_keys
※すでにauthorized_keysがある場合は、上記のコマンドのように上書きではなく、追記するようにしてください。 - パスワード認証の禁止
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes → PasswordAuthentication no に変更
- 管理用SSH接続ポートの変更
cowrieでは22番ポートに来る攻撃を見たいので、管理用のSSHの待ち受けポートを変更します。ポートの変更に合わせて、ファイアウォールの設定を合わせて実施します。
※理由がわかっていませんが、この後のWowhoneypot構築手順にあるufwの設定だけではポートが解放されずiptablesの編集・再読み込みを行っています。
sudo vi /etc/iptables/iptables.rules
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 管理用SSH -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
sudo iptables-restore < /etc/iptables/iptables.rules
※2222はcowrieの待ち受けポートです。
※8080はwowhoneypotの待ち受けポートです。
0-5.cronのログを表示させる
Ubuntuでは初期の状態だとcronの実行ログが表示されません。以下の設定ファイルを修正します。
sudo vi /etc/rsyslog.d/50-default.conf
#cron.* /var/log/cron.logの#を取る
sudo service rsyslog restart
1.Wowhoneypotのインストール
Wowhoneypotの構築に関しては以下のサイトの手順をもとに行いました。
1-1.実行したコマンド
ファイアウォール関連
sudo ufw default DENY
sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
sudo ufw enable
sudo vi /etc/ufw/before.rules
※ 「*filter」より前に下記の5行を追記する。
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
-A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2222
COMMIT
※cowrie用のポート変換(22→2222)も記載しています。
sudo ufw reload
Wowhoneypotインストール関連
cd ~/
sudo apt-get install git
git clone https://github.com/morihisa/WOWHoneypot.git wowhoneypot
Wowhoneypotサービス化
vi wowhoneypot.sh
#!/bin/bash
cd /home/ユーザ名/wowhoneypot・・・gitより取得したwowhoneypotのディレクトリ
/usr/bin/python3 /home/ユーザ名/wowhoneypot/wowhoneypot.py・・・実行コマンド
chmod +x wowhoneypot.sh
systemctlで扱えるようにします。
vi /etc/systemd/system/wowhoneypot.service
[Unit]
Description=WoWHoneypot daemon
Documentation=https://github.com/morihisa/WOWHoneypot
[Service]
ExecStart = 上記のシェルのパス/wowhoneypot.sh
ExecRestart = /bin/kill -WINCH ${MAINPID} ; 上記のシェルのパス/wowhoneypot.sh
ExecStop = /bin/kill -WINCH ${MAINPID}
Restart = no
Type = simple
User = ユーザ名
Group = グループ名
[Install]
WantedBy = multi-user.target
sudo chmod 755 /etc/systemd/system/wowhoneypot.service
systemctl enable wowhoneypot.service
systemctl start wowhoneypot.service
ここまで実施するとWowhoneypotが動作し、自身のサーバにアクセスするとおとりの画面(接続するたびに変わります)が表示されるようになります。
続きの記事でcowrieの構築以降の手順をまとめています。
その他メモ
ディスクの使用量確認コマンド
du -h / | grep -E '^[0-9]+\.?[0-9]+G'