Amazon InspectorによるEC2インスタンスの脆弱性診断
はじめに
こんにちは、SHIFT DAAE部で開発エンジニアをしているTsukagoshiです。
AWSを利用している人にとって、EC2に代表されるようなコンピューティングサービス、あるいはコンテナサービスを利用している人は多いと思います。
これらの運用しているリソースについて、脆弱性診断を行ってみたいと思ったことは無いでしょうか?
今回は、Amazon Inspectorで誰でも行えるEC2インスタンスの脆弱性診断について書いていきたいと思います。
Amazon Inspectorとは
Amazon Inspectorは簡単にいうとAWS上のEC2インスタンス及びECR上のコンテナイメージ(v2ではLambda関数も)に対して脆弱性診断を自動で行ってくれるサービスです。
EC2インスタンスなどに入っているソフトウェアやパッケージ、またネットワーク到達可能性等に対して、脆弱性が存在するかを診断し、結果を出力します。
利用コスト
Amazon Inspectorの利用には料金がかかります。利用料は1ヶ月のうちに診断したEC2インスタンスの平均数、ECR上のコンテナイメージ、Lambda関数の量に基づいて算出されます。
具体的な価格・算出方法といった最新の料金情報につきましては、こちらの公式ドキュメントをご覧ください。
利用設定
実際に利用するにはどのようにすれば良いか?を示します。
なお、対象とするEC2インスタンスやコンテナサービス等の起動方法については、ここでは割愛いたします。
本記事では、Inspector v2を元に、EC2インスタンスに対して診断を実施する例をお見せします。
権限設定(IAM)
まず、InspectorはEC2インスタンスに対してはSSMエージェントを利用して診断を行うため、脆弱性診断を行いたいEC2インスタンスに設定するIAMロールを作成します。
ロール名は何でも良いですが、IAMロールに管理ポリシー「AmazonSSMManagedInstanceCore」を添付して、EC2にアタッチします。
(既にEC2に何かIAMロールをアタッチしている場合は、そのロールにAmazonSSMManagedInstanceCoreを付け加えます。)
SSMエージェントの設定
次に、対象とするEC2インスタンスにSSMエージェントをインストールする必要があります。
ただし、EC2起動時に利用したAMIによっては、最初からSSMエージェントが入っている場合もあります。その場合はこちらの対応は不要です。(と言ってもほとんどのAMIには最初から入っています)
SSMエージェントが既に入っているかを確認するにはこちらに記載のコマンドで確認できます。
インストールされていない場合はSSMエージェントをインストールします。EC2へのSSMエージェントのインストール方法は、こちらを参考にしてください。
Inspectorの有効化
では、AWSのInspectorコンソールに移動して、Inspectorの利用設定をします。
Inspectorのコンソール画面に行き、「利用を開始する」を押下します。
その後、アクティブ化します
v2版ではアクティブ化すると自動で、設定したEC2等に対し脆弱性診断を実行してくれます。
同アカウント内にECRコンテナイメージ、Lambda関数もある場合、それらに対しても診断が行われます。
(脆弱性診断は量と場合によりますが、多少時間がかかります)
出力結果
診断が終わると検出結果を出力してくれます。
サイドバーの「検出結果」から、EC2インスタンス(及びECR上のコンテナイメージ,Lambda関数)ごとに確認できます。
また、「すべての検出結果」からは診断した全リソースで検出された脆弱性全てを確認できます。
出力される検出結果には、対象に対してInspectorが検出した脆弱性の一覧を
警戒度付きで記載してくれます。
後は検出された脆弱性に基づき、対応可否を判断して対応していくのみです!
診断内容について
Inspectorでは、AWSが独自に設定している検出ルール(ネットワーク到達可能性等の危険性など)およびCVE(Common Vulnerabilities and Exposures: 共通脆弱性識別子。米MITRE社が提供している脆弱性データベース)等に基づいて、リソースをスキャンし脆弱性を検出します。
先ほどの例の場合、対象のEC2インスタンスがSSHを介してネットワーク到達可能であることが脆弱性として検出されています。
v2では、対象のEC2インスタンスに追加のソフトウェアをインストール(及び、アンインストール)した時、またCVEのリストが更新された時を契機に、診断を再実行してくれます。
対応方法
検出される脆弱性には大まかにAWS独自の検出ルールに基づくもの、あるいはCVEにより検出されたものに分類されます。
検出された脆弱性によっては以下の図のように、対策・対応方法が出力結果に記載(検出結果にある脆弱性の詳細下部に「対策」という欄がある場合あり。)されている物もあります。
CVEが元で検出された脆弱性に関しては、対象のCVE情報へのリンクも記載されています。基本はその通りに対応していけばOKです。
おわりに
脆弱性診断は自分にはハードルが高いように感じましたが、Amazon Inspectorを設定する事でEC2インスタンスに対し脆弱性診断を自動で行える事が解りました。
ここでは触れませんでしたがECR上のコンテナイメージやLambda関数に対しても実施可能なので、これらのAWSリソースを利用している場合、安全な運用に向けて是非お試ししてみてはいかがでしょうか。検出された脆弱性には対応方法が記載されている場合もありますので、詳細な情報を確認しつつ適切な対応を行って下さい!
参考
\もっと身近にもっとリアルに!DAAE公式Twitter/
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/