Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

Cách kiểm tra và kiểm toán AWS Security Group (Network Security Group)

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)

  1. AWS Console → EC2 → Security Groups (bên trái).
  2. Chọn SG cần kiểm tra.
  3. Xem tab Inbound rules & Outbound rules.
  4. 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)

  1. Console EC2 → Security Groups → Tick tất cả → Actions → Delete security groups.
  2. 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.
  3. Hoặc CLI: aws ec2 describe-security-groups --filters Name=group-id,Values=sg-xxx --query 'SecurityGroups[?length(NetworkInterfaces)==\`0\`]'
  4. 5. Xem SG đang được dùng bởi resource nào

    1. Copy Group ID (sg-xxxxx).
    2. EC2 Console → Network Interfaces (bên trái).
    3. Search Group ID → Xem ENI gắn SG đó → Xem Instance ID / Owner.

    6. Kiểm tra ai tạo/sửa SG (CloudTrail)

    1. CloudTrail Console → Event history.
    2. Filter: Resource type = AWS::EC2::SecurityGroup, Resource name = sg-xxxxx.
    3. Xem event: CreateSecurityGroup, AuthorizeSecurityGroupIngress/Egress, RevokeSecurityGroupIngress/Egress.
    4. Chi tiết: User/Role, IP nguồn, thời gian, request parameters.

    7. Test kết nối thực tế (Connectivity Test)

    • 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ể.

    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
    

    Best Practice Checklist

    • ❌ 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.