まえがき
みなさま こんにちわ。C&S技術統括部 s-izuです。
度々度々の紹介となりますがInsightVM Rapid7の話をします。
Rapid7 InsightVMをご利用いただきますとオンプレミスの機器だけではなくクラウド上の仮想マシンの脆弱性も検出することができます。
クラウド上の仮想マシンをスキャンする場合に利用するInsightVMのコンポーネントは下記の2つです。
- 管理コンソール
- スキャンエンジン
管理コンソールとはスキャンエンジンに対してスキャンを命令するとともにスキャンエンジンが調査した脆弱性情報を収集・分析するコンポーネントです。管理コンソールはオンプレミスとクラウドの両方に配置できます。オンプレミスに配置した管理コンソールからクラウドの仮想マシンをスキャンする場合はオンプレミス上のネットワークとクラウド上の仮想ネットワークをVPNで接続する必要があります。
スキャンエンジンとは管理コンソールからの指示に従ってITアセットへ脆弱性スキャンを実行するコンポーネントです。スキャンエンジンはスキャン対象が所属するセグメントに配置します。クラウドの仮想マシンをスキャンする場合は仮想ネットワークにスキャンエンジンを配置します。
またAPI経由で新しく作られた仮想マシンを動的に発見することができます。その場合はEC2の閲覧権限があるアクセスキーとシークレットアクセスキーをご利用いただくことになります。
なお2020年11月現在、InsightVMが対応しているクラウドベンダーはAWS・Azure・GCPです。
今回の記事ではAWSのスキャン方法について案内させていただきます。
作業概要
今回はオンプレミスからVPC上のインスタンスをスキャンいたします。
今回の作業の前提条件は下記です。
作業概要は下記のとおりです。
- スキャンエンジンの作成および管理コンソールとのピアリング
- スキャンサイトの作成
- VPC上の仮想マシンの発見
- スキャン
スキャンエンジンの構築とピアリング
まずはじめにスキャンエンジンを作成します。スキャンエンジンとは脆弱性スキャナーの本体です。スキャンエンジンから各仮想マシンに対して脆弱性スキャンを実行します。
スキャンエンジンはAMIとして提供されているのでEC2作成時に「Rapid7」などの単語で検索するとスキャンエンジン用のAMIが見つかります。このスキャンエンジンは管理コンソールと通信できるVPC上に構築します。
ScanEngineのAMIを利用して下記の構成でインスタンスを作成します。下記以外の設定項目についてはデフォルトでかまいません。
インスタンスタイプ | m5.large(最小) |
ネットワーク | 管理コンソールと通信できるセグメントを含むVPC |
サブネット | 管理コンソールと通信できるセグメント |
セキュリティグループ | 全てのICMPの許可(※) |
高度な詳細 | NEXPOSE_CONSOLE_HOST=<管理コンソールのIP> |
NEXPOSE_CONSOLE_PORT=40815 | |
NEXPOSE_CONSOLE_SECRET=<shared secret> |
※疎通を確認するためにpingを有効化しておいたほうが良いです。スキャンエンジン本体のSSHポートは閉じられているためSSHを使った疎通確認ができません。(余談ですが私はココでハマりました)
スキャンエンジンはデフォルトだとインスタンス名が空です。従ってインスタンスダッシュボード上のインスタンスタイプとAMIからScanEngineのインスタンスを特定します。このスキャンエンジンに付与されたIPアドレスをひかえておいてください。このIPが管理コンソールへ自動的に登録されています。なおNameタグを利用すればインスタンスに名前を付けることもできます。
管理コンソールのスキャンエンジンプールへ移動しスキャンエンジンがピアリングされていることを確認します。なお管理コンソールとスキャンエンジンのピアリングには少々お時間が必要です。
スキャンサイトの作成
次にスキャンサイトを作成します。スキャンサイトとはスキャンを実行する時に利用するエンティティのことです。スキャン対象となるIPやスキャン方法などをスキャンサイトに設定します。これは管理コンソール上に作成されます。
コンソールのホーム画面から「サイトを作成」を選択し、サイト設定画面へ移動します。
サイト設定画面で下記の構成でサイトを作成します。下記以外の設定項目はデフォルトでかまいません。
名前 | 任意 |
テンプレート | Full audit without web spider |
エンジン | さきほど作ったスキャンエンジンを選択 |
仮想マシンの動的発見
最後にディスカバリースキャンの設定をします。ディスカバリースキャンとはITアセットの動的検出機能のことです。クラウドの場合はAPI経由で仮想マシンを検出します。
管理コンソールの発見接続へ移動し、新規発見接続をクリックします。新規発見接続にて下記の構成でディスカバリースキャンの設定を作成します。
接続タイプ | Amazon Web Service Asset Sync |
接続名 | 任意 |
AWS領域 | スキャンエンジンが所属するリージョン |
スキャンエンジンはAWSネットワーク内です | チェックを入れる |
アクセスキー | EC2を閲覧できるアクセスキー |
シークレットアクセスキー | 上記のアクセスキーに対応するシークレットアクセスキー |
消費設定 | Amazon Web Service Asset Syncアセットを同期をチェック |
先ほど作成したスキャンサイトを登録 |
管理コンソールのホーム画面から先ほど作成したスキャンサイトへ移動し、アセットへ仮想マシンのIPが登録されていたら準備完了です。「保存&スキャン」をクリックするとアセットに登録された仮想マシンのIPに対して脆弱性スキャンを実行できます。
おわりに
以上がInsightVMを利用したAWSインスタンスのスキャン方法の紹介となります。Googleが使用しているファジングツールのOSS化など様々な要因がありますが脆弱性発見数は近年急増しています。手作業による脆弱性管理に限界を感じた方は是非とも弊社へお声掛けください。
ご興味がございましたら以下のページよりお気軽にお問い合わせください。
https://cloudsolution.terilogy.com/contact