忙しい人のためのAmazon Inspector User Guide まとめ

こんにちは、ひろかずです。

[前回](http://qiita.com/fnifni/items/76059ce09acc25c70ce8)は、Amazon Inspectorを使ってみましたが、[Amazon Inspector User Guide](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html)には、いろいろ良いことが書いてあったので、拾っていきたいと思います。

※ 本エントリは、2015/11/02現在の[Amazon Inspector User Guide](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html)を参照しています。
※ わかりにくい訳になってしまう部分は、意訳しています。

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

#目的とゴール
Amazon Inspector User Guideを一通り読んで、役立ちそうな情報を拾うことで、試したいけど忙しい人(と未来の自分)を助ける。

#What is Amazon Inspector?[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_introduction.html)
##Amazon Inspectorへのアクセス

* [HTTP APIリファレンス](http://docs.aws.amazon.com/inspector/latest/APIReference/Welcome.html)があります。

#Amazon Inspector Terminology and Concepts[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_concepts.html)
##Application

* 現在、オレゴンリージョンにホストしているEC2でのみ使用できます。
* また、使用するために一致するTagとvalueが必要です。

##Findings

* APIでも結果が見れます。

#Setting up Amazon Inspector[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_settingup.html)

* 初期設定方法が記載されています。
* 具体的な操作手順は、前回の[Amazon Inspector プレビュー](http://qiita.com/fnifni/items/76059ce09acc25c70ce8)を参照してください。
* 対応しているインスタンスは、 `Amazon Linux AMI 2015.03以降` または `Ubuntu Server 14.04 LTS` です。

#Amazon Inspector Quickstart Walkthrough[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_quickstart.html)

* 具体的な検査の仕方が `ハンズオン形式` で記載されています。
* ここではUbuntuを題材にしています。
* 現在は、Ubuntuだと指摘された脆弱性情報がFindingsにて参照できるようです。

#Amazon Inspector Agents[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_agents.html)

* agent.cfgに重要な設定ファイルがあり、変更の際にはAmazon Inspector Agentsを再起動する必要があります。
* agent.cfgの変更は、AWS Supportの指示に従うことが強く推奨されています。
* agent.cfgの内容は以下のようなものでした。

```json
$ cat /opt/aws/inspector/etcagent.cfg
{
    "ServiceEndpoint" : "arsenal.us-west-2.amazonaws.com",
    "KernelModulePath" : "/opt/aws/inspector/kmods/inspector.ko",
    "VerifySSL" : true,
    "LogLevels" : "LogWarning,LogError,LogNotice",
    "SubSystems" : "AGENT,CONFIGURATION,PRODUCER"
}
```

##Operating Systems Supported by the Inspector Agent
* Microsoft Windowsには対応していません。

##Amazon Inspector Agent Limits
* AWSアカウント毎に500台まで同時実行できます。

##Adding, Removing, and Restarting the Amazon Inspector Agent on Amazon Linux or Ubuntu Server
* Amazon Inspector Agentのアンインストール

```
On Amazon Linux, run yum remove InspectorAgent
On Ubuntu Server, run apt-get remove inspectoragent
```
* Amazon Inspector Agentの停止/起動

```sh
sudo /etc/init.d/inspector stop
sudo /etc/init.d/inspector start
```

* Amazon Inspector Agentの状態確認

```console
$ sudo /opt/aws/inspector/bin/inspector status
Agent version: 1.0.87.0
System release: Amazon Linux AMI release 2015.09 - 4.1.7-15.23.amzn1.x86_64
Configuration file path: /opt/aws/inspector/etc/agent.cfg
Service endpoint: arsenal.us-west-2.amazonaws.com
Kernel module path: /opt/aws/inspector/kmods/inspector.ko
Kernel module status: 104
Log file:
Msgs log max size: 33554432
Dns entries: false
Network connections: false
Listening ports: false
Listening ports info: false
Kernel modules: false
Code modules: false
Processes: false
Users: false
Groups: false
Instance metadata: false
Network interfaces: false
Package info: false
Terminals: false
Configuration info: false
Permissions: false
System performance: false
System performance update frequency: 1
System performance send frequency: 30
Process performance: false
Process performance update frequency: 1
Process performance send frequency: 30

Producer type: Service
Registered: true
Endpoint: arsenal.us-west-2.amazonaws.com
Instance-Id: i-xxxxxxxx
Region: us-west-2b
IpAddress: 172.31.31.63
MacAddress: xx:xx:xx:xx:xx:xx
Total events published: 4
Events published in last call: 0
AgentId: i-xxxxxxxx
Collecting: false
Last registration attempt date: Tue 2015-10-27 21:27:09 UTC
Last registration date: Tue 2015-10-27 21:27:09 UTC
Last config retrieval attempt date: Tue 2015-10-27 21:44:15 UTC
Last config retrieval date: Tue 2015-10-27 21:44:15 UTC
```
##Amazon Inspector Agent Dependencies
* 前提Applicationは以下です。

```
libgcc1
libc6
libstdc++6
libssl1.0.0
libpcap0.8
```

##Amazon Inspector Agent Connectivity Requirements

* Amazon Inspector Agentは、HTTPS通信を使います。
* Amazon Inspector Agentは、ローカルポートはエフェメラルポートを使用し、Service Endpointの443ポートに接続します。(Service Endpointへの443ポートを開けてください)
* すべての通信は、Agentから開始します。
* Amazon Inspectorのプレビューは、DNS名 `arsenal.us-west-2.amazonaws.com` にて解決されるIPアドレスの一つと接続します。

→ `arsenal.us-west-2.amazonaws.com` は、agent.cfgに記載されてましたね。

#(Optional) Verify the Signature of the Amazon Inspector Agent Download[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_verify-signature-of-agent-download.html)

* Amazon Inspector Agentのインストーラが正しいものであるかのPGPを用いた検証方法が記載されています。
* 検証の結果、異なるものの場合は、そのAmazon Inspector Agentのインストーラの使用を止め、AWSサポートへ連絡するようにとのことです。

#Amazon Inspector Applications[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_applications.html)

##Tagging Resources to Create an Application

* AWS Inspectorは、Applicationに該当するインスタンスを探す時、タグを参照する。
* タグ/キーの組み合わせが一つでも該当すれば、Applicationの一部と認識されます。
* カスタムタグを作成できます。
* タグは、同一AWSアカウント内のタグが使用できます。
* タグは、Nameキーのような、自動的に作成されたものも使用できます。

##Amazon Inspector Application Limits

* Application数は、AWSアカウント毎に50が上限です。

#Amazon Inspector Assessments[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_assessments.html)

* Amazon Inspector Assessmentは、選択したルールパッケージにて、アプリケーションの挙動の解析を通しての潜在的なセキュリティの問題を見つけるプロセスです。
* 作成したAssessment毎に、Amazon Inspectorが行うApplicationの遠隔モニタリング・情報収集を実施する期間を設定します。
* 設定可能なdurationは、15分,1時間(推奨),8時間,12時間,24時間です。
* Assessmentのdurationが長いということは、Amazon Inspectorがより徹底的に収集/分析するということ。

###重要
* 一度実行したAssessmentは、再実行できません。(処理を中断しても再実行できません)

##Amazon Inspector Assessment Limits
* Assessment数は、AWSアカウント毎に500が上限です。

#Amazon Inspector Findings[参照箇所](https://docs.aws.amazon.com/inspector/latest/userguide/inspector_findings.html)

* Findingsは、セキュリティ問題の概要と推奨する解決方法を、AWSコンソール・APIそれぞれで表示する。
* 生成したFindingsにAmazon Inspector特有の属性を付与することで、これらの対応を追跡できる。
* 属性は、キーと値。
* 使い道としては、ステータスや担当者を付与する使い方がある。

#Amazon Inspector Rules Packages and Rules[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_rule-packages.html)

##Severity Levels for Rules in Amazon Inspector
* Amazon Inspectorのルール毎に、重要度レベルがあります。
* High：アプリケーション内に情報守秘性、完全性、有効性に問題があることを示します。緊急事態とみなして即時の改善を実行するように勧めます。
* Medium：アプリケーション内に情報守秘性、完全性、有効性に問題があることを示します。メンテナンスやバージョンアップ等の機会で解決するよう勧めます。
* Low：アプリケーション内に情報守秘性、完全性、有効性に問題があることを示します。将来のバージョンアップの一部として、解決するよう勧めます。
* Informational：単純に対象アプリケーションのセキュリティ構成の詳細を示します。

##Common Vulnerabilities and Exposures[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_cves.html)
* 本ルールにて検出対象となる[対応CVEリスト](https://s3-us-west-2.amazonaws.com/rules-engine/CVEList.txt)が公開されています。

##Network Security Best Practices[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_network-security-best-practices.html)
* 本ルールでは、Applicationのネットワーク設定についての助けを案内します。

###Use Secure Protocols
* 暗号化されていないポートやサービス(例：FTP,Telnet,HTTP,IMAP,POP version 3,SMTP,SNMP versions 1/2,rsh,rlogin)を使用できるよう構成されていることを見つけます。
* Infomational：SFTPやSCP,HTTPSの利用を推奨します。

###Enable Packet Signing on SMB Servers
* 署名しているSMBパケットが無効になっているかを確認します。
* Low：ソリューションとしてsmb.confの `server signing = auto` にするよう案内されています。

##PCI DSS Readiness Best Practices[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss.html)
* このルールは、PCIDSS3.0 Standardの準備を助けます。

###PCI DSS Requirement 1: Install and maintain a firewall configuration to protect cardholder data[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req1.html)
####Requirement 1.1.6 - Use Secure Protocols
* 暗号化されていないポートやサービス(例：FTP,Telnet,HTTP,IMAP,POP version 3,SMTP,SNMP versions 1/2,rsh,rlogin)を使用できるよう構成されていることを見つけます。
* Infomational：SFTPやSCP,HTTPSの利用を推奨します。

###PCI DSS Requirement 2: Do not use vendor-supplied defaults for system passwords and other security parameters[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req2.html)

####Requirement 2.2.1 - Do not run multiple major services on a single EC2 instance[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req2.html#req2-rule2.2.1)

* Infomational：複数のサービスが単一インスタンス上で動作していないことの確認を助けます。

####Requirement 2.2.3 - Use Secure Protocols[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req2.html#req2-rule2.2.3)

* 暗号化されていないポートやサービス(例：FTP,Telnet,HTTP,IMAP,POP version 3,SMTP,SNMP versions 1/2,rsh,rlogin)を使用できるよう構成されていることを見つけます。
* Infomational：SFTPやSCP,HTTPSの利用を推奨します。

####Requirement 2.2.2 - Do not have unused protocols running[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req2.html#req2-rule2.2.2)

* Infomational：インスタンス上に不必要なサービスが稼働していないことを確認する助けになります。

####Requirement 2.2.5 - Do not have unused protocols running[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req2.html#req2-rule2.2.5)

* 2.2.2と同じ内容です。誤植のようです。

####Requirement 2.3 - Use Secure Protocols[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_pcidss-req2.html#req2-rule2.3)

* 暗号化されていないポートやサービス(例：FTP,Telnet,HTTP,IMAP,POP version 3,SMTP,SNMP versions 1/2,rsh,rlogin)を使用できるよう構成されていることを見つけます。
* Infomational：SFTPやSCP,HTTPSの利用を推奨します。

###Authentication Best Practices[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html)

####Disable root log in over SSH[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html#disable-root-login-over-SSH)

* rootでのSSHログインできるように構成されていることを見つけます。
* Medium：ソリューションとして `/etc/ssh/sshd_config` にて `PermitRootLogin` を `no` に設定することが案内されています。 

####Support SSH Version 2 Only[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html#support-ssh-v2-only)

* SSH 1をサポートしていることを見つけます。
* Medium：SSH 2以上をサポートするよう `/etc/ssh/sshd_config` の ` Protocol 2` を設定するよう案内されています。
* 設定の詳細は、`man sshd_config` を参照。

####Disable Password Authentication Over SSH[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html)

* SSH接続にてパスワード認証をサポートしていることを見つけます。
* Medium：パスワード認証は無効化し、鍵認証方式で構成するよう推奨します。
* 詳細はhttps://aws.amazon.com/articles/1233/ を参照
* もし、パスワード認証を構成する場合、信頼できるIPアドレスのみSSH接続できるようにすることが重要。

####Configure Password Maximum Age[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html#password-maximum-age)

* インスタンス上のパスワードの有効期限が設定されていないことを見つけます。
* Medium：`/etc/login.defs` の `PASS_MAX_DAYS` の値を編集してすべてのユーザにパスワードの有効期限を設定することを推奨します。

####Configure Password Minimum Length[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html#password-minimum-length)

* インスタンス上のパスワードの最小文字数が設定されていないことを見つけます。
* Medium：PAM設定の `pam_cracklib.so` の `minlen` パラメータを設定し、強制的にパスワードの最小文字列を設定するよう推奨します。
* 詳細は、 `man pam_cracklib` を参照。

####Configure Password Complexity[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_authentication-best-practices.html)

* インスタンス上のパスワードの複雑さ設定がなされていないことを見つけます。
* Medium：`pam_cracklib.so`内にてlcredit,ucredit,dcredit,ocredit設定を使用することを推奨します。
* 詳細は、`man pam_cracklib` を参照。

###Operating System Security Best Practices[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_operating-system-security-best-practices.html)

####DEP Enabled[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_operating-system-security-best-practices.html)
* アプリケーション内のインスタンスにDEP(データ実行防止)が無効化されていることを見つけます。
* Medium：DEPを有効にすることを推奨します(buffer over flow攻撃対策)

####Address Space Layout Randomization Enabled[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_operating-system-security-best-practices.html#ASLR)

* アプリケーション内のインスタンスにASLR(アドレス空間のランダム化)が無効化されていることを見つけます。
* Medium：`echo 2 | sudo tee /proc/sys/kernel/randomize_va_space` を実行してASLRを有効化することを推奨します。

####System Directories Writable for Root Users Only[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_operating-system-security-best-practices.html)

* システムディレクトリ領域が、rootユーザ以外で編集できることを見つけます。
* High：システムディレクトリ領域は、rootユーザのみ編集できるよう構成することを推奨します。

####Secure Access to High Privilege Processes[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_operating-system-security-best-practices.html#secure-acess-to-high-privilege-processes)

* 認証されないアクセスで高い権限のプロセスが実行できることを見つけます。
* High：rootでのみ書き込みできるよう関連したモジュールを修正することを推奨します。

###Application Security Best Practices[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_application-security-best-practices.html)

####Stack Cookies Enabled[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_application-security-best-practices.html#stack-cookies-enabled)

* stack cookiesをサポートしない実行可能ファイルが、インスタンス上で稼働していることを見つけます。
* Medium：対象のアプリケーションをアンインストールするか、stack cookiesを有効化することを推奨します。

####Data Execution Prevention Enabled[参照箇所](https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_application-security-best-practices.html#DEP-APP)

* アプリケーション内のインスタンスにDEP(データ実行防止)が無効化されていることを見つけます。
* Medium：DEPを有効にすることを推奨します(buffer over flow攻撃対策)

以上です。
お疲れ様でした。