ActiveTK's Note

【Docker】SSHのハニーポットを運営してみた。


作成日時 2023/09/30 22:47
最終更新 2023/10/05 22:37


  • まず初めに
  • ハニーポットの設置方法
  • ハニーポットを運営した結果

  • まず初めに

    ハニーポットとは「意図的に脆弱なシステムを運営して、実際に攻撃を受けながらログを収集する」ことです。

    本記事では、sshのハニーポットをdockerとopensshを用いて実装してみましたから、その構築手順やアクセスログをご紹介させて頂きます。

    なお、実行環境はCentOS 7を想定しています。


    ハニーポットの設置方法

    SSHのハニーポットをサーバーに直接設置することもできますが、それではリスクが高いので、dockerを用いて専用の仮想環境を構築します。

    まず適当なディレクトリを作成して、以下のデータを「Dockerfile」という名前で保存して下さい。

    # SSH Honeypot by ActiveTK.
    FROM ubuntu:18.04
    
    RUN apt-get update && apt-get install -y openssh-server
    RUN ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
    RUN apt install -y sudo apache2 tor php nano sl curl
    RUN mkdir /home/activetk
    RUN useradd -m activetk && echo 'activetk:yamada5929' | chpasswd
    RUN chsh activetk -s /bin/bash
    RUN chown -R activetk /home/activetk
    
    RUN echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
    RUN echo 'PermitRootLogin no' >> /etc/ssh/sshd_config
    RUN echo 'AllowUsers activetk' >> /etc/ssh/sshd_config
    RUN echo 'LogLevel VERBOSE' >> /etc/ssh/sshd_config
    RUN echo 'SyslogFacility AUTHPRIV' >> /etc/ssh/sshd_config
    RUN echo 'Match User activetk' >> /etc/ssh/sshd_config
    RUN echo '   X11Forwarding no' >> /etc/ssh/sshd_config
    RUN echo '   AllowTcpForwarding no' >> /etc/ssh/sshd_config
    
    RUN mkdir /home/root
    RUN chmod 733 -R /home/root
    COPY profile /etc/profile
    
    RUN mkdir /var/run/sshd
    CMD ["/usr/sbin/sshd", "-D"]

    また、Dockerfileと同じディレクトリに、以下の内容を「profile」という名前で保存して下さい。

    if [ "${PS1-}" ]; then
      if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
        # The file bash.bashrc already sets the default PS1.
        # PS1='\h:\w\$ '
        if [ -f /etc/bash.bashrc ]; then
          . /etc/bash.bashrc
        fi
      else
        if [ "`id -u`" -eq 0 ]; then
          PS1='# '
        else
          PS1='$ '
        fi
      fi
    fi
    
    if [ -d /etc/profile.d ]; then
      for i in /etc/profile.d/*.sh; do
        if [ -r $i ]; then
          . $i
        fi
      done
      unset i
    fi
    
    nowProcess=`ps aux | grep $PPID | grep sshd | awk '{ print $11 }'`
    if [ "$nowProcess" = sshd: ]; then
      todayDate=`date '+%Y%m%d%H%M'`
      loginUser=`whoami`
      script -afq /home/root/${loginUser}_${todayDate}.log
    fi

    上記のコードでは、ハニーポットのユーザー名を「activetk」、パスワードを「yamada5929」として設定しています。

    また、アクセスしてきたユーザーのログが「/home/root」以下に保存されます。

    二つのファイルが設置できたら、以下のコマンドでビルド/実行して下さい。

    docker build -t honeypot ./
    docker run -d -p 22:22 --hostname="mainserver" --privileged --name honeypot honeypot


    なお、パラメータ「-p」を変更するとハニーポットのポート番号を変更することができます。既に22番を使用している場合には、2222番などを試してみて下さい。

    また、「docker ps -a」からコンテナIDを取得して以下のコマンドを実行すると、仮想環境にrootとしてアクセスできます。

    docker exec -it コンテナID bash

    ハニーポットを運営した結果

    今回は、意図的にX(=Twitter)上にsshのユーザー名とパスワードを公開して、アクセスを監視してみました。

    その結果、3日間で以下のように大量のログが生成されました。

    root@mainserver:/home/root# ls -hl
    total 29M
    -rw-rw-r-- 1 activetk activetk 7.8K Sep 30 22:21 activetk_202309302220.log
    -rw-rw-r-- 1 activetk activetk  172 Sep 30 22:54 activetk_202309302254.log
    -rw-rw-r-- 1 activetk activetk 1.6K Sep 30 22:59 activetk_202309302256.log
    -rw-rw-r-- 1 activetk activetk  349 Sep 30 22:59 activetk_202309302259.log
    -rw-rw-r-- 1 activetk activetk  712 Sep 30 23:00 activetk_202309302300.log
    -rw-rw-r-- 1 activetk activetk  12M Oct  1 00:07 activetk_202309302303.log
    -rw-rw-r-- 1 activetk activetk 2.5M Sep 30 23:46 activetk_202309302333.log
    -rw-rw-r-- 1 activetk activetk  201 Sep 30 23:52 activetk_202309302352.log
    -rw-rw-r-- 1 activetk activetk   66 Oct  1 00:22 activetk_202310010022.log
    -rw-rw-r-- 1 activetk activetk 9.3K Oct  1 00:47 activetk_202310010034.log
    -rw-rw-r-- 1 activetk activetk 308K Oct  1 12:03 activetk_202310011136.log
    -rw-rw-r-- 1 activetk activetk  140 Oct  1 12:12 activetk_202310011212.log
    -rw-rw-r-- 1 activetk activetk 3.1K Oct  1 12:13 activetk_202310011213.log
    -rw-rw-r-- 1 activetk activetk  73K Oct  1 14:55 activetk_202310011417.log
    -rw-rw-r-- 1 activetk activetk 4.5K Oct  1 17:47 activetk_202310011703.log
    -rw-rw-r-- 1 activetk activetk  146 Oct  1 21:41 activetk_202310012141.log
    -rw-rw-r-- 1 activetk activetk 5.6K Oct  2 19:40 activetk_202310021939.log

    catコマンドで一部の履歴を閲覧してみると、以下のように表示されます。


    なお、全てのアクセスログはこちらからダウンロードできます(IPアドレスを省く)。