こんにちは、ひろかずです。
前回は、Amazon Inspectorを使ってみましたが、Amazon Inspector User Guideには、いろいろ良いことが書いてあったので、拾っていきたいと思います。
※ 本エントリは、2015/11/02現在のAmazon Inspector User Guideを参照しています。
※ わかりにくい訳になってしまう部分は、意訳しています。
参考資料
目的とゴール
Amazon Inspector User Guideを一通り読んで、役立ちそうな情報を拾うことで、試したいけど忙しい人(と未来の自分)を助ける。
What is Amazon Inspector? 参照箇所
Amazon Inspectorへのアクセス
- HTTP APIリファレンスがあります。
Amazon Inspector Terminology and Concepts 参照箇所
Application
- 現在、オレゴンリージョンにホストしているEC2でのみ使用できます。
- また、使用するために一致するTagとvalueが必要です。
Findings
- APIでも結果が見れます。
Setting up Amazon Inspector 参照箇所
- 初期設定方法が記載されています。
- 具体的な操作手順は、前回のAmazon Inspector プレビューを参照してください。
- 対応しているインスタンスは、
mazon Linux AMI 2015.03以降
またはUbuntu Server 14.04 LTS
です。
Amazon Inspector Quickstart Walkthrough 参照箇所
- 具体的な検査の仕方が
ハンズオン形式
で記載されています。 - ここではUbuntuを題材にしています。
- 現在は、Ubuntuだと指摘された脆弱性情報がFindingsにて参照できるようです。
Amazon Inspector Agents 参照箇所
- agent.cfgに重要な設定ファイルがあり、変更の際にはAmazon Inspector Agentsを再起動する必要があります。
- agent.cfgの変更は、AWS Supportの指示に従うことが強く推奨されています。
- agent.cfgの内容は以下のようなものでした。
$ 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の停止/起動
sudo /etc/init.d/inspector stop sudo /etc/init.d/inspector start
- Amazon Inspector Agentの状態確認
$ 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 参照箇所
- Amazon Inspector Agentのインストーラが正しいものであるかのPGPを用いた検証方法が記載されています。
- 検証の結果、異なるものの場合は、そのAmazon Inspector Agentのインストーラの使用を止め、AWSサポートへ連絡するようにとのことです。
Amazon Inspector Applications 参照箇所
Tagging Resources to Create an Application
- AWS Inspectorは、Applicationに該当するインスタンスを探す時、タグを参照する。
- タグ/キーの組み合わせが一つでも該当すれば、Applicationの一部と認識されます。
- カスタムタグを作成できます。
- タグは、同一AWSアカウント内のタグが使用できます。
- タグは、Nameキーのような、自動的に作成されたものも使用できます。
Amazon Inspector Application Limits
- Application数は、AWSアカウント毎に50が上限です。
Amazon Inspector Assessments 参照箇所
- 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 参照箇所
- Findingsは、セキュリティ問題の概要と推奨する解決方法を、AWSコンソール・APIそれぞれで表示する。
- 生成したFindingsにAmazon Inspector特有の属性を付与することで、これらの対応を追跡できる。
- 属性は、キーと値。
- 使い道としては、ステータスや担当者を付与する使い方がある。
Amazon Inspector Rules Packages and Rules 参照箇所
Severity Levels for Rules in Amazon Inspector
- Amazon Inspectorのルール毎に、重要度レベルがあります。
- High:アプリケーション内に情報守秘性、完全性、有効性に問題があることを示します。緊急事態とみなして即時の改善を実行するように勧めます。
- Medium:アプリケーション内に情報守秘性、完全性、有効性に問題があることを示します。メンテナンスやバージョンアップ等の機会で解決するよう勧めます。
- Low:アプリケーション内に情報守秘性、完全性、有効性に問題があることを示します。将来のバージョンアップの一部として、解決するよう勧めます。
- Informational:単純に対象アプリケーションのセキュリティ構成の詳細を示します。
Common Vulnerabilities and Exposures 参照箇所
- 本ルールにて検出対象となる対応CVEリストが公開されています。
Network Security Best Practices 参照箇所
- 本ルールでは、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 参照箇所
- このルールは、PCIDSS3.0 Standardの準備を助けます。
PCI DSS Requirement 1: Install and maintain a firewall configuration to protect cardholder data 参照箇所
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 参照箇所
Requirement 2.2.1 – Do not run multiple major services on a single EC2 instance 参照箇所
- Infomational:複数のサービスが単一インスタンス上で動作していないことの確認を助けます。
Requirement 2.2.3 – Use Secure Protocols 参照箇所
- 暗号化されていないポートやサービス(例: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 参照箇所
- Infomational:インスタンス上に不必要なサービスが稼働していないことを確認する助けになります。
Requirement 2.2.5 – Do not have unused protocols running 参照箇所
- 2.2.2と同じ内容です。誤植のようです。
Requirement 2.3 – Use Secure Protocols 参照箇所
- 暗号化されていないポートやサービス(例:FTP,Telnet,HTTP,IMAP,POP version 3,SMTP,SNMP versions 1/2,rsh,rlogin)を使用できるよう構成されていることを見つけます。
- Infomational:SFTPやSCP,HTTPSの利用を推奨します。
Authentication Best Practices 参照箇所
Disable root log in over SSH 参照箇所
- rootでのSSHログインできるように構成されていることを見つけます。
- Medium:ソリューションとして
/etc/ssh/sshd_config
にてPermitRootLogin
をno
に設定することが案内されています。
Support SSH Version 2 Only 参照箇所
- SSH 1をサポートしていることを見つけます。
- Medium:SSH 2以上をサポートするよう
/etc/ssh/sshd_config
のProtocol 2
を設定するよう案内されています。 - 設定の詳細は、
man sshd_config
を参照。
Disable Password Authentication Over SSH 参照箇所
- SSH接続にてパスワード認証をサポートしていることを見つけます。
- Medium:パスワード認証は無効化し、鍵認証方式で構成するよう推奨します。
- 詳細は https://aws.amazon.com/articles/1233/ を参照
- もし、パスワード認証を構成する場合、信頼できるIPアドレスのみSSH接続できるようにすることが重要。
Configure Password Maximum Age 参照箇所
- インスタンス上のパスワードの有効期限が設定されていないことを見つけます。
- Medium:
/etc/login.defs
のPASS_MAX_DAYS
の値を編集してすべてのユーザにパスワードの有効期限を設定することを推奨します。
Configure Password Minimum Length 参照箇所
- インスタンス上のパスワードの最小文字数が設定されていないことを見つけます。
- Medium:PAM設定の
pam_cracklib.so
のminlen
パラメータを設定し、強制的にパスワードの最小文字列を設定するよう推奨します。 - 詳細は、
man pam_cracklib
を参照。
Configure Password Complexity 参照箇所
- インスタンス上のパスワードの複雑さ設定がなされていないことを見つけます。
- Medium:
pam_cracklib.so
内にてlcredit,ucredit,dcredit,ocredit設定を使用することを推奨します。
詳細は、man pam_cracklib
を参照。
Operating System Security Best Practices 参照箇所
DEP Enabled 参照箇所
- アプリケーション内のインスタンスにDEP(データ実行防止)が無効化されていることを見つけます。
- Medium:DEPを有効にすることを推奨します(buffer over flow攻撃対策)
Address Space Layout Randomization Enabled 参照箇所
- アプリケーション内のインスタンスにASLR(アドレス空間のランダム化)が無効化されていることを見つけます。
- Medium:
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
を実行してASLRを有効化することを推奨します。
System Directories Writable for Root Users Only 参照箇所
- システムディレクトリ領域が、rootユーザ以外で編集できることを見つけます。
- High:システムディレクトリ領域は、rootユーザのみ編集できるよう構成することを推奨します。
Secure Access to High Privilege Processes 参照箇所
- 認証されないアクセスで高い権限のプロセスが実行できることを見つけます。
- High:rootでのみ書き込みできるよう関連したモジュールを修正することを推奨します。
Application Security Best Practices 参照箇所
Stack Cookies Enabled 参照箇所
- stack cookiesをサポートしない実行可能ファイルが、インスタンス上で稼働していることを見つけます。
- Medium:対象のアプリケーションをアンインストールするか、stack cookiesを有効化することを推奨します。
Data Execution Prevention Enabled 参照箇所
- アプリケーション内のインスタンスにDEP(データ実行防止)が無効化されていることを見つけます。
- Medium:DEPを有効にすることを推奨します(buffer over flow攻撃対策)
以上です。
お疲れ様でした。