インフラソリューション本部の C-C-Crab です。
今回は自動脆弱性管理サービスAmazon Inspectorの概要とEC2インスタンスのスキャン方法について紹介します。
この記事で扱うのは2021年11月に発表された新しいInspector(v2)です。旧Inspector(Classic)についてはこの記事では触れません。
Amazon Inspectorの概要
Amazon Inspectorとは
Amazon Inspectorとは、EC2インスタンス、ECRコンテナイメージ、Lambda関数を継続的にスキャンし、ソフトウェアパッケージの脆弱性(CVE)と意図しないネットワークの露出を検出する自動化された脆弱性管理サービスです。
EC2をスキャンするためには、マネージドインスタンス化(Systems Manager(SSM)エージェントがインストールされアクティブ化)されている必要があります。ECRやLambda関数ではエージェントのインストール等は必要ありません。
また、公式ドキュメントでは詳細な記述は見つかりませんでしたがInspectorの対象となるパッケージはOSのパッケージ管理ツール(yum/dnf/apt等)でインストールされたパッケージが対象のようです。実際、古いソースをダウンロードしてmakeコマンドでインストールしてもInspectorでは脆弱性は検出されませんでした。
なお、残念ながら現時点(2023/3)では大阪リージョンではサービスが提供されていません。
スキャンのタイミング
それぞれのワークロードは検出時に初回スキャンが行われ、以下のタイミングで再スキャンされます。
EC2 | 新しいパッケージをインストールもしくはアンインストールしたとき 新しいCVEが公開されたとき 脆弱なパッケージをアップデートしたとき ネットワークの露出については24時間毎 |
ECRコンテナイメージ | 新しいCVEが公開されたとき ※自動スキャンの期間は、ライフタイム(デフォルト)、180日、30日で設定可能 |
Lambda関数 | Lambda関数が更新されたとき 新しいCVEが公開されたとき |
EC2をスキャンしてみる
今回は脆弱性を含むEC2インスタンスを作成しInspectorでスキャンしてみます。
EC2インスタンスを作成
今回はInspectorにて脆弱性を検出させたいため、インスタンス作成時にコミュニティAMIから古いAmazon LinuxのAMIを使用します。
所有者情報から怪しいAMIではないかと思われるかもしれませんが、AMIから所有者で検索すると所有者エイリアスよりAMIの所有者がAmazonであることがわかります。
Amazon EC2 コンソールでは、Amazon または検証済み Amazon パートナーが所有するパブリック AMI には [Verified provider] (検証済みプロバイダー) のマークが付されます。
(前略)Amazon または検証済みパートナーが所有するパブリックイメージには、amazon または aws-marketplace のいずれかのエイリアス所有者が存在します。(中略)他のユーザーは、AMI にエイリアスを設定できません。これを利用すれば、Amazon または検証済みパートナーから AMI を簡単に見つけられます。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/sharing-amis.html
マネージドインスタンス化
EC2インスタンスをInspectorでスキャンするためには、EC2インスタンスがマネージドインスタンス化されている必要があります。
IAMに移動し「ロールを作成」をクリックします。
信頼されたエンティティタイプで「AWSのサービス」、ユースケースで「EC2」を選択し次へ。
許可ポリシーで「AmazonSSMManagedInstanceCore」を選択し次へ。
ロール名を入力して完成です。
続いて、EC2に移動し作成したEC2インスタンスにロールを割り当てます。
先程作成したIAMロールを選択し「IAMロールの更新」をクリックします。
以上でマネージドインスタンス化の作業は完了です。
Amazon Inspectorを有効化
Amazon Inspectorを有効化します。
Amazon Inspectorに移動し、「使用を開始する」、「Inspectorを有効化」を順番にクリックするとInspectorが有効化されます。
Inspectorを有効化すると、EC2インスタンス、ECRコンテナイメージ、Lambda関数に対して脆弱性スキャンが開始されます。少し時間をおいてInspectorのダッシュボードを確認してみてください。
検出結果の確認
Inspectorのダッシュボードからスキャン結果を確認してみましょう。環境カバレッジのインスタンス部分をクリックします。
対象のEC2インスタンスをクリックします。
検出結果が表示されました。
確認したい脆弱性のタイトルをクリックすると脆弱性の詳細が確認できます。詳細画面では脆弱性の概要や影響を受けるパッケージ、対策、Inspectorスコア等が確認できます。
公式ドキュメントによると、InspectorスコアはCVE情報とネットワークの露出および悪用可能性を関連付けスコアリングしたもののようです。CVSS基本値より実用的な評価基準と言えそうです。
検出結果フィルタリング
検出結果のうち重要なもののみ確認したい場合は、抑制ルールを使用することでルールに一致したものの表示を抑制することができます。
抑制ルールに移動して「ルールを作成」をクリックします。
適当な名前を設定し、抑制ルールのフィルターで表示を抑制したい脆弱性の条件を指定します。今回は重大性がMedium以下を抑制するルールとしました。
先程と同様にダッシュボードから検出結果を確認すると、重大性がMedium以下の脆弱性が表示されなくなります。(設定が反映されるのに少し時間がかかります)
抑制された検出結果は、抑制ルールから先程作成したルールをクリックすると確認できます。
最後に
今回はAmazon Inspectorを使ってEC2インスタンスをスキャンしてみました。
Inspectorは自動的に脆弱性を検出してくれますが、毎回ダッシュボードを確認するのは面倒かと思います。そのため、次回は他のAWSサービスと連携してメール等で通知を受け取る方法を紹介します。
コメント