Cảm giác “mất ngủ” khi quản lý hạ tầng Cloud mà không biết mình có an toàn không
Lần đầu nhận bàn giao cụm AWS với hơn 50 EC2 và hàng tá S3 bucket, mình đã thực sự hoảng. Hệ thống chằng chịt các IAM roles chồng chéo khiến mình tự hỏi: “Liệu có cái S3 nào đang để public không?” hay “Có ai quên bật MFA cho tài khoản root suốt 2 năm qua không?”.
Sau khi trực tiếp audit cho 10 dự án, mình thấy lỗi phổ biến nhất là mở port 22 cho toàn internet (0.0.0.0/0). Nhiều bên còn cấp quyền Administrator bừa bãi chỉ vì… lười phân quyền. Để giải quyết bài toán này một cách tự động, mình chọn Prowler. Đây là công cụ mã nguồn mở giúp bạn quét sạch hạ tầng Cloud và đối chiếu trực tiếp với chuẩn CIS Benchmarks khắt khe.
So sánh các phương pháp audit bảo mật Cloud hiện nay
Bạn thường có 3 lựa chọn chính khi muốn kiểm tra sức khỏe bảo mật của hệ thống.
1. Công cụ chính chủ (Cloud Native)
Các ông lớn đều có hàng “xịn” như AWS Security Hub hay Azure Security Center. Ưu điểm là tích hợp sâu, giao diện mượt mà. Tuy nhiên, chi phí là vấn đề lớn. Nếu hệ thống của bạn lớn, hóa đơn hàng tháng cho các dịch vụ này có thể lên tới hàng ngàn USD.
2. Kiểm tra thủ công (Manual Audit)
Cách này dành cho những ai cực kỳ tỉ mỉ, đi soi từng Security Group. Nhưng thực tế, nó cực kỳ tốn thời gian và dễ sai sót. Mình từng thử làm thủ công cho một hệ thống nhỏ và mất trắng 2 ngày mà vẫn sót lỗi nghiêm trọng.
3. Prowler – Sự kết hợp hoàn hảo
Prowler miễn phí, nhanh gọn và hỗ trợ đa nền tảng từ AWS, Azure đến GCP. Quan trọng nhất, nó quét dựa trên CIS Benchmarks. Đây được coi là “bộ luật” vàng trong ngành bảo mật đám mây hiện nay.
Tại sao Prowler là lựa chọn hàng đầu cho DevOps?
Prowler vượt xa một script quét lỗi thông thường. Nó là trợ thủ đắc lực nhờ những đặc điểm sau:
- Độ phủ cực rộng: Hỗ trợ hơn 300+ bài kiểm tra cho AWS. Nó bao quát từ chuẩn PCI-DSS, ISO27001 đến HIPAA.
- Báo cáo đa dạng: Bạn có thể xuất file HTML đẹp mắt để gửi sếp hoặc JSON để đẩy vào hệ thống log.
- Triển khai thần tốc: Chỉ cần Python và quyền truy cập Cloud là bạn đã có thể bắt đầu.
Điểm trừ duy nhất là giao diện dòng lệnh (CLI) có thể làm bạn hơi ngợp lúc đầu. Ngoài ra, bạn cần nắm vững kiến thức về IAM để cấp quyền cho Prowler quét hệ thống một cách an toàn.
Hướng dẫn triển khai Prowler chi tiết từ A-Z
Mình sẽ demo trên AWS vì đây là nền tảng phổ biến nhất. Với Azure và GCP, logic thực hiện hoàn toàn tương tự.
Bước 1: Thiết lập môi trường
Prowler yêu cầu Python 3.9 trở lên. Tốt nhất bạn nên cài đặt qua môi trường ảo để hệ thống sạch sẽ:
python3 -m venv prowler-env
source prowler-env/bin/activate
pip install prowler
Kiểm tra phiên bản để chắc chắn mọi thứ đã sẵn sàng:
prowler -v
Bước 2: Cấp quyền IAM (Identity and Access Management)
Đừng bao giờ dùng tài khoản Root để chạy audit. Hãy tạo một IAM User mới và gán hai chính sách: SecurityAudit và ViewOnlyAccess. Tiếp theo, hãy cấu hình thông tin truy cập trên máy của bạn:
aws configure
# Nhập Access Key và Secret Key của bạn
Bước 3: Thực hiện quét bảo mật
Chỉ với một câu lệnh, Prowler sẽ rà soát toàn bộ hạ tầng AWS của bạn:
prowler aws
Nếu chỉ muốn kiểm tra riêng dịch vụ S3 để tiết kiệm thời gian, hãy dùng lệnh:
prowler aws --service s3
Màn hình sẽ hiện ra các dòng màu xanh (PASS) và đỏ (FAIL). Những dòng đỏ chính là những “lỗ hổng” bạn cần ưu tiên xử lý ngay.
Bước 4: Xuất báo cáo chuyên nghiệp
Để báo cáo cho leader, định dạng HTML là lựa chọn tối ưu. Prowler sẽ tạo dashboard chi tiết trong thư mục output:
prowler aws -M html
Mở file HTML này bằng trình duyệt, bạn sẽ thấy biểu đồ thống kê các lỗi theo mức độ nghiêm trọng từ Critical đến Low.
Chiến lược xử lý kết quả sau khi quét
Đừng hoảng loạn nếu thấy hàng trăm lỗi đỏ hiện ra. Kinh nghiệm của mình là hãy chia để trị theo thứ tự sau:
- Nhóm IAM: Xử lý ngay các user chưa bật MFA hoặc Access Key đã quá 90 ngày chưa đổi.
- Nhóm Logging: Đảm bảo CloudTrail luôn bật ở mọi Region. Không có log, bạn sẽ mù tịt khi sự cố xảy ra.
- Nhóm Networking: Chặn ngay các port nhạy cảm như 22 (SSH) hay 3389 (RDP) đang mở công khai.
Ví dụ, nếu thấy lỗi mở port 22, bạn chỉ cần giới hạn IP truy cập về dải IP tĩnh của công ty. Việc này giảm thiểu 99% nguy cơ bị tấn công brute-force từ bên ngoài.
Mẹo nhỏ cho người dùng Azure và GCP
Prowler xử lý đa đám mây rất mượt. Điểm khác biệt duy nhất nằm ở cách xác thực:
- Azure: Đăng nhập qua Azure CLI bằng
az logintrước khi chạyprowler azure. - GCP: Sử dụng file JSON của Service Account để xác thực quyền quét.
Nếu ngại cài đặt rườm rà, hãy dùng Docker. Câu lệnh dưới đây sẽ giúp bạn chạy Prowler trong môi trường cô lập:
docker run -ti --rm --name prowler -v ~/.aws:/root/.aws:ro prowler/prowler aws
Lời kết từ thực tế
Bảo mật là một hành trình, không phải đích đến. Sau khi dọn sạch lỗi, mình thường thiết lập bot chạy Prowler định kỳ hàng tuần. Kết quả sẽ được đẩy thẳng về Slack để team nắm bắt kịp thời.
Đừng cố sửa mọi thứ trong một ngày. Hãy bắt đầu từ việc hiểu các tiêu chuẩn CIS và dùng Prowler để gia cố hạ tầng từng bước một. Nếu gặp khó khăn khi cài đặt, bạn cứ để lại bình luận phía dưới nhé!
