セキュリティ猫の備忘録

セキュリティに関する事柄を備忘録として記していく

Honeypotを植えてみた(備忘録)

ずっと前から運用したいと思っていたハニーポットをようやく構築したので、備忘録として構築手順を残します。

構築環境

ハニーポット構築した際には以下の環境で行いました。

ハニーポット

  WOWhoneypot

・サーバー

  さくらVPS上に設置

  スペック

    メモリ  :512M

    CPU   :1Core

    ストレージ:SSD(20GB)

    OS    :Ubuntu 16.04(amd64)(標準OS)


ハニーポット

今回構築した環境ではハニーポットとして、WOWhoneypotを利用しています。

WOWhoneypotはmorihi-socさんが作成された初心者向けのWebハニーポットです。

github.com


WOWhoneypotの概要は以下のサイトを参照してください。
初心者向けハニーポット WOWHoneypot の紹介 - Speaker Deck

構築手順

ハニーポットは停止・初期化を簡単にするためにDocker上で動かすことにしました。
構築にあたり以下のサイトを参考にしました。
tk-secu.hateblo.jp


【さくらVPS:サーバー】

さくらVPSでサーバーを購入し、

初期設定の際にOSとして「標準OS」の「Ubuntu 16.04(amd64)」を選択。

オプションとして「Ubuntu_DockerCompose」スクリプトを選択することで、Docker環境をプリインストールされた状態でサーバーを使用することができる。


【Dockerfile作成】

コンテナ作成のために以下のDockerfileを作成する。


/opt/<workdir>/Dockerfile

FROM ubuntu:latest

RUN apt-get update && apt-get -y upgrade
RUN apt-get -y install git python3

WORKDIR /root
RUN git clone https://github.com/morihisa/WOWHoneypot.git wowhoneypot
WORKDIR /root/wowhoneypot
CMD ["python3", "wowhoneypot.py"]

【コンテナイメージ作成と実行】

Dockerfileを作成したディレクトリで以下のコマンドでコンテナイメージを作成。

docker build -t <container_image_name>

その後、作成したイメージからコンテナを起動する。

docker run -it -v /home/<user_name>/wowhoneypot/log:/root/wowhoneypot/log -p 80:8080 -d --name <image_name> <container_image_name>

起動したら、ブラウザで「http://<サーバーip or domain>」にアクセスすると、デフォルトのページが表示される。

f:id:nekochanSecurity555:20190317211500p:plain
図1.WOWhoneypot起動の確認

SSH接続の制限

ハニーポットが起動して、これであとは攻撃を待つだけになりました。

しかし、ハニーポットを運用していくうえで一番危惧しなければならないのは、ハニーポットを乗っ取られて、または、利用されて攻撃に加担し第三者に迷惑をかけることです。

いろいろ対策はあるかと思うが、とりあえずは、ハニーポットのサーバーにSSHでの接続は安全に行いたいので、SSH接続の設定は行っておきます。


【rootユーザーでの接続を禁止】

SSH接続はrootユーザーを使わないようにしたいので、ハニーポットサーバーを操作するための一般ユーザーを作っておきます。

#一般ユーザを作成
adduser <local_user>
#一般ユーザのパスワードを設定
passwd <local_user>
#rootユーザでのアクセス終了
exit

SSH設定ファイルを編集してrootユーザーでのSSH接続を禁止にします。

#設定ファイルを編集
vim /etc/ssh/sshd_conf
#次の記述を検索
#PermitRootLogin yes
#次の内容に変更
PermitRootLogin no

編集後、SSHサービスを再起動すると、設定が反映されます。

#sshdを再起動すると設定が有効になる。
systemctl restart sshd.service

【パスワード入力での接続を禁止】

パスワードでのSSH接続を禁止してブルートフォースを受けてもアクセスされないようにしておきます。

そのために、鍵認証接続の設定を行います。

#鍵を作成
cd ~/.ssh
ssh-keygen -f <key file name> -t rsa -b 2048
#鍵をサーバに登録
ssh-copy-id -i ~/.ssh/<key file name>.pub <local_user>@xxx.xxx.xxx.xxx

作成した鍵ファイルはローカルに落としておきましょう。(.pubファイルではない方です)

その後、またsshd_confファイルをいじって、パスワード認証を禁止の設定を行いサービスの再起動を行います。

#下記の設定をnoに設定する。
PasswordAuthentication no 

SSHポート番号の変更】

また、SSHのデフォルトポート番号を22から変更しておく。

#下記の記述を検索。
#Port 22
#ポート番号を変更。
Port xxxxx

設定変更後、サービスの再起動を行う。

また、このままではFireWallではじかれてアクセスできなくなるため、SSHように設定したポート番号に穴をあけておく。

さくらのVPSでは/etc/iptables/iptables.ruleにiptablesの設定が記述されているので設定したsshのポートの部分だけ修正する

#次の内容を検索。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#22ポートを上記で設定したポート番号に変更
-A INPUT -m state --state NEW -m tcp -p tcp --dport xxxxx -j ACCEPT

その後、ルールを反映させる。

更新したiptables.ruleを取り込み

iptables-restore < /etc/iptables/iptables.rule

今後の展望

ハニーポットの運用を開始することができました。

意外と簡単だったので、もっと早くから始めていればとちょっと後悔しています。

現在、ハニポのログを可視化の環境構築を行っていますが、現状手動でログを取り込んでいるので、複数のハニポを立てた時の場合に備えて、Syslogで飛ばせるようにはしたいです。

または、Slackに日時のログを飛ばす設定にするか。。。

週次の分析は少しずつ記事にしていきたいでdす。