Amazon Inspector を使って毎月自動で EC2 インスタンスのセキュリティ評価を実施する
こんにちは、菅野です。 台風の影響で小雨が降っていますが、不足気味のアウトドア成分を補充するためベランダでこのエントリーを書いています。
はじめに
皆さんは Amazon Inspector はお使いでしょうか? AWS から提供されているセキュリティ評価を実施できるサービスで、しかも1回$0.30以下という安価なのでお使いの方は多いと思います。
今回は、今日現在の最新 AMI で起動しただけの EC2 インスタンスのセキュリティ評価を実施し、 アップデート無しだとどれくらいの脆弱性があるのかと、毎月自動で評価を実行してもらう為の準備について書きます。
Amazon Inspector の準備
Amazon Inspector を利用するにはいくつかの準備が必要です。
- 対象となる EC2 インスタンスにエージェントをインストールする
- 対象となる EC2 インスタンスにタグを付ける
- Amazon Inspector が自分のアカウントにアクセスできるようにする
- 評価ターゲットの定義
- 評価テンプレートの定義
- SNS トピックの準備と指定
では準備を始めましょう
対象となる EC2 インスタンスにエージェントをインストールする
ダウンロード
対象の EC2 インスタンスへ SSH でログインし、以下のコマンドを実行してインストーラーをダウンロードします。
$ wget https://d1wk0tztpsntt1.cloudfront.net/linux/latest/install --2016-08-21 03:16:45-- https://d1wk0tztpsntt1.cloudfront.net/linux/latest/install d1wk0tztpsntt1.cloudfront.net (d1wk0tztpsntt1.cloudfront.net) をDNSに問いあわせています... 54.192.233.127, 54.192.233.201, 54.192.233.206, ... d1wk0tztpsntt1.cloudfront.net (d1wk0tztpsntt1.cloudfront.net)|54.192.233.127|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 20085 (20K) `install' に保存中 install 100%[===============================================>] 19.61K --.-KB/s in 0.09s 2016-08-21 03:16:46 (218 KB/s) - `install' へ保存完了 [20085/20085]
カレントディレクトリに「install」というファイル名でインストーラーが保存されました。
インストール
先ほどダウンロードしたファイルを実行してインストールします。
$ chmod 775 ./install $ sudo ./install
実行した時に表示されたメッセージは長いので割愛しますが、これでエージェントのインストールは完了です。
対象となる EC2 インスタンスにタグを付ける
今回は「Inspector-Enabled」という名前のタグに、値として「true」と設定しました。 このタグがついている EC2 インスタンスを Amazon Inspector の対象とします。
Amazon Inspector が自分のアカウントにアクセスできるようにする
「ロールの選択または作成」ボタンをクリックすると、次のようなページが表示されますので 右下にある「許可」ボタンをクリックします。 許可する内容としては EC2 インスタンスの参照だけのようで、信頼関係を見ると inspector.amazonaws.com からの AssumeRole を許可している事がわかります。
評価ターゲットの定義
- 名前(今回は「target-ec2」)と Amazon Inspecor が対象とするタグを指定します。
- この画面で「プレビュー」ボタンをクリックすると、対象となる EC2 インスタンスのリストが見れます
評価テンプレートの定義
ここではどんなルールを使って対象 EC2 インスタンス のセキュリティ評価を行うかを指定します。
- 名前(今回は「All-Rule」)と、使用するルールパッケージ(今回は全て)を選択します。
- 所用時間は長いほど詳細な結果が得られるらしいですが、運用を考えると「1時間(推奨)」が現実的なところでしょうか。
最後に確認画面で「作成」ボタンをクリックすれば「評価ターゲット」「評価テンプレート」が作成されます。
SNS トピックの準備と指定
作業が完了したらお知らせして欲しいので、評価テンプレートと SNS トピックを関連付けます。
SNS トピックの準備
- SNS トピックの作成方法は割愛します。
- 作成した SNS トピックを選択し、Actions の中の「Edit topic policy」をクリックします。
- 「Only these AWS users」を選択し、ここに記載されている ARN を入力します。 Amazon Inspector 通知用の SNS トピックの設定 (コンソール)
SNS トピックの指定
- 評価テンプレートの一覧で、先ほど作成した「All-Rule」の設定内容を表示します。
- 「SNS トピック」の下にある編集アイコンをクリックすると、設定ポップアップが表示されます。
- ここでトピックを選択し、どのタイミングで通知するかを選択します。
- SNS トピックの指定が完了すると、このようになります
Amazon Inspector を実行する
それでは早速実行してみましょう。準備さえ終わっていれば実行は簡単で 評価テンプレートの一覧から「All-Rule」を選択し、「実行」ボタンをクリックするだけです。
実行結果を確認する
今回は約1時間でセキュリティ評価は完了しました。 結果はこのようにリスト化されて表示されます。
また、完了時にメールでこのようなjsonが届きました。 各ルールパッケージ毎の警告数が含まれていますね。
{ "template": "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/0-okN2YLOr/template/0-pmp2sapr", "findingsCount": "{arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu=1, arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT=15, arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq=1, arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu=2}", "run": "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/0-okN2YLOr/template/0-pmp2sapr/run/0-oVOjjiyJ", "time": "2016-08-21T11:10:37.145Z", "event": "ASSESSMENT_RUN_COMPLETED", "target": "arn:aws:inspector:ap-northeast-1:xxxxxxxxxxxx:target/0-okN2YLOr" }
結果として、起動しただけの EC2 インスタンスのセキュリティ評価は重要度別にするとこんな感じでした。
- High:8件
- Medium:8件
- Low:1件
- Informational:2件
- 合計:19件
Amazon Inspector を自動で実行させる
今回のタイトルにもあるように、こういった作業は「朝起きたら終わっていて報告だけ来る」のが理想です。 aws-cli を利用してコマンドから実行できるようにしてみましょう。 (policy に「inspector:StartAssessmentRun」の許可が必要です)
評価テンプレートは以下のコマンドで実行できます。
aws inspector start-assessment-run --assessment-template-arn 【評価テンプレートのARN】
これを cron に登録すれば完了です。
さいごに
いかがでしたでしょうか。 Amazon Inspector は安価にセキュリティ評価できるサービスなので私も利用しています。 月に1回だから手動でもいいかなーとか、クリックするだけだしなーとか思ってましたが、 自動化は一つのコマンドを cron に登録すればいいだけなので簡単です。 皆さんも自動で Amazon Inspector を実行し、継続的なセキュリティチェックとアップデートを心がけてください。
参考ページ
これらのページを参考にさせていただきました。 ありがとうございました。 Amazon Inspector の評価テンプレートと評価の実行