家studyをつづって

IT技術に関することやセキュリティ、ガイドライン等学んだことをつづっていきます。

ハニーポットの構築メモ(その1)

ハニーポットはおとりのサーバであり、そこに行われた攻撃のログを見ることで、攻撃者の手口を学べるものです。

eset-info.canon-its.jp

 

かねてから興味があったので実際に構築してみました。本記事はその構築メモです。

 

実装する機能

  • 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の構築に関しては以下のサイトの手順をもとに行いました。

github.com

 

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が動作し、自身のサーバにアクセスするとおとりの画面(接続するたびに変わります)が表示されるようになります。

f:id:iestudy:20190623094913p:plain

おとり画面の一例

 続きの記事でcowrieの構築以降の手順をまとめています。

iestudy.hatenablog.com

 

その他メモ

ディスクの使用量確認コマンド
du -h / | grep -E '^[0-9]+\.?[0-9]+G'