Amazon Inspectorプレビュー

こんにちは、ひろかずです。
re:Iventで様々なサービスが発表されましたが、Amazon Inspectorについてはあまり話題になっていませんでした。

個人的には最低限のセキュリティが保持できているかをリーズナブルに確認できる、素晴らしいソリューションコンセプトだと思っています。

[【AWS発表】 Amazon Inspector - 自動セキュリティアセスメントサービス](http://aws.typepad.com/aws_japan/2015/10/amazon-inspector-automated-security-assessment-service.html)

現時点(2015/10/26)ではプレビューですが、プレビューに当選したのでその動作を試してみました。

※ 長いので、忙しい人は `2.実行` あたりから見れば良いと思います。

#参考情報
[Amazon Inspector User Guide](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html)

#目的とゴール
事前に作りこんだ脆弱性をどの程度検知し、どのようにレポートされるかを確認する。

#試験環境
##環境1
- region:us-west-2(Oregon)
- AMI:suz-lab_centos-core-6.4.4 (ami-7b59c57a)
- Apache/2.2.15 (Unix)
- mod_ssl
- PHP 5.4.45

<作りこんだ脆弱性>

- shellshock
- クレデンシャル情報をaws cli toolsのconfigに記載(ベストプラクティスではIAMロールを使用が推奨)
- コンテンツ内にphpinfo.phpの配置
- SSLv3使用可能

##環境2
- region:us-west-2(Oregon)
- Amazon Linux AMI 2015.09 (HVM), SSD Volume Type - ami-9ff7e8af
- Apache/2.2.31 (Unix)
- mod_ssl
- PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)

<作りこんだ脆弱性>

- クレデンシャル情報をaws cli toolsのconfigに記載(ベストプラクティスではIAMロールを使用が推奨)
- コンテンツ内にphpinfo.phpの配置
- SSLv3使用可能

#1.Amazon Inspectorの準備
##1-1.Inspector用のIAMロールを作成
プレビュー可能なus-west-2(オレゴンリージョン)にてAmazon Inspectorを開きます。
![00_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/e9bb053b-bd0c-4494-68ea-54daccb19e8f.png "00_Amazon_Inspector.png")

まず、Inspector用のIAMロールを作成します。
Select/Create Roleをクリック
![01_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/3f5240b8-b671-8920-7173-f914311f40f9.png "01_Amazon_Inspector.png")

デフォルトのまま作成します。
DescribeInstancesだけでいいんですね。
![02_IAM_Management_Console.png](https://qiita-image-store.s3.amazonaws.com/0/46611/eb5c89c7-5451-c3a4-ab21-ba011a2f5c66.png "02_IAM_Management_Console.png")

##1-2.リソースへのタグ付け
Inspectorの実行には何らかのタグが必要です。
リソースにタグが付いていない場合は、ここで付けます。
![04_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/d33d4e15-e11e-d79b-010b-d05b96faff2f.png "04_Amazon_Inspector.png")

リソースタイプを選べるので、ここではインスタンスを選択します。
![05_タグエディター_-_アマゾン_ウェブ_サービス.png](https://qiita-image-store.s3.amazonaws.com/0/46611/85ea36cc-188f-68c7-d4c2-6bff302a7545.png "05_タグエディター_-_アマゾン_ウェブ_サービス.png")

このようにある程度抽出して
![06_タグエディター_-_アマゾン_ウェブ_サービス.png](https://qiita-image-store.s3.amazonaws.com/0/46611/8b8fb85f-eeef-7e77-0484-278b0b8e8b98.png "06_タグエディター_-_アマゾン_ウェブ_サービス.png")

「新しいタグキーの作成」でタグを追加できます。
![07_タグエディター_-_アマゾン_ウェブ_サービス.png](https://qiita-image-store.s3.amazonaws.com/0/46611/95959d60-0d78-3077-3df9-96f1ba60b338.png "07_タグエディター_-_アマゾン_ウェブ_サービス.png")

inspectorというタグを作ってみました。
![08_タグエディター_-_アマゾン_ウェブ_サービス_と_Slack.png](https://qiita-image-store.s3.amazonaws.com/0/46611/2ca91a2c-ba3a-8e45-87cb-4bf4127b0d64.png "08_タグエディター_-_アマゾン_ウェブ_サービス_と_Slack.png")

##1-3.Inspector Agentをインストールします。
手順は「Install Inspector Agent」というリンクに記載されています。
![10_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/aebeebf6-b727-22c8-a0da-9a5fe671b2ea.png "10_Amazon_Inspector.png")

インストールモジュールをcurlまたはwgetで入手して、インストールスクリプトを実行します。
(インストールスクリプトはbashで書かれています。)

```
# curl -O https://s3-us-west-2.amazonaws.com/inspector.agent.us-west-2/latest/install
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10436  100 10436    0     0  21312      0 --:--:-- --:--:-- --:--:--  328k

# ll
合計 28
-rw-r--r-- 1 root root 10436 10月 26 08:47 2015 install
：

[root@ip-172-31-16-39 ~]# bash install
Validated signature with:
Failed to find an inspector agent package for this OS: redhat-2.6.32-358.18.1.el6.x86_64-x86_64.
Please contact AWS support with this identifier to report this issue.
```

失敗してしまいました。
どうやらOSバージョンが合致しないようです。
インストールスクリプトのソースを見ると、バージョンを確認しているステップがあります。

```
MY_VERSION=$( grep -m 1 -i "${UNIQ_OS_ID}" "${SECURE_TMP_DIR}/${VERSION_FILE}" )
if [[ -z "${MY_VERSION}" ]]; then
  echo "Failed to find an inspector agent package for this OS: ${UNIQ_OS_ID}."
  echo "Please contact AWS support with this identifier to report this issue."
  exit 1
fi
```

その直前でsleepを挿入して、 `VERSION_FILE` を確認すると、以下バージョンに該当している必要があるようです。

```
ubuntu-3.13.0-24-generic-x86_64 releases/1.0.87.0/ubuntu-3.13.0-29-generic-x86_64/inspectoragent_1.0.87.0-100087_amd64.deb f759f3b00541e17245b9451e93082593efbfea129e220ea05da421129e7657cb
中略
ubuntu-3.13.0-65-generic-x86_64 releases/1.0.87.0/ubuntu-3.13.0-29-generic-x86_64/inspectoragent_1.0.87.0-100087_amd64.deb f759f3b00541e17245b9451e93082593efbfea129e220ea05da421129e7657cb

amzn-3.14.35-28.38.amzn1.x86_64-x86_64 releases/1.0.87.0/amzn-3.14.48-33.39.amzn1.x86_64-x86_64/InspectorAgent-1.0.87.0-100087.x86_64.rpm d9a7611cb82e9154e35ebc080ab8b193bd903a330a63371d7ad37770b56cc22f
中略
amzn-3.14.48-33.39.amzn1.x86_64-x86_64 releases/1.0.87.0/amzn-3.14.48-33.39.amzn1.x86_64-x86_64/InspectorAgent-1.0.87.0-100087.x86_64.rpm d9a7611cb82e9154e35ebc080ab8b193bd903a330a63371d7ad37770b56cc22f

ubuntu-3.16.0-23-generic-x86_64 releases/1.0.87.0/ubuntu-3.16.0-30-generic-x86_64/inspectoragent_1.0.87.0-100087_amd64.deb 762c5e6976d61f72729e82c7a27729d2bcbfad7bdaa49b99a99252b41b0a2e0b
中略
ubuntu-3.16.0-44-generic-x86_64 releases/1.0.87.0/ubuntu-3.16.0-30-generic-x86_64/inspectoragent_1.0.87.0-100087_amd64.deb 762c5e6976d61f72729e82c7a27729d2bcbfad7bdaa49b99a99252b41b0a2e0b

amzn-4.1.7-15.23.amzn1.x86_64-x86_64 releases/1.0.87.0/amzn-4.1.7-15.23.amzn1.x86_64-x86_64/InspectorAgent-1.0.87.0-100087.x86_64.rpm 72eb74283133faf74e1d803529d48372a7b850c1ac0996d4e2d9cd9819db97fb
```

環境2にスイッチして続行します。
(2015/11/1追記：環境2のkernelは `VERSION_FILE` に含まれる `amzn-4.1.7-15.23.amzn1.x86_64-x86_64` に該当しています。)

```
$ sudo bash install
Validated signature with:
Validated package sha256 hash matches expected value.
Installing with yum...
読み込んだプラグイン:priorities, update-motd, upgrade-helper
/tmp/inspector.1nyJlINJ/InspectorAgent-1.0.87.0-100087.x86_64.rpm を調べています: InspectorAgent-1.0.87.0-100087.x86_64
/tmp/inspector.1nyJlINJ/InspectorAgent-1.0.87.0-100087.x86_64.rpm をインストール済みとして設定しています
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ InspectorAgent.x86_64 0:1.0.87.0-100087 を インストール
--> 依存性の処理をしています: libpcap のパッケージ: InspectorAgent-1.0.87.0-100087.x86_64
--> 依存性の処理をしています: libpcap.so.1()(64bit) のパッケージ: InspectorAgent-1.0.87.0-100087.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.10.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package  アーキテクチャー
                 バージョン        リポジトリー                            容量
================================================================================
インストール中:
 InspectorAgent
          x86_64 1.0.87.0-100087   /InspectorAgent-1.0.87.0-100087.x86_64 8.2 M
依存性関連でのインストールをします:
 libpcap  x86_64 14:1.4.0-1.20130826git2dbcaa1.10.amzn1
                                   amzn-main                              144 k

トランザクションの要約
================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)

合計容量: 8.3 M
総ダウンロード容量: 144 k
インストール容量: 8.5 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 14:libpcap-1.4.0-1.20130826git2dbcaa1.10.amzn   1/2
  インストール中          : InspectorAgent-1.0.87.0-100087.x86_64           2/2
crond を再読み込み中: [  OK  ]
  検証中                  : InspectorAgent-1.0.87.0-100087.x86_64           1/2
  検証中                  : 14:libpcap-1.4.0-1.20130826git2dbcaa1.10.amzn   2/2

インストール:
  InspectorAgent.x86_64 0:1.0.87.0-100087

依存性関連をインストールしました:
  libpcap.x86_64 14:1.4.0-1.20130826git2dbcaa1.10.amzn1

完了しました!
読み込んだプラグイン:priorities, update-motd, upgrade-helper
/tmp/inspector.1nyJlINJ/InspectorAgent-1.0.87.0-100087.x86_64.rpm を調べています: InspectorAgent-1.0.87.0-100087.x86_64

Notice:
By installing the Amazon Inspector Agent, you agree that your use is subject to the terms of your existing
AWS Customer Agreement or other agreement with Amazon Web Services, Inc. or its affiliates governing your
use of AWS services. You may not install and use the Amazon Inspector Agent unless you have an account in
good standing with AWS.
*  *  *
Current running agent reports version as: 1.0.87.0
This install script was created to install agent version: 1.0.87.0
In most cases, these version numbers should be the same.
HTTP/1.1 200 OK
x-amz-id-2: TyBoZEEdMln1ulRBhifAAAX2iABuqPyYmQo5NN7reMpJCZEy8gBFIUUCOY0mC2ds7EDrDSrVKRs=
x-amz-request-id: 69C1A89EA6AC1746
Date: Mon, 26 Oct 2015 00:48:04 GMT
Last-Modified: Mon, 19 Oct 2015 21:49:09 GMT
ETag: "df847a11c075d62da4f16433a1cd4011"
Accept-Ranges: bytes
Content-Type: binary/octet-stream
Content-Length: 10034
Server: AmazonS3
```

プロセスを見ると、Inspectorというのが動いていました。

```
$ ps auwwx | grep inspector
root      2806  0.0  1.8 325708 18628 ?        Ssl  00:47   0:00 /opt/aws/inspector/bin/inspector
```

#1-4.Applicationを設定
アプリケーション名を指定して、対象となるリソースに付いているタグを指定します。
ここでは、先ほど作成したタグ `Inspector` を指定しました。
![11_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/eae9c741-215f-0445-8ffa-781f2cf47598.png "11_Amazon_Inspector.png")

#1-5.Assessmentを作成
ここでどのような診断をするか作成します。
Assessmennt名を指定して、ルールパッケージをしてします。
Durationはデフォルト設定とします。

2015/10/26現在で選択可能なルールパッケージは以下です。

- Authentication Best Practices
- PCI DSS 3.0 Readiness
- Network Security Best Practices
- Application Security Best Practices
- Common Vulnerabilities and Exposures
- Operating System Security Best Practices

![12_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/b6fbab66-89cb-f7a3-1e48-af005dff6bfa.png "12_Amazon_Inspector.png")

Nextボタンを押すと、確認画面に遷移します。
Previewボタンで、対象が表示されることを確認してください。
![13_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/8b7a1278-0a6b-605d-6c5b-0051f538a9bb.png "13_Amazon_Inspector.png")

対象がある場合は、以下の様に表示されます。
![14_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/a80862e9-2597-2391-b820-6e92f228dd6f.png "14_Amazon_Inspector.png")

#2.実行
最後に `Create & run` ボタンで実行します。
実行すると以下のようにStatusが変化します。
![15_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/a0d10588-37f4-6a27-a117-1b4b6c63e4a4.png "15_Amazon_Inspector.png")

Dashboardには以下のように表示されます。
![16_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/ca80369f-26a4-0c60-2e32-6ffb69eacc81.png "16_Amazon_Inspector.png")

重複して実行しようとするとエラーになります。
一つ一つ実行しましょう。
![17_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/7db72769-d01f-a86e-e3b0-037f6b39160d.png "17_Amazon_Inspector.png")

#3.結果
Assessmentの状態と結果はAssessment画面で確認できます。
Findingsが指摘事項のようですね。
![18_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/5f5293ed-ebe4-0800-89a5-0d7ace1760b0.png "18_Amazon_Inspector.png")

Findingの数字をクリックすると内容が表示されるようですが、指摘事項の内容がありません...
![19_Amazon_Inspector.png](https://qiita-image-store.s3.amazonaws.com/0/46611/3180bf55-5bf7-aca4-6b13-2ca1ccee56e1.png "19_Amazon_Inspector.png")

2015/11/5追記：AWSマネジメントコンソールの言語設定が `日本語` であることが原因でした。
言語設定を `英語` にすることで表示がなされます。
指摘事項がない項目は、以下のように表示されました。
![Finding_OS_Security.png](https://qiita-image-store.s3.amazonaws.com/0/46611/24a6978b-5bf7-e456-25af-af9c3b46f6ab.png "Finding_OS_Security.png")

#最後に
一通り動かしてみましたが、実行環境がかなり限られる等、まだまだ発展途上のようです。
今後に期待しましょう！

ちなみにですが、t2.microで実行してもvmstat上では殆どリソースの変動は見られませんでした。


お疲れ様でした。