Honeypotを植えてみた(備忘録)
ずっと前から運用したいと思っていたハニーポットをようやく構築したので、備忘録として構築手順を残します。
【構築環境】
ハニーポット構築した際には以下の環境で行いました。
WOWhoneypot
・サーバー
さくらVPS上に設置
スペック
メモリ :512M
CPU :1Core
ストレージ:SSD(20GB)
【ハニーポット】
今回構築した環境ではハニーポットとして、WOWhoneypotを利用しています。
WOWhoneypotはmorihi-socさんが作成された初心者向けのWebハニーポットです。
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>」にアクセスすると、デフォルトのページが表示される。
【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