26 Phương pháp bảo mật AWS tốt nhất – Phần 2
Mục lục
Một trong những trụ cột chính chống đỡ một khung kiến trúc tốt là vấn đề bảo mật. Vì vậy, các doanh nghiệp nên tham khảo và áp dụng các phương pháp bảo mật AWS tuyệt vời nhất dưới đây để phòng ngừa xảy ra các tình huống bảo mật không đáng có.
Có nhiều thứ bạn phải thiết lập nếu muốn giải pháp của mình vận hành một cách an toàn, tin cậy, hiệu quả và tiết kiệm chi phí. Và thời điểm tốt nhất để thiết lập các tiêu chuẩn đó là ngay bây giờ – từ thời điểm đầu tiên bạn bắt đầu thiết kế và kỹ thuật. Tiếp theo Phần 1, đây là các biện pháp bảo mật AWS tiếp theo tốt nhất để áp dụng trong môi trường production.
Amazon S3
Amazon Simple Storage Service (Amazon S3) là một dịch vụ lưu trữ dữ liệu có khả năng mở rộng, tính sẵn sàng của dữ liệu, bảo mật và hiệu suất hàng đầu trong ngành. Có một số biện pháp bảo mật AWS tối ưu nhất để áp dụng khi nói đến S3.
9.- Bật cài đặt S3 Block Public Access 🟨🟨
Amazon S3 public access block được thiết kế để kiểm soát trên toàn bộ tài khoản AWS cho đến từng S3 bucket riêng lẻ nhằm đảm bảo rằng các đối tượng không thể được truy cập công khai từ bên ngoài. Quyền truy cập công khai được cấp cho các nhóm và đối tượng thông qua danh sách kiểm soát truy cập (access control lists – ACL), chính sách của bucket hoặc cả hai.
Trừ khi bạn có ý định để S3 buckets của mình có thể truy cập công khai, nếu không thì bạn nên cấu hình lại tính năng Amazon S3 Block Public Access ở cấp tài khoản.
Lấy tên tất cả các S3 buckets có sẵn trong tài khoản AWS của bạn:
aws s3api list-buckets –query ‘Buckets[*].Name’
Đối với mỗi bucket, lấy thông tin cấu hình tính năng S3 Block Public Access:
aws s3api get-public-access-block –bucket BUCKET_NAME
Kết quả của lệnh đó sẽ như sau:
“PublicAccessBlockConfiguration”: {
“BlockPublicAcls”: false,
“IgnorePublicAcls”: false,
“BlockPublicPolicy”: false,
“RestrictPublicBuckets”: false
}
Nếu bất kỳ giá trị nào trong các giá trị trên này false, thì quyền riêng tư dữ liệu của bạn đang bị đe dọa. Sử dụng lệnh này để khắc phục nó:
aws s3api put-public-access-block
–region REGION
–bucket BUCKET_NAME
–public-access-block-configuration BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true
10.- S3 buckets phải được bật mã hóa từ phía máy chủ 🟥🟥🟥
Để tăng cường bảo mật cho dữ liệu nhạy cảm của bạn trong S3 buckets, bạn nên định cấu hình buckets của mình bằng mã hóa phía máy chủ để bảo vệ dữ liệu của bạn trong lúc lưu trữ. Amazon S3 mã hóa từng đối tượng bằng một khóa duy nhất. Như một biện pháp bảo vệ bổ sung, Amazon S3 tự mã hóa khóa bằng một khóa gốc có thể thường xuyên thay đổi. Mã hóa từ phía máy chủ Amazon S3 sử dụng một trong những block ciphers mạnh nhất hiện có để mã hóa dữ liệu của bạn, đó là 256-bit Advanced Encryption Standard (AES-256).
Liệt kê tất cả các S3 buckets hiện có trong tài khoản AWS của bạn:
aws s3api list-buckets –query ‘Buckets[*].Name’
Bây giờ, hãy sử dụng tên của các S3 buckets được trả về ở bước trước làm số nhận dạng để có thể truy xuất trạng thái Mã hóa mặc định của chúng:
aws s3api get-bucket-encryption –bucket BUCKET_NAME
Kết quả lệnh sẽ trả về các chi tiết cấu hình của tính năng được yêu cầu. Nếu kết quả trả về của lệnh get-bucket-encryption thông báo lỗi, thì mã hóa mặc định hiện đang không được bật.
Lặp lại quy trình này cho tất cả các S3 bucket của bạn.
Bắt đầu từ bây giờ, Amazon Simple Storage Service (Amazon S3) sẽ mặc định mã hóa tất cả các đối tượng mới với phương thức mã hóa phía máy chủ S3 (SSE-S3). Ngoại trừ bạn chỉ định một tùy chọn mã hóa khác với mặc định này.
11.- Cài đặt S3 Block Public Access phải được bật ở mức bucket 🟨🟨
Amazon S3 public access block được thiết kế để kiểm soát từ toàn bộ tài khoản AWS cho đến từng S3 bucket riêng lẻ nhằm đảm bảo rằng các đối tượng không bao giờ có quyền truy cập công khai. Quyền truy cập công khai được cấp cho các nhóm và đối tượng thông qua danh sách kiểm soát truy cập (access control lists – ACL), chính sách của bucket hoặc cả hai.
Trừ khi bạn có ý định để S3 buckets của mình có thể truy cập công khai, nếu không thì bạn nên cấu hình lại tính năng Amazon S3 Block Public Access ở cấp tài khoản.
Bạn có thể sử dụng các rule từ Cloud Custodian này để phát hiện các S3 bucket có thể truy cập công khai:
– name: buckets-public-access-block
description: Amazon S3 provides Block public access (bucket settings) and Block public access (account settings) to help you manage public access to Amazon S3 resources. By default, S3 buckets and objects are created with public access disabled. However, an IAM principle with sufficient S3 permissions can enable public access at the bucket and/or object level. While enabled, Block public access (bucket settings) prevents an individual bucket, and its contained objects, from becoming publicly accessible. Similarly, Block public access (account settings) prevents all buckets, and contained objects, from becoming publicly accessible across the entire account.
resource: s3
filters:
– or:
– type: check-public-block
BlockPublicAcls: false
– type: check-public-block
BlockPublicPolicy: false
– type: check-public-block
IgnorePublicAcls: false
– type: check-public-block
RestrictPublicBuckets: false
AWS CloudTrail
AWS CloudTrail là một dịch vụ của AWS giúp bạn quản trị, tuân thủ cũng như kiểm tra các hoạt động và rủi ro đối với tài khoản AWS của bạn. Các hành động do người dùng, vai trò hoặc dịch vụ AWS thực hiện được ghi lại dưới dạng sự kiện trong CloudTrail. Các sự kiện bao gồm các hành động được thực hiện trong AWS Management Console, AWS Command Line Interface cũng như SDK và API AWS.
Phần sau đây sẽ giúp bạn cấu hình lại CloudTrail để giám sát cơ sở hạ tầng trên tất cả các regions của bạn.
12.- CloudTrail phải được bật và định cấu hình với ít nhất một multi-Region trail 🟥🟥🟥
CloudTrail cung cấp lịch sử các lệnh triệu tập API AWS của một tài khoản, bao gồm các lệnh triệu tập API được thực hiện từ AWS Management Console, AWS SDK và các dòng lệnh. Lịch sử cũng bao gồm các lệnh triệu tập API từ các dịch vụ AWS cấp cao hơn, chẳng hạn như AWS CloudFormation.
Lịch sử triệu tập AWS API do CloudTrail tạo ra cho phép thực hiện các phân tích tính bảo mật, theo dõi thay đổi tài nguyên và kiểm tra tính tuân thủ. Multi-Region trails cũng mang lại những lợi ích sau.
- Multi-Region trail giúp phát hiện hoạt động không mong muốn xảy ra ở những Regions không được sử dụng.
- Multi-Region trail đảm bảo rằng tính năng global service event logging được bật cho trail theo như mặc định. Global service event logging ghi lại các sự kiện được tạo bởi các dịch vụ của AWS trên toàn cầu.
- Đối với multi-Region trail, các việc quản lý cho tất cả hoạt động đọc và ghi sẽ đảm bảo rằng CloudTrail sẽ ghi lại các hoạt động quản lý trên tất cả các tài nguyên của tài khoản AWS.
Theo mặc định, CloudTrail trails được tạo bằng AWS Management Console là các multi-Region trails.
Liệt kê tất cả các trails có sẵn trong AWS region đã chọn:
aws cloudtrail describe-trails
Output hiển thị từng AWS CloudTrail trail cùng với chi tiết cấu hình của nó. Nếu giá trị tham số cấu hình của IsMultiRegionTrail là sai, thì trail đã chọn hiện không được bật cho tất cả các AWS regions:
{
“trailList”: [
{
“IncludeGlobalServiceEvents”: true,
“Name”: “ExampleTrail”,
“TrailARN”: “arn:aws:cloudtrail:us-east-1:123456789012:trail/ExampleTrail”,
“LogFileValidationEnabled”: false,
“IsMultiRegionTrail”: false,
“S3BucketName”: “ExampleLogging”,
“HomeRegion”: “us-east-1”
}
]
}
Xác minh rằng tất cả các trails của bạn và đảm bảo rằng ít nhất có một multi-Region trail.
13.- CloudTrail nên bật tính năng mã hóa khi lưu trữ dữ liệu🟨🟨
Kiểm tra xem CloudTrail có được cấu hình để sử dụng mã hóa phía máy chủ (SSE) với AWS Key Management Service có khóa chính quản lý bởi người dùng (CMK).
Kiểm tra sẽ đạt yêu cầu nếu KmsKeyId được cấu hình. Để tăng cường bảo mật cho các tập tin nhật ký CloudTrail chứa thông tin nhạy cảm, bạn nên sử dụng mã hóa phía máy chủ AWS KMS–managed keys (SSE-KMS) cho các tập tin nhật ký CloudTrail của mình để mã hóa khi lưu trữ. Lưu ý rằng theo mặc định, các tệp nhật ký do CloudTrail lưu trữ lên các bucket của bạn được mã hóa bằng mã hóa phía máy chủ của Amazon với Amazon S3-managed encryption keys (SSE-S3).
Bạn có thể kiểm tra xem nhật ký có được mã hóa bằng các rule từ Cloud Custodian sau:
– name: cloudtrail-logs-encrypted-at-rest
description: AWS CloudTrail is a web service that records AWS API calls for an account and makes those logs available to users and resources in accordance with IAM policies. AWS Key Management Service (KMS) is a managed service that helps create and control the encryption keys used to encrypt account data, and uses Hardware Security Modules (HSMs) to protect the security of encryption keys. CloudTrail logs can be configured to leverage server side encryption (SSE) and KMS customer created master keys (CMK) to further protect CloudTrail logs. It is recommended that CloudTrail be configured to use SSE-KMS.
resource: cloudtrail
filters:
– type: value
key: KmsKeyId
value: absent
Bạn có thể khắc phục sự cố bằng AWS Console như sau:
- Đăng nhập vào AWS Management Console tại https://console.aws.amazon.com/cloudtrail/.
- Bên trái navigation panel, chọn Trails.
- Trong cột Name, hãy chọn tên trail mà bạn cần cập nhật.
- Nhấp vào biểu tượng bút chì bên cạnh S3 section để chỉnh sửa cấu hình trail bucket..
- Trong S3 bucket* nhấp chọn Advanced.
- Chọn Yes bên cạnh Encrypt log files để mã hóa tệp nhật ký của bạn với SSE-KMS bằng cách dùng Customer Master Key (CMK)
- Chọn Yes bên cạnh Create a new KMS để tạo CMK mới và nhập tên cho nó hoặc chọn No để sử dụng khóa mã hóa CMK hiện có trong region.
- Nhấp vào Save để bật mã hóa SSE-KMS.
14.- Đảm bảo bật tính năng xác thực tệp nhật ký CloudTrail 🟨🟨
Quá trình xác thực tệp nhật ký CloudTrail tạo một tệp thông báo được ký điện tử có chứa hash của mỗi nhật ký mà CloudTrail ghi vào Amazon S3. Bạn có thể sử dụng các tệp thông báo này để xác định xem tệp nhật ký có bị thay đổi, xóa hay không thay đổi từ sau khi CloudTrail gửi nhật ký hay không.
Bạn nên bật xác thực tệp trên tất cả các trails. Xác thực tệp nhật ký cung cấp các kiểm tra bổ sung về tính toàn vẹn của nhật ký CloudTrail.
Để kiểm tra điều này trong AWS Console, hãy tiến hành như sau:
- Đăng nhập vào AWS Management Console tại https://console.aws.amazon.com/cloudtrail/.
- Bên trái bảng điều hướng, hãy chọn Trails.
- Bên dưới Name column, chọn tên trail name mà bạn cần kiểm tra.
- Dưới S3 section, kiểm tra Enable log file validation status:
- Bật log file validation status. Nếu trạng thái đang là No, thì trail được chọn đang không bật log file integrity validation. Trong trường hợp này, bạn có thể sữa chữa bằng cách:
- Nhấp vào biểu tượng bút chì bên cạnh phần S3 để chỉnh sửa trail bucket configuration.
- Trong S3 bucket* click Advanced và tìm Enable log file validation configuration status.
- Chọn Yes để bật log file validation, sau đó click Save.
Tìm hiểu thêm về các phương pháp hay nhất về bảo mật trong AWS Cloudtrail.
AWS Config
AWS Config cung cấp chi tiết về các tài nguyên được liên kết với tài khoản AWS của bạn, bao gồm cấu hình của chúng, cách chúng liên quan với nhau, cách cấu hình cũng như mối quan hệ của chúng theo thời gian.
15.- AWS Config nên được kích hoạt 🟥🟥🟥
Dịch vụ AWS Config quản lý cấu hình các tài nguyên AWS được hỗ trợ trong tài khoản của bạn và cung cấp các tệp nhật ký cho bạn. Thông tin được ghi lại bao gồm các mục cấu hình (tài nguyên AWS), mối quan hệ giữa các mục cấu hình và các thay đổi cấu hình giữa các tài nguyên.
Bạn nên bật AWS Config ở tất cả các Regions. Lịch sử mục cấu hình AWS mà AWS Config nắm bắt cho phép phân tích tính bảo mật, theo dõi biến động của tài nguyên và kiểm tra tính tuân thủ.
Nhận trạng thái của tất cả các bộ ghi cấu hình và kênh phân phối được tạo bởi Config service trong region đã chọn:
aws configservice –region REGION get-status
Output từ lệnh trên hiển thị trạng thái của tất cả các AWS Config delivery channels và bộ ghi cấu hình có sẵn. Nếu AWS Config không được bật, danh sách tất cả các bộ ghi cấu hình và delivery channels sẽ hiển thị trống:
Configuration Recorders:
Delivery Channels:
Hoặc, nếu dịch vụ đã được bật trước đây nhưng hiện đã bị tắt, trạng thái sẽ được chuyển thành OFF:
Configuration Recorders:
name: default
recorder: OFF
Delivery Channels:
name: default
last stream delivery status: NOT_APPLICABLE
last history delivery status: SUCCESS
last snapshot delivery status: SUCCESS
Để khắc phục điều này, sau khi bạn bật AWS Config, hãy cấu hình lại để ghi lại tất cả tài nguyên:
- Mở the AWS Config console tại https://console.aws.amazon.com/config/.
- Chọn Region để cấu hình AWS Config vào.
- Nếu bạn chưa từng dùng AWS Config trước đây, hãy đọc Getting Started bên trong AWS Config Developer Guide.
- Điều hướng đến trang Settings từ menu và thực hiện như sau:
- Chọn Edit.
- Trong Resource types đã được ghi nhận, chọn Record all resources supported in this region bao gồm cả global resources (Ví dụ: AWS IAM resources).
- Trong Data retention period, chọn khoảng thời gian lưu giữ mặc định cho dữ liệu AWS Config hoặc chỉ định khoảng thời gian lưu giữ tùy chỉnh.
- Trong AWS Config role, chọn vai trò Create AWS Config service-linked hoặc Chọn một vai trò từ tài khoản của bạn rồi chọn vai trò sẽ sử dụng.
- Trong Amazon S3 bucket, chỉ định bucket sẽ dùng hoặc tạo bucket và chọn các tiền tố tùy ý bên trong.
- Trong Amazon SNS topic, chọn Amazon SNS topic từ tài khoản của bạn hay tạo mới 1 topic. Để biết thêm thông tin về Amazon SNS, hãy xem Amazon Simple Notification Service Getting Started Guide.
- Chọn Save.
Để tìm hiểu sâu hơn, hãy làm theo các phương pháp tối ưu nhất về bảo mật AWS cho AWS Config.
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) là một dịch vụ web cung cấp máy chủ có thể thay đổi dung lượng mà bạn sử dụng để xây dựng và lưu trữ hệ thống phần mềm của mình. Do đó, EC2 là một trong những dịch vụ cốt lõi của AWS và bạn sẽ cần phải biết các biện pháp bảo mật tốt nhất cũng như cách bảo mật EC2.
16.- Ổ đĩa EBS đính kèm phải được mã hóa khi lưu trữ 🟥🟥🟥
Mục đích của kiểm tra là để xem các ổ đĩa EBS ở trạng thái đính kèm có được mã hóa hay không. Để vượt qua bước kiểm tra này, ổ đĩa EBS phải được sử dụng và mã hóa. Nếu dung lượng EBS không được đính kèm, thì nó không cần phải kiểm tra.
Để tăng cường bảo mật cho dữ liệu nhạy cảm của bạn trong ổ đĩa EBS, bạn nên bật mã hóa EBS khi lưu trữ. Mã hóa Amazon EBS cung cấp giải pháp mã hóa đơn giản cho các tài nguyên EBS của bạn mà không yêu cầu bạn phải xây dựng, duy trì và bảo mật cơ sở hạ tầng để quản lý khóa của mình. Nó sử dụng các khóa KMS mã hóa ổ đĩa và snapshot.
Chạy lệnh description-volume để xác định xem ổ đĩa EC2 Elastic Block Store của bạn có được mã hóa hay không:
aws ec2 describe-volumes
–filters Name=attachment.instance-id, Values=INSTANCE_ID
Output lệnh sẽ hiển thị trạng thái mã hóa ổ đĩa EBS của phiên bản (True là đã kích hoạt, False là vô hiệu hóa).
Không có cách nào để trực tiếp mã hóa một ổ đĩa và snapshot hiện chưa được mã hóa. Bạn chỉ có thể mã hóa một ổ đĩa hoặc snapshot mới khi bạn khởi tạo nó.
Nếu bạn bật mã hóa theo mặc định, Amazon EBS sẽ mã hóa ổ đĩa hoặc snapshot mới thu được bằng cách sử dụng khóa mặc định của bạn để mã hóa Amazon EBS. Ngay cả khi bạn không bật mã hóa theo mặc định, bạn có thể bật mã hóa khi tạo một ổ đĩa hoặc snapshot riêng lẻ. Trong cả hai trường hợp, bạn có thể ghi đè khóa mặc định để mã hóa Amazon EBS và chọn một khóa đối xứng do khách hàng quản lý.
17.- VPC Flow Logs phải được bật trong tất cả các VPC 🟩
Với tính năng VPC Flow Logs, bạn có thể nắm bắt thông tin về lưu lượng truy cập địa chỉ IP đến và từ các giao diện mạng trong VPC của mình. Sau khi tạo luồng nhật ký, bạn có thể xem và truy xuất dữ liệu của nó trong Nhật ký CloudWatch. Để giảm chi phí, bạn cũng có thể gửi luồng nhật ký của mình tới Amazon S3.
Bạn nên kích hoạt ghi uồng nhật ký lđể từ chối gói từ VPC. Nhật ký luồng cung cấp thông tin về lưu lượng truy cập mạng đi qua VPC và có thể phát hiện lưu lượng truy cập bất thường hoặc cung cấp thông tin chuyên sâu trong quy trình bảo mật. Theo mặc định, bản ghi bao gồm các giá trị cho các thành phần khác nhau của luồng địa chỉ IP, bao gồm nguồn, đích và giao thức.
– name: flow-logs-enabled
description: VPC Flow Logs is a feature that enables you to capture information about the IP traffic going to and from network interfaces in your VPC. After you’ve created a flow log, you can view and retrieve its data in Amazon CloudWatch Logs. It is recommended that VPC Flow Logs be enabled for packet ‘Rejects’ for VPCs.
resource: vpc
filters:
– not:
– type: flow-logs
enabled: true
18.- Nhóm bảo mật mặc định của VPC không được cho phép lưu lượng truy cập vào và ra 🟩
Các quy tắc nhóm bảo mật mặc định cho phép tất cả lưu lượng truy cập ra và vào từ các giao diện mạng (và các phiên bản được liên kết của chúng) được gán cho cùng một nhóm bảo mật.
Chúng tôi khuyên bạn không nên sử dụng nhóm bảo mật mặc định. Vì không thể xóa nhóm bảo mật mặc định, bạn nên thay đổi cài đặt quy tắc nhóm bảo mật mặc định để hạn chế lưu lượng truy cập vào và ra. Điều này ngăn chặn lưu lượng ngoài ý muốn nếu nhóm bảo mật mặc định vô tình được định cấu hình cho các tài nguyên, chẳng hạn như các phiên bản EC2.
Nhận mô tả về nhóm bảo mật mặc định trong region đã chọn:
aws ec2 describe-security-groups
–region REGION
–filters Name=group-name,Values=’default’
–output table
–query ‘SecurityGroups[*].IpPermissions[*].IpRanges’
Nếu lệnh này không trả về bất kỳ output nào, thì nhóm bảo mật mặc định không cho phép lưu lượng truy cập vào công khai. Mặt khác, nó sẽ trả về các IP nguồn lưu lượng truy cập vào được xác định, như trong ví dụ sau:
————————
|DescribeSecurityGroups|
+——————-+
| CidrIp |
+——————-+
| 0.0.0.0/0 |
| ::/0 |
| 1.2.3.4/32 |
| 1.2.3.5/32 |
+——————-+
Nếu các IP được trả về là 0.0.0.0/0 hoặc ::/0, thì nhóm bảo mật mặc định đã chọn sẽ cho phép lưu lượng truy cập vào công khai. Trước đây, chúng tôi đã giải thích các mối đe dọa thực sự là gì khi bảo mật SSH trên EC2.
Để khắc phục sự cố này, hãy tạo các nhóm bảo mật mới và chỉ định các nhóm bảo mật đó cho tài nguyên của bạn. Để ngăn các nhóm bảo mật mặc định được sử dụng, hãy xóa các quy tắc gửi đến và gửi đi của chúng.
19.- Nên bật mã hóa mặc định EBS 🟥🟥🟥
Khi mã hóa được bật cho tài khoản của bạn, ổ đĩa Amazon EBS và snapshot copies sẽ được mã hóa ở trạng thái lưu trữ. Điều này thêm một lớp bảo vệ bổ sung cho dữ liệu của bạn. Để biết thêm thông tin, hãy xem Mã hóa theo mặc định trongEncryption by default in the Amazon EC2 User Guide for Linux Instances.
Lưu ý rằng các loại phiên bản sau không hỗ trợ mã hóa: R1, C1 và M1.
Chạy lệnh get-ebs-encryption-by-default để biết liệu mã hóa EBS theo mặc định có được bật cho tài khoản đám mây AWS của bạn trong khu vực đã chọn hay không:
aws ec2 get-ebs-encryption-by-default
–region REGION
–query ‘EbsEncryptionByDefault’
Nếu lệnh trả về false, thì mã hóa dữ liệu ở trạng thái lưu trữ theo mặc định cho ổ đĩa EBS mới không được bật trong AWS region đã chọn. Sửa nó bằng lệnh sau:
aws ec2 enable-ebs-encryption-by-default
–region REGION
Kết luận
Sử dụng toàn bộ đám mây sẽ mở ra một thế giới khả năng mới, nhưng nó cũng mở ra cánh cửa rộng lớn cho các vectơ tấn công. Mỗi dịch vụ AWS mới mà bạn sử dụng đều có những nguy cơ tiềm ẩn riêng mà bạn cần nhận thức được và chuẩn bị kỹ càng.
May mắn thay, các công cụ bảo mật gốc trên đám mây đến từ Renova Cloud, Đối tác tư vấn của AWS chuyên về Bảo mật, có thể hướng dẫn bạn thực hiện các phương pháp hay nhất và giúp bạn tuân thủ các yêu cầu bảo mật của mình.
Tìm hiểu thêm về các biện pháp bảo mật tối ưu nhất trong AWS phần 1 tại đây