柊のセキュリティブログ

柊が、セキュリティ関連の出来事について書きます。柊ブログでは、ブログ記事作成の参考にするためGoogleアナリティクスとCookieを使用しています。

AWS上にハニーポット(T-pot 19.03)を構築する

こんにちは、柊です。
AWSの勉強をしようと思い立ち、AWS上にハニーポット(T-pot 19.03)を構築しました。備忘のため、手順をメモしておきます。

T-pot 19.03について

T-pot 19.03は、Debian(開発版)上で動作するハニーポット集です。Dockerを使ったコンテナ上でさまざまなハニーポットが動作します。

github.com

注意が必要な点は、T-pot 19.03はUbuntuベースからDebianベースに変更されたこと、AWS上での動作はサポートされていない(ときどき応答不能になり、都度AWSマネジメントコンソールからのインスタンス再起動が必要となる問題が報告されている)ことです。
AWS上での動作がサポートされていないことは、構築後にサーバ起動から1時間経過後に応答不能になる事象が発生(再現性あり)し、Gitのissues(クローズ済)で言及されていたのを見つけて気づきました。
ただ、暫定対処方法を試してみたところ、私の環境では現時点(起動から17時間経過)でも動作しています。

AWSの準備

  1. EC2でインスタンスを作成します。私の場合は日本国内にどのような通信が来ているか知りたかったため、東京リージョンで作成することにしました。
    OSは、AWS Marketplaceから「Debian GNU/Linux 9 (Stretch)」を選択します。*1
  2. インスタンスの種類は、t2.large(メモリ8GB)を選択しました。*2
  3. ディスクサイズは、推奨128GBですが64GBで構築しました。
    もしかすると、今後何かしらのチューニングが必要になるかもしれません。
  4. 自宅が固定IP環境の方は、セキュリティグループは、自分のIP("マイIP")からポート22,64294,64295,64297へのTCP通信を許可しておくと良いです。
  5. SSHのための鍵は忘れずにダウンロードしておきましょう。
    なお、AWSマネジメントコンソールからダウンロードする鍵ファイルは拡張子がpemなので、puttysshする人はputtygen.exeでppkファイルに変換が必要です。
  6. DebianサーバにSSHでアクセスします。アカウントはadminです。
  7. タイムゾーンを"Asia/Tokyo"に変更します。
  8. swap領域を作成します。
  9. admin以外のアカウントを作成します。
  10. 新しいアカウントでsudoが実行できるように設定します。
  11. 新しいアカウントを使って、SSHでアクセスし直します。
  12. adminアカウントを無効化します。
    sudo passwd -l admin
  13. 以下のコマンドを実行します。
    sudo apt update
    sudo apt upgrade
    sudo apt install git -y

T-pot 19.03のインストール

  1. ISOからのインストールは難しそうだったので、私はGitからインストールする方式を選びました。まずDebian上でモジュールをGitからダウンロードします。
    git clone https://github.com/dtag-dev-sec/tpotce.git
  2. ホームディレクトリ上にtpotceディレクトリが作成されるので、以下コマンドを実行します。lsを実行しているのは、ファイルの存在を確認するためです。
    cd tpotce
    ls
    sudo ./install.sh --type=user
  3. T-potのエディション選択画面が表示されるので、「Standard」を選択します。
  4. webポータルへのログインに使用するアカウントとパスワードを登録します。
  5. インストールの最後に自動的に再起動します。
    再起動後はSSHの待受ポートが22から64295に変更されるので注意してください。

インストール後

  1. サーバの64295ポートにSSHでアクセスできるか確認します。
  2. AWS上での問題の暫定対処策として、/etc/sysctl.confをviで開き、ファイル末尾の方の以下の3行を以下のように変更します。
    net.ipv6.conf.all.disable_ipv6 = 0
    net.ipv6.conf.default.disable_ipv6 = 0
    net.ipv6.conf.lo.disable_ipv6 = 0
  3. AWS上での問題の暫定対処策として、以下のコマンドを実行します。
    sysctl -w net.ipv6.conf.all.disable_ipv6=0
    sysctl -w net.ipv6.conf.default.disable_ipv6=0
    sysctl -w net.ipv6.conf.lo.disable_ipv6=0
  4. 自分の端末のブラウザから https://サーバのIPアドレス:64294 にアクセスし、システム管理画面にログインできるか確認します。
    なお、アカウントとパスワードは、T-potインストール中に設定したものではなく、Debianのアカウントとパスワードです。
  5. 自分の端末のブラウザから https://サーバのIPアドレス:64297 にアクセスし、T-potインストール中に設定したアカウントとパスワードでログインできるか確認します。
  6. 左ペインから「Dashboard」を選びます。
  7. 中央ペインで「>T-Pot」を選ぶと、T-potのダッシュボードが表示されます。
  8. 以上の確認ができたら、AWSのマネジメントコンソールに移動します。
  9. セキュリティグループ設定において、Debianインスタンスに紐づけているセキュリティグループに、インバウンドルールを追加します。
    内容は、任意の場所からの0-64000ポートへのTCP通信と、任意の場所からの0-64000ポートへのUDP通信です。*3

利用開始

これで利用開始可能です。もし、インスタンスが応答しなくなってしまったら、AWSのマネジメントコンソールのEC2から、インスタンスを再起動してみてください。
なお、T-potのダッシュボードでは、以下のような情報が確認できました。
今後、いろいろな機能を試してみたいと思います。

f:id:hiiragi-security:20200510180531g:plain

Attack map

f:id:hiiragi-security:20200510180937g:plain

ログイン試行のあったuser name

f:id:hiiragi-security:20200510180957g:plain

ログイン試行のあったpassword

*1:T-potインストール時に自動的に10にアップグレードされた気がします。

*2:最初、t2.mediumで構築したのですが、swap領域を作ってもメモリがひっ迫して動作しませんでした。なお私のT-pot環境では、定常的にメモリを5GB程度使用しています。

*3:管理用ポート以外は開放して良いと思いますが、Gitでは64000より上のポートは信頼できるSource IPからのみのアクセスを推奨、となっています

セキュリティベンダー各社の2020年予測

こんにちは。柊です。

セキュリティベンダー各社が2020年の予測を出しているので、この記事ではそれらのリンクをまとめています。

総合すると、2020年のセキュリティトピックは、①AI(ディープフェイクなど)、②フェイクニュース・米国大統領選挙、③中国の動向、④標的型ランサムウェア、⑤5Gのセキュリティ、⑥IoTデバイスのセキュリティ、ということになりそうです。

思ったよりも、2020東京オリンピックパラリンピックに触れているベンダーは少なかったです(サイファーマとNTTデータくらい)。各国の政治や経済に影響がある米国大統領選挙の方が影響が大きいということかな、と私は見ています。