はじめに
近年、顧客情報漏洩やランサムウェア被害などのセキュリティ関連ニュースが頻繁に報道されています。
情報システムを侵害する行為は
さて、AWS、Azure、Google Cloudは、3大クラウドサービスとして広く利用されていますが、これらのサービスはリージョンごとに利用可能なIPアドレスを公開していることをご存知でしょうか?
- AWS:https://
ip-ranges. amazonaws. com/ ip-ranges. json - Azure:https://
www. microsoft. com/ en-us/ download/ details. aspx?id=56519 - Google Cloud:https://
www. gstatic. com/ ipranges/ cloud. json
上記のように、リージョンごとのIPアドレスが公開されている3大クラウドサービスにおいて、日米両リージョンにハニーポットを設置した場合にどのようなデータが収集できるのか、という疑問から本記事を執筆しました。
本記事の構成について
本記事は前編・
ハニーポットとは何か?
ハニーポットとは甘い蜜で蜂を誘うように攻撃者を誘い込み、その行動を観察して攻撃手法やマルウェア等のデータを収集するためのシステムです。
ハニーポットの中でも比較的有名なものにOSSのT-Potがあります。
https://
T-PotのREADMEファイルを確認すると、内部で複数のDockerコンテナを利用して、多くのポートに対して複数のハニーポットを動作させていることがわかります。
また、T-Potには収集されたデータをグラフィカルなUIで確認できるようにKibanaのダッシュボードも付属しており使い勝手が良かったため、今回の調査ではT-Potを利用しました。
T-Potのセットアップに関する注意事項
以降ではT-Potのセットアップ方法について簡単に説明していきます。
詳細なセットアップ方法はT-PotのREADMEに記載されているのですが、特に注意すべき点は以下です。
- システム要件:T-Potを動作させるマシンは、System Requirement に従い、十分なスペック
(たとえばメモリは16GB以上必要です) のマシンを用意する必要があります。 - ポート開放:ハニーポット用のポートへの外部からのアクセスを許可する必要があります。詳細は、Required Ports を参照してください。
- アクセス制限:SSH用の64295番やダッシュボード等の管理画面アクセス用の64297番等に対しては、安全のため許可IPのみアクセスできるようファイアウォールなどを構成してください。
インフラのデプロイ
今回はT-Potを3大クラウドサービスで動かす際にAWSではEC2を、AzureではVirtual Machine(VM)を、Google CloudではCompute Engineを利用しました。
また3大クラウドサービスそれぞれの日米のリージョンについて、日本側は政治や経済の中枢に近い東京リージョンに、米国リージョンについては選定が難しかったのですが、米国の政治や経済と深く関わりがありそうな東海岸かつ、AWSがクラウド事業を開始した際に最初にデータセンターが設置されたとされる米バージニア州を選びました。
なお、上記インスタンス・
https://
基本的には上記リポジトリのREADMEに従い、いくつかの準備をした上で terraform apply するだけで、3大クラウドの日米両リージョンにT-Pot用のインフラをデプロイできるようになっていますので必要に応じてご活用ください。
T-Potのインストール
上記でEC2、Virtual Machine、Compute Engineやネットワーク設定等が完了したらSSHで各インスタンスにアクセスした上でT-Potをインストールします。
今回は手動でT-Potをインストールしますが、たとえば cloud-initなどを利用してT-Potのインストール自体を自動化する手もあります。
基本的には以下手順でインストールスクリプトを実行するだけです。以降ではインストールスクリプトを実行している様子をスクリーンショット付きでご紹介しています。
# パッケージリストを更新してgitをインストール
sudo apt-get update -y && sudo apt-get install -y git
# T-Potのコードを取得(記事執筆時は v24.04.0 にいくつかの修正コミットが追加されたMainのHEADを利用)
git clone https://github.com/telekom-security/tpotce
# T-Potのディレクトリに移動
cd tpotce
# インストールスクリプトを実行
./install.sh
まずインストールスクリプト実行直後に、確認メッセージが表示されるため
そうすると、T-Potのインストールスクリプト経由でAnsible Playbookが実行されるため、この状態でしばらく待ちます。
しばらく待っていると、AnsibleのPlaybook実行が完了します。
そうするとT-Potのインストールタイプの選択画面が表示されるため、今回は通常モードの
インストールモードの選択が完了したら、次にWeb管理画面にアクセスするためのユーザ名とパスワードを聞かれるので適宜入力してください。なお、ここで入力した情報は64297番ポートでT-PotのWeb管理画面にアクセスした際にNginxのBasic認証に使われることになります。
上記のID、パスワードを入力すると、T-Potが内部で利用している各種ハニーポットと関連してDockerイメージのダウンロードが始まります。
すべてのDockerイメージのダウンロードが完了すると、最後にT-Potが利用予定のポートと現在稼働しているサービス間でコンフリクトが発生していないかを確認するための画面が表示されます。
また、この時点でSSH用のポートが22番から64295番に変更されていることが確認できます。内容を確認して問題がなければ再起動してセットアップを完了してください。
なお、画像中の68番ポートと323番ポートは今回T-Potで利用予定のポートとはコンフリクトしていないようだったのでこのまま再起動しました。
備考:T-Potの設定変更について
今回はほぼデフォルト設定のままT-Potを動かしていますが、T-Potはある程度のカスタマイズにも対応しています。
たとえば、T-Potはデフォルト設定だと収集したデータを分析のため外部送信するようになっているのですが、 docker-compose.
また .env ファイルを編集することでの設定変更も可能なのですが、詳しくは公式のREADMEの以下項目をご確認ください。
https://
T-Potの管理画面にアクセス
セットアップ後の動作確認としてT-Potをデプロイしたサーバの64297番にhttpsでアクセスしてみてください。
正しくセットアップできていれば以下のような管理画面が表示されるはずです。
また、上記メニューからAttack Mapのメニューを開くことで、以下のように世界地図を利用したグラフィカルなUIでハニーポットが世界中から攻撃されている様子が確認できるはずです。
上記のAttack Mapが正しく動作していることを確認できたら、次はメニューのKibana > T-Pot からT-Potのダッシュボードを開いてみましょう。
セットアップ直後はまだ十分にデータが収集できていないため以下のようにほとんど空のダッシュボードが表示されるはずです。
もう少し時間が経ち、収集されたデータが増えてくると、以下のようにさまざまな情報が表示されるようになります
前編のまとめ
さて、前編ではハニーポットの概要とOSSのハニーポットであるT-Potのセットアップについてご説明しました。続く後編では実際にT-Potを24時間ほど、各クラウドサービスの日米両リージョンで動かした結果をご紹介していきます。