AWSインスタンスへ脆弱性スキャンしてみる

 2020.11.18  株式会社テリロジー 技術統括部

まえがき

みなさま こんにちわ。C&S技術統括部 s-izuです。

度々度々の紹介となりますがInsightVM Rapid7の話をします。

Rapid7 InsightVMをご利用いただきますとオンプレミスの機器だけではなくクラウド上の仮想マシンの脆弱性も検出することができます。

クラウド上の仮想マシンをスキャンする場合に利用するInsightVMのコンポーネントは下記の2つです。

  1. 管理コンソール
  2. スキャンエンジン

管理コンソールとはスキャンエンジンに対してスキャンを命令するとともにスキャンエンジンが調査した脆弱性情報を収集・分析するコンポーネントです。管理コンソールはオンプレミスとクラウドの両方に配置できます。オンプレミスに配置した管理コンソールからクラウドの仮想マシンをスキャンする場合はオンプレミス上のネットワークとクラウド上の仮想ネットワークをVPNで接続する必要があります。

スキャンエンジンとは管理コンソールからの指示に従ってITアセットへ脆弱性スキャンを実行するコンポーネントです。スキャンエンジンはスキャン対象が所属するセグメントに配置します。クラウドの仮想マシンをスキャンする場合は仮想ネットワークにスキャンエンジンを配置します。

またAPI経由で新しく作られた仮想マシンを動的に発見することができます。その場合はEC2の閲覧権限があるアクセスキーとシークレットアクセスキーをご利用いただくことになります。

なお2020年11月現在、InsightVMが対応しているクラウドベンダーはAWS・Azure・GCPです。

今回の記事ではAWSのスキャン方法について案内させていただきます。

作業概要

今回はオンプレミスからVPC上のインスタンスをスキャンいたします。

今回の作業の前提条件は下記です。

作業概要 画像1

AWS脆弱性スキャンの前提条件

作業概要は下記のとおりです。

  1. スキャンエンジンの作成および管理コンソールとのピアリング
  2. スキャンサイトの作成
  3. VPC上の仮想マシンの発見
  4. スキャン

作業概要 画像2

作業概要 画像3

作業概要 画像4

作業概要 画像5

スキャンエンジンの構築とピアリング

まずはじめにスキャンエンジンを作成します。スキャンエンジンとは脆弱性スキャナーの本体です。スキャンエンジンから各仮想マシンに対して脆弱性スキャンを実行します。

スキャンエンジンはAMIとして提供されているのでEC2作成時に「Rapid7」などの単語で検索するとスキャンエンジン用のAMIが見つかります。このスキャンエンジンは管理コンソールと通信できるVPC上に構築します。

スキャンエンジンの構築とピアリング 画像1

ScanEngineのAMIを利用して下記の構成でインスタンスを作成します。下記以外の設定項目についてはデフォルトでかまいません。 

インスタンスタイプ m5.large(最小)
ネットワーク 管理コンソールと通信できるセグメントを含むVPC
サブネット 管理コンソールと通信できるセグメント
セキュリティグループ 全てのICMPの許可(※)
高度な詳細 NEXPOSE_CONSOLE_HOST=<管理コンソールのIP>
NEXPOSE_CONSOLE_PORT=40815
NEXPOSE_CONSOLE_SECRET=<shared secret>

疎通を確認するためにpingを有効化しておいたほうが良いです。スキャンエンジン本体のSSHポートは閉じられているためSSHを使った疎通確認ができません。(余談ですが私はココでハマりました)

スキャンエンジンの構築とピアリング 画像2

 スキャンエンジンはデフォルトだとインスタンス名が空です。従ってインスタンスダッシュボード上のインスタンスタイプとAMIからScanEngineのインスタンスを特定します。このスキャンエンジンに付与されたIPアドレスをひかえておいてください。このIPが管理コンソールへ自動的に登録されています。なおNameタグを利用すればインスタンスに名前を付けることもできます。

スキャンエンジンの構築とピアリング 画像3

 管理コンソールのスキャンエンジンプールへ移動しスキャンエンジンがピアリングされていることを確認します。なお管理コンソールとスキャンエンジンのピアリングには少々お時間が必要です。

スキャンエンジンの構築とピアリング 画像4

スキャンサイトの作成

次にスキャンサイトを作成します。スキャンサイトとはスキャンを実行する時に利用するエンティティのことです。スキャン対象となるIPやスキャン方法などをスキャンサイトに設定します。これは管理コンソール上に作成されます。

コンソールのホーム画面から「サイトを作成」を選択し、サイト設定画面へ移動します。

サイト設定画面で下記の構成でサイトを作成します。下記以外の設定項目はデフォルトでかまいません。

名前 任意
テンプレート Full audit without web spider
エンジン さきほど作ったスキャンエンジンを選択

スキャンサイトの作成

仮想マシンの動的発見

最後にディスカバリースキャンの設定をします。ディスカバリースキャンとはITアセットの動的検出機能のことです。クラウドの場合はAPI経由で仮想マシンを検出します。

管理コンソールの発見接続へ移動し、新規発見接続をクリックします。新規発見接続にて下記の構成でディスカバリースキャンの設定を作成します。

接続タイプ Amazon Web Service Asset Sync
接続名 任意
AWS領域 スキャンエンジンが所属するリージョン
スキャンエンジンはAWSネットワーク内です チェックを入れる
アクセスキー EC2を閲覧できるアクセスキー
シークレットアクセスキー 上記のアクセスキーに対応するシークレットアクセスキー
消費設定 Amazon Web Service Asset Syncアセットを同期をチェック

先ほど作成したスキャンサイトを登録

仮想マシンの動的発見 画像1

仮想マシンの動的発見 画像2

管理コンソールのホーム画面から先ほど作成したスキャンサイトへ移動し、アセットへ仮想マシンのIPが登録されていたら準備完了です。「保存&スキャン」をクリックするとアセットに登録された仮想マシンのIPに対して脆弱性スキャンを実行できます。

仮想マシンの動的発見 画像3

おわりに

以上がInsightVMを利用したAWSインスタンスのスキャン方法の紹介となります。Googleが使用しているファジングツールのOSS化など様々な要因がありますが脆弱性発見数は近年急増しています。手作業による脆弱性管理に限界を感じた方は是非とも弊社へお声掛けください。

脆弱性発見数の推移

脆弱性発見数の推移

ご興味がございましたら以下のページよりお気軽にお問い合わせください。
https://cloudsolution.terilogy.com/contact


RECENT POST「技術情報」の最新記事


技術情報

OCVS・Horizon構築してみた②

技術情報

Sumologicで目にするOpen Telemetry Collectorとは(中編)

技術情報

Sumo Logic アカウントを持っていないユーザへのダッシュボードの共有方法は?

技術情報

Sumo Logic ダッシュボードやフォルダ共有について

AWSインスタンスへ脆弱性スキャンしてみる