Amazon Inspector は、EC2インタンスの脆弱性診断を簡単に行うことができる、自動化されたセキュリティ評価サービスです。使い方もいたってシンプルで、AWSエージェントをインストールして、診断対象のEC2をタグで指定するだけで、脆弱性診断ができてしまいます。そこで今回は、Amazon Inspector で CentOS7.3 (1611) の脆弱性診断を行ってみましたので、設定手順などをメモしておきました。
Amazon Inspector の利用条件
Amazon Inspector は、以下のリージョンで稼働するEC2インスタンス+サーバOSで利用することができます。(2017年1月5日現在)
利用できるリージョン
- 米国西部(オレゴン)
- 米国東部(バージニア北部)
- 欧州 (アイルランド)
- アジアパシフィック(東京)
利用できるサーバOS
- Amazon Linux (2015.03 以降)
- Ubuntu (14.04 LTS)
- Red Hat Enterprise Linux (7.2)
- CentOS (7.2)
- Windows Server 2008 R2 および Windows Server 2012
Amazon Inspector のセットアップ | AWS Documentation より引用
AWS Documentation を見ると、CentOSは7.2 (1511) のみ対応となっているようなのですが、CentOS7.2で「yum update」すると CentOS7.3 (1611) にアップデートされるため、CentOS7.3の環境で脆弱性診断をしてみました。
Amazon Inspector の利用料金
Amazon Inspector の利用料金は 1 エージェント 1 評価あたり 0.30 USD からです。(2017年1月5日現在)
トライアル期間があるので Amazon Inspector を使い始めてから90日間は、250回のエージェント評価を無料で実行できます。
AWS エージェントのインストール
Amazon Inspector を使うには、EC2インスタンス上のOSに、AWSエージェントをインストールする必要があります。
AWSエージェントのインストールスクリプトをダウンロード
AWSエージェントのインストール
AWSエージェントはインストールすれば、自動で起動し、自動起動設定も行われます。
(略)
awsagent 0:off 1:off 2:on 3:on 4:on 5:on 6:off
CentOS7でもAWSエージェントの自動起動は systemd ではなく chkconfig が使われますが、AWSエージェントの起動/停止は systemd の systemctl コマンドでも行えるようです。(あまり起動/停止をすることはないと思いますが)
sudo systemctl stop awsagent
AWS エージェントの操作 | AWS Documentation
EC2 インスタンスへのタグ付け
Amazon Inspector は、EC2インスタンスのタグのキーと値を使って、脆弱性診断を実行する評価ターゲットを指定しますので、診断対象のEC2インスタンスに適当なタグを設定しておきます。
今回は、タグのキーはデフォルトの「Name」を使って、値を「InspectorEC2Instance」としましたが、タグのキーと値はなんでも構いません。
Amazon Inspector の設定
サービス > Inspector >「今すぐ始める」をクリックします。
IAM ロールの作成
Amazon Inspector が、脆弱性診断を実行するEC2インスタンスにアクセスできるように、IAMロールを作成します。
「ロールの選択または作成」をクリックします。
IAMの管理画面が開きますので、そのまま「許可」をクリックします。
Amazon Inspector ロールに「inspector」と表示されたら「続行」をクリックします。
評価ターゲットの定義
「名前」に適当な評価ターゲット名を入力し、先ほどEC2インスタンスに設定したタグのキー「Name」と値「InspectorEC2Instance」を選択したら、「続行」をクリックします。
評価テンプレートの定義
「名前」に適当な評価テンプレート名を入力します。
ルールパッケージは、以下4つのルールから複数選択できます。(2017年1月5日現在)
- CIS Operating System Security Configuration Benchmarks-1.0(CIS オペレーティングシステムのセキュリティ設定ベンチマーク)
- Security Best Practices-1.0(セキュリティのベストプラクティス)
- Common Vulnerabilities and Exposures-1.1(共通脆弱性識別子)
- Runtime Behavior Analysis-1.0(実行時の動作の分析)
今回ルールパッケージは、「Common Vulnerabilities and Exposures-1.1」と「Security Best Practices-1.0」を選択、所用時間は推奨の「1時間」を選択してみます。選択が終わったら「続行」をクリックします。
(補足)「Common Vulnerabilities and Exposures(共通脆弱性識別子)」は、よくCVE番号と呼ばれているもので、ソフトウェアなどの脆弱性を一意に識別するための番号です。Amazon Inspector のような脆弱性診断ツールや、IPAセキュリティセンターからの脆弱性情報などで広く使われています。
確認画面が表示されますので、間違えがないことを確認し「作成」をクリックします。(「プレビュー」をクリックすると対象のEC2インスタンスを確認できます)
以上で評価テンプレートの作成されました。
Amazon Inspector で脆弱性診断を実行
作成した評価テンプレート「MyFirstTemplate」を選択し、「実行」をクリックすると、脆弱性診断が実行されます。
左メニューの「評価の実行」をクリックすると、実行状況が確認できます。
所用時間で指定した1時間が経過すると、ステータスが「分析完了」になり、「結果」の数字をクリックして、脆弱性診断の結果を表示することができます。
今回は、CVEに登録されている脆弱性は見つかりませんでしたが、パスワードやSSHの設定に関するセキュリティ上の問題が3つ見つかりました。
おわりに
サーバにインストールされたソフトウェアをすべて把握して、脆弱性情報を常に追っかけるのは、なかなか大変な作業ですが、サーバのセキュリティ対策には欠かすことができない作業です。Amazon Inspector を使えば、これらの作業を劇的に効率化できるかもしれませんね。
コメント