AWS Security Group (SG) là gì?
Security Group là tường lửa ảo stateful cấp instance (EC2, RDS, ENI, Lambda...). Kiểm soát traffic inbound/outbound dựa trên: Protocol, Port, Source/Destination (CIDR, SG ID, Prefix List). Mặc định: Deny all inbound, Allow all outbound.
1. Kiểm tra quy tắc SG (Manual Console)
- AWS Console → EC2 → Security Groups (bên trái).
- Chọn SG cần kiểm tra.
- Xem tab Inbound rules & Outbound rules.
- Kiểm tra: Port mở rộng (0.0.0.0/0), port nhạy cảm (22, 3389, 3306, 5432, 27017), protocol không cần thiết.
2. AWS Config Rules (Tự động kiểm tra tuân thủ)
- Managed Rules hữu ích:
restricted-ssh– Cảnh báo SG mở port 22 cho 0.0.0.0/0.restricted-common-ports– Kiểm tra port phổ biến (RDP, DB, Redis...).security-group-rule-description– Bắt buộc có mô tả rule.vpc-sg-open-only-to-authorized-ports– Chỉ cho phép port được duyệt.
- Custom Rule (Lambda) cho logic phức tạp: ví dụ "SG không được tham chiếu SG khác không có tag 'Approved'".
3. AWS Firewall Manager – Policy tập trung
- Tạo Security Group Policy → Chọn Audit and enforce.
- Định nghĩa baseline rule set (allow/deny).
- Áp dụng cho toàn Organization (AWS Organizations) hoặc OU cụ thể.
- Tự động remediate (xóa rule vi phạm) hoặc chỉ audit.
4. Kiểm tra SG không sử dụng (Unused SG)
- Console EC2 → Security Groups → Tick tất cả → Actions → Delete security groups.
- AWS liệt kê SG nào không gắn với bất kỳ ENI/instance nào → Xóa an toàn.
- Hoặc CLI:
aws ec2 describe-security-groups --filters Name=group-id,Values=sg-xxx --query 'SecurityGroups[?length(NetworkInterfaces)==\`0\`]' - Copy Group ID (sg-xxxxx).
- EC2 Console → Network Interfaces (bên trái).
- Search Group ID → Xem ENI gắn SG đó → Xem Instance ID / Owner.
- CloudTrail Console → Event history.
- Filter: Resource type =
AWS::EC2::SecurityGroup, Resource name =sg-xxxxx. - Xem event:
CreateSecurityGroup,AuthorizeSecurityGroupIngress/Egress,RevokeSecurityGroupIngress/Egress. - Chi tiết: User/Role, IP nguồn, thời gian, request parameters.
- Reachability Analyzer: Kiểm tra path giữa source/destination (ENI, SG, NACL, Route Table, Transit Gateway...).
- VPC Flow Logs: Bật log traffic accept/reject → Athena/QuickSight phân tích.
- nc / telnet / curl từ instance trong VPC test port cụ thể.
- ❌ Không mở 0.0.0.0/0 cho port 22/3389 (SSH/RDP) – dùng Bastion/Session Manager/VPN.
- ❌ Không mở all traffic (0.0.0.0/0, all ports, all protocols).
- ✅ Least privilege: Chỉ port/app cần thiết, source cụ thể (SG ID, CIDR nhỏ).
- ✅ Mô tả rõ rule (Description).
- ✅ Tag:
Environment,Owner,ManagedBy(Terraform/CloudFormation). - ✅ Review hàng quý/6 tháng + tự động hóa qua Config/Firewall Manager.
5. Xem SG đang được dùng bởi resource nào
6. Kiểm tra ai tạo/sửa SG (CloudTrail)
7. Test kết nối thực tế (Connectivity Test)
8. Công cụ CLI/Script tự động hóa
# Liệt kê SG mở port 22 cho thế giới
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?FromPort==\`22\` && IpRanges[?CidrIp==\`0.0.0.0/0\`]]].[GroupId,GroupName,Description]" --output table
# Tìm SG unused
aws ec2 describe-security-groups --query "SecurityGroups[?length(NetworkInterfaces)==\`0\`].[GroupId,GroupName]" --output table