AWS Security Hub『基礎セキュリティのベストプラクティス』の新しいコントロールを見ていく【2021/07】
ECSのチェックができるようになりました
↓ざっと見ていきます (計 28個)
Added controls to the AWS Foundational Security Best Practices standard
Added new controls for Amazon API Gateway (APIGateway.5), Amazon EC2 (EC2.19), Amazon ECS (ECS.2), Elastic Load Balancing (ELB.7), Amazon Elasticsearch Service (ES.5 through ES.8), Amazon RDS (RDS.16 through RDS.23), Amazon Redshift (Redshift.4), and Amazon SQS (SQS.1).
July 20, 2021
Added controls to the AWS Foundational Security Best Practices standard
Added new controls for Amazon API Gateway (APIGateway.4), Amazon CloudFront (CloudFront.5 and CloudFront.6), Amazon EC2 (EC2.17 and EC2.18), Amazon ECS (ECS.1), Amazon Elasticsearch Service (ES.4), AWS Identity and Access Management (IAM.21), Amazon RDS (RDS.15), and Amazon S3 (S3.8).
July 8, 2021
—- Document history for the AWS Security Hub User Guide - AWS Security Hub
※
ドキュメント: https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html
※ 2021/07/23時点、多くの新規コントロールには以下 注釈(Note) があります
This control is still in the release process. It might not yet be available in all of the Regions where it is supported.
このコントロールはまだリリースされていません。サポートされているすべての地域では、まだ利用できない可能性があります。
[ECS.1] Amazon ECSのタスク定義は、安全なネットワークモードとユーザ定義を持つべきである。
重要度: High
- host ネットワーキングモードが対象
- 意図しない特権付与を検知
[ECS.2] Amazon ECSサービスは、パブリックIPアドレスを自動的に割り当ててはいけません
重要度: High
- パブリックIPは基本いらないはず
- アウトバウンドは NATGWや VPCエンドポイント使おう
- インバウンドは ALB
[SQS.1] Amazon SQSのキューは静止時に暗号化されるべきである
重要度: Medium
- 基本はデータの暗号化は検討したい
- ただ AWS管理キーの場合はキーポリシーを編集できないので不便が出てきそう
[APIGateway.4] API Gatewayは、AWS WAFのWeb ACLと関連付ける必要があります。
重要度: Medium
- 前段に CloudFront がある場合はそちらに Web ACLを そうでない場合は APIGW に付けると良い?
[APIGateway.5] API Gateway REST APIのキャッシュデータは静止時に暗号化されるべきである
重要度: Medium
- 基本はデータの暗号化は検討したい
- 『キャッシュデータの暗号化は、キャッシュされているときのレスポンスのサイズを増やす可能性があります。』
- https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-caching.html
[CloudFront.5] CloudFrontの配布物はログを有効にする必要がある
重要度: Medium
- S3バケットへ保存
- WAFログを取っている場合も必要?要調査
[CloudFront.6] CloudFrontのディストリビューションはAWS WAFを有効にする必要があります。
重要度: Medium
- ほぼ必須?
- WAF側のルールチューニング、運用周りをしっかりと対応する前提
[EC2.17] EC2インスタンスは複数のENIを使用してはならない
重要度: Low
Multiple ENIs can cause dual-homed instances, meaning instances that have multiple subnets. This can add network security complexity and introduce unintended network paths and access.
複数のENIを使用すると、デュアルホームのインスタンス(複数のサブネットを持つインスタンス)が発生します。これにより、 ネットワークセキュリティが複雑になり、意図しないネットワークパスやアクセス が発生する可能性があります。
なるほど
[EC2.18] セキュリティグループは、許可されたポートに対する無制限の受信トラフィックのみを許可する必要がある
重要度: High
- 許可されたポートは 80番と 443番のみ? (Security Hub で生成された Config Rule だからここはカスタマイズ不可?)
- 他に許可したいポートがある場合は自前で Config Rule 作る必要がありそう
[EC2.19] セキュリティグループは、リスクの高いポートへの無制限のアクセスを許可してはならない
重要度: Medium
- 以下ポートの無制限アクセスの許可を検知する
- 汎用性が高そう
3389 (RDP), 20, 21 (FTP), 22 (SSH), 23 (Telnet), 110 (POP3), 143 (IMAP), 3306 (mySQL), 8080 (proxy), 1433, 1434 (MSSQL), 9200 or 9300 (Elasticsearch), 5601 (Kibana), 25 (SMTP), 445 (CIFS), 135 (RPC), 4333 (ahsp), 5432 (postgresql), 5500 (fcp-addr-srvr1)
[ELB.7] Classic Load Balancer では Connection Draining を有効にする必要があります
重要度: Medium
- Connection Draining は 登録解除された or Unhealthyなインスタンスへのリクエスト送信を確実に停止するためのもの
- (そもそも CLB を使わないチェック項目があっても良いのでは...?)
[IAM.21] 作成したIAMカスタマーマネージメントポリシーでは、サービスに対するワイルドカードアクションを許可してはならない
重要度: Low
-
ec2:*
とかの書き方が検知されるみたい - アクションはワイルドカードを使って、リソースを絞るケースは多々あると思うので、これは無理に対応しなくても良さそう
[Redshift.4] Amazon Redshiftクラスターは監査ログを有効にする必要があります
重要度: Medium
- S3へ保存
- 基本有効化で良さそう
[S3.8] S3ブロックのパブリックアクセス設定はバケットレベルで有効にすべき
重要度: High
-
[S3.1] S3 Block Public Access setting should be enabled
がアカウント全体設定だったけど、これはバケット単位のチェック - パブリックアクセスが必要な場合は「抑制済み」対応で良さそう。定期的にチェックしたい項目
▼残り
- Elasticsearch Service
ES.4 〜 ES.8
- RDS
RDS.15 〜 RDS.23
(多い...)
[ES.4] Amazon Elasticsearch ServiceのドメインエラーのCloudWatch Logsへのロギングが有効であること
重要度: Medium
- CW Logs なので費用を検討
[ES.5] Elasticsearchドメインは監査ログを有効にすべきである
重要度: Medium
- CW Logs なので費用を検討
[ES.6] Elasticsearchドメインは少なくとも3つのデータノードを持つべきである
重要度: Medium
- 可用性を高めたい本番環境の場合は対応
[ES.7] Elasticsearchドメインには、少なくとも3つの専用マスターノードを設定する必要がある
重要度: Medium
- 可用性を高めたい本番環境の場合は対応
[ES.8] Elasticsearchドメインへの接続はTLS 1.2で暗号化すべきである
重要度: Medium
- TLSのバージョンチェック
- 基本対応
[RDS.15] RDS DBクラスターは複数のアベイラビリティーゾーンに対して構成されるべきである
重要度: Medium
-
[RDS.5] RDS DBインスタンスは複数のアベイラビリティー・ゾーンで構成されるべきである
の Aurora版 - AZ配置によるコストを考慮
- 高可用性が求められる環境では有効化
[RDS.16] RDS DBクラスターは、スナップショットにタグをコピーするように構成されるべきである
重要度: Low
- リソースの識別/管理のために(地味だけど)役に立つはず
[RDS.17] RDS DBインスタンスは、スナップショットにタグをコピーするように設定する必要があります。
重要度: Low
- ↑
[RDS.16]
のインスタンス版
[RDS.18] RDSインスタンスはVPC内に配置すべきである
重要度: High
- VPC外にあるRDS(EC2-Classic RDS)の存在を初めて知った...
- EC2-Classic 環境のインスタンスと VPC 環境外の RDS DB インスタンスの見分け方を教えてください | DevelopersIO
[RDS.19] クラスタの重要なイベントについては、RDSイベント通知サブスクリプションを設定する必要があります
重要度: Low
-
DBCluster: ["maintenance","failure"]
の通知設定があるかどうか - EventBridge の通知でもOK?
- 使い分け参考: 【小ネタ】RDSイベント イベントサブスクリプションとEventBridgeの違い | DevelopersIO
[RDS.20] 重要なデータベースインスタンスのイベントに対して、RDSイベント通知のサブスクリプションを設定する必要があります
重要度: Low
-
DBInstance: ["maintenance","configuration change","failure"]
の通知設定があるかどうか - ↑
[RDS.19]
のインスタンス版
[RDS.21] 重要なデータベースパラメータグループイベントのために、RDSイベント通知サブスクリプションを設定する必要があります
重要度: Low
-
DBParameterGroup: ["configuration change"]
の通知設定があるかどうか
[RDS.22] 重要なデータベースセキュリティグループイベントのために、RDSイベント通知サブスクリプションを設定する必要があります
重要度: Low
-
DBSecurityGroup: ["configuration change","failure"]
の通知設定があるかどうか
[RDS.19]〜[RDS.22]
は、RDSイベントサブスクリプションじゃなくて
EventBridge や CloudTrail の活用に寄せても良さそう?
[RDS.23] RDSのデータベースとクラスタは、データベースエンジンのデフォルトポートを使用してはいけません
重要度: Low
- 適切なネットワーク配置、アクセス制御を行っていたら無理に対応しなくても良さそう
以上です
↓まとめ
[ECS.1] Amazon ECSのタスク定義には、安全なネットワークモードとユーザー定義が必要です
[ECS.2] Amazon ECS サービスは、パブリックIPアドレスを自動的に割り当ててはいけません
[SQS.1] Amazon SQSのキューは静止時に暗号化されるべきである
[APIGateway.4] API Gatewayは、AWS WAFのWeb ACLと関連付ける必要があります
[APIGateway.5] API Gateway REST APIのキャッシュデータは静止時に暗号化されるべきである
[CloudFront.5] CloudFrontの配布物はログを有効にする必要がある
[CloudFront.6] CloudFrontのディストリビューションはAWS WAFを有効にする必要があります
[EC2.17] EC2インスタンスは複数のENIを使用してはならない
[EC2.18] セキュリティグループは、許可されたポートに対する無制限の受信トラフィックのみを許可する必要がある
[EC2.19] セキュリティグループは、リスクの高いポートへの無制限のアクセスを許可してはならない
[ELB.7] Classic Load Balancer では Connection Draining を有効にする必要があります
[ES.4] Amazon Elasticsearch ServiceのドメインエラーのCloudWatch Logsへのロギングが有効であること
[ES.5] Elasticsearchドメインは監査ログを有効にすべきである
[ES.6] Elasticsearchドメインは少なくとも3つのデータノードを持つべきである
[ES.7] Elasticsearchドメインには、少なくとも3つの専用マスターノードを設定する必要がある
[ES.8] Elasticsearchドメインへの接続はTLS 1.2で暗号化すべきである
[IAM.21] 作成したIAMカスタマーマネージメントポリシーでは、サービスに対するワイルドカードアクションを許可してはならない
[RDS.15] RDS DBクラスターは複数のアベイラビリティーゾーンに対して構成されるべきである
[RDS.16] RDS DBクラスターは、スナップショットにタグをコピーするように構成されるべきである
[RDS.17] RDS DBインスタンスは、スナップショットにタグをコピーするように設定する必要があります
[RDS.18] RDSインスタンスはVPC内に配置すべきである
[RDS.19] クラスタの重要なイベントについては、RDSイベント通知サブスクリプションを設定する必要があります
[RDS.20] 重要なデータベースインスタンスのイベントに対して、RDSイベント通知のサブスクリプションを設定する必要があります
[RDS.21] 重要なデータベースパラメータグループイベントのために、RDSイベント通知サブスクリプションを設定する必要があります
[RDS.22] 重要なデータベースセキュリティグループイベントのために、RDSイベント通知サブスクリプションを設定する必要があります
[RDS.23] RDSのデータベースとクラスタは、データベースエンジンのデフォルトポートを使用してはいけません
[Redshift.4] Amazon Redshiftクラスターは監査ログを有効にする必要があります
[S3.8] S3ブロックのパブリックアクセス設定はバケットレベルで有効にすべき