Nhiều nhà phát triển tin rằng chỉ cần bật AWS CloudTrail là hệ thống của họ đã được giám sát đầy đủ và an toàn. Họ bật dịch vụ, thấy log được ghi lại và yên tâm rằng mọi hoạt động đều nằm trong tầm kiểm soát.
Tuy nhiên, giả định này là một cái bẫy nguy hiểm. Việc bật CloudTrail mới chỉ là bước đầu tiên. Một hệ thống CloudTrail được cấu hình sai lầm gần như tệ bằng việc không có nó chút nào, tạo ra một cảm giác an toàn giả tạo trong khi vẫn tồn tại những lỗ hổng nghiêm trọng.
Nếu bạn đang dùng AWS mà chưa cấu hình CloudTrail cẩn thận, thì nói thẳng một câu: 👉 khi có sự cố, bạn sẽ không biết chuyện gì đã xảy ra.
Bài viết này sẽ chỉ ra những sai lầm cấu hình phổ biến và có tác động lớn nhất, đồng thời hướng dẫn bạn cách khắc phục chúng dựa trên các phương pháp hay nhất (best practice) đã được kiểm chứng trong môi trường production.
Một tư duy sai lầm rất phổ biến là: "Tôi chỉ sử dụng một region, vậy nên tôi chỉ cần giám sát region đó."
Thực tế hoàn toàn khác và nguy hiểm hơn bạn nghĩ:
• Các dịch vụ như IAM, STS, và CloudFront là dịch vụ toàn cầu (global), không thuộc về một region cụ thể nào.
• Kẻ tấn công thường cố tình chuyển sang các region không được giám sát để tạo tài nguyên và che giấu hành vi của chúng.
Cách tiếp cận đúng vô cùng đơn giản nhưng lại mang lại hiệu quả bảo vệ toàn diện:
• Tạo một CloudTrail duy nhất.
• Bật tùy chọn "Apply to all regions" (Áp dụng cho tất cả các region).
• Bật tùy chọn "Global service events" (Sự kiện dịch vụ toàn cầu).
Đây là cách đơn giản nhất để đóng lại một trong những lỗ hổng sơ đẳng nhất mà kẻ tấn công luôn chủ động khai thác.
Log của CloudTrail được lưu trong S3, nhưng đừng quên rằng: S3 cũng chỉ là S3. Nếu kẻ tấn công có quyền truy cập, chúng có thể xóa hoặc ghi đè file log một cách dễ dàng để xóa sạch bằng chứng.
Giải pháp cho vấn đề này cực kỳ đơn giản nhưng lại vô cùng mạnh mẽ: Bật S3 Versioning cho bucket chứa log của CloudTrail.
Tính năng S3 Versioning bảo vệ log của bạn bằng cách:
• Khi một tệp bị xóa, S3 chỉ tạo ra một "delete marker" (dấu hiệu xóa) thay vì xóa vĩnh viễn tệp gốc. Tệp log gốc vẫn được bảo toàn.
• Khi một tệp bị thay đổi, S3 tạo ra một phiên bản mới và giữ lại phiên bản cũ một cách nguyên vẹn.
Về chi phí, bạn không cần phải lo lắng. Chi phí tăng thêm là rất nhỏ vì CloudTrail chỉ ghi thêm các tệp log mới chứ không ghi đè lên các tệp cũ, do đó rất ít phiên bản mới được tạo ra.
Một câu hỏi thường gặp là: "Log có rồi, cần validation làm gì?"
Rủi ro ở đây là nếu không có cơ chế xác thực, không có gì đảm bảo rằng các tệp log của bạn là nguyên bản. Log có thể bị sửa đổi hoặc các tệp log giả mạo có thể được chèn vào, và bạn không có cách nào để chứng minh tính toàn vẹn của chúng trong một cuộc điều tra hoặc kiểm toán.
Giải pháp chính là bật tính năng CloudTrail log file validation.
Khi được kích hoạt, CloudTrail sẽ tự động ký số (digitally sign) mỗi tệp log và tạo ra các tệp "digest" tương ứng. Các tệp này cho phép bạn xác minh một cách chắc chắn rằng log chưa hề bị chỉnh sửa hay giả mạo.
Những lợi ích quan trọng nhất của tính năng này là:
• Hoàn toàn miễn phí.
• Không ảnh hưởng đến hiệu suất hệ thống.
• Cực kỳ quan trọng cho các cuộc kiểm toán (audit) và điều tra sự cố (incident response).
Không có lý do gì để không bật.
Một quan niệm sai lầm phổ biến là bật tất cả các loại log sẽ mang lại sự an toàn tối đa. Thực tế, đây không phải là một phương pháp hay và có thể dẫn đến chi phí tăng vọt một cách không cần thiết.
Dưới đây là phân tích các loại sự kiện và khuyến nghị cấu hình để cân bằng giữa an ninh và chi phí:
Management Events (Sự kiện quản trị): Khuyến nghị: BẮT BUỘC BẬT. Đây là những log quan trọng nhất, ghi lại các hành động quản trị tài nguyên như tạo máy chủ EC2, thay đổi IAM policy, hoặc xóa database. Bạn phải bật ghi log cho cả sự kiện Read (đọc) và Write (ghi).
Data Events (Sự kiện dữ liệu): Loại sự kiện này ghi lại các hành động trên dữ liệu, ví dụ như ai đã tải lên hoặc tải xuống một đối tượng trong S3. Chúng bị tắt theo mặc định vì có thể tạo ra một khối lượng log khổng lồ và rất tốn kém.
• KHÔNG bật cho tất cả các bucket.
• NÊN bật một cách có chọn lọc chỉ cho những bucket chứa dữ liệu cực kỳ nhạy cảm (ví dụ: media upload, tệp cấu hình, hóa đơn, dữ liệu người dùng).
Insights Events (Sự kiện Insights): Đây là một tính năng có giá trị cao và rất nên bật. Nó không chỉ ghi lại sự kiện mà còn phân tích chúng để phát hiện các hành vi bất thường, chẳng hạn như số lượng lệnh gọi API tăng đột biến hoặc hành vi xóa tài nguyên hàng loạt. Với chi phí rất phải chăng ("chỉ vài USD / tháng"), đây là một khoản đầu tư "rất đáng tiền cho production."
Network Activity Events (Sự kiện mạng): Loại sự kiện này chủ yếu dùng cho các môi trường có yêu cầu tuân thủ nghiêm ngặt (compliance) như ngân hàng, fintech hoặc khi sử dụng VPC Endpoint. Với hầu hết các ứng dụng web và microservices thông thường, khuyến nghị là không cần bật để tránh chi phí không cần thiết.
Conclusion: From "Having Logs" to "Having Insight"
Cấu hình CloudTrail đúng cách không phải là về việc ghi lại nhiều log hơn, mà là ghi lại một cách thông minh hơn. Một thiết lập vững chắc sẽ cung cấp: khả năng giám sát toàn diện (tất cả các region), đảm bảo tính toàn vẹn của log (thông qua versioning và validation), và cung cấp khả năng phát hiện mối đe dọa thông minh (qua Insights) mà không gây lãng phí chi phí.
Nhìn lại cấu hình CloudTrail của bạn: liệu nó đã là một 'vệ sĩ' đáng tin cậy, hay vẫn còn là một 'lỗ hổng' đang chờ bị khai thác?
Bình luận (0)