AWS Security Groups
Virtual Firewall cho VPC resources
Security Group là gì?
Security Group hoạt động như một virtual firewall kiểm soát lưu lượng truy cập (traffic) đến và đi từ các tài nguyên AWS trong VPC (như EC2 instances, RDS, Lambda trong VPC, v.v.).
Đặc điểm chính
1. Stateful (Có trạng thái)
Security Group nhớ các kết nối. Khi bạn cho phép traffic đi vào, traffic phản hồi tự động được phép đi ra mà không cần tạo rule riêng.
Ví dụ thực tế:
Ngược lại cũng đúng:
2. Chỉ có Allow Rules (Không có Deny)
- Bạn chỉ có thể tạo rule CHO PHÉP traffic
- Không thể tạo rule CHẶN traffic cụ thể
- Mặc định: Deny tất cả - traffic nào không match rule nào thì bị chặn
Ví dụ:
3. Áp dụng ở Instance Level (ENI)
Security Group gắn vào Network Interface của instance, không phải subnet.
4. Đánh giá TẤT CẢ Rules cùng lúc
Khi có traffic đến, AWS kiểm tra tất cả rules và cho phép nếu bất kỳ rule nào match.
💡 So sánh với Network ACL: Network ACL đánh giá theo thứ tự số (rule 100 trước rule 200), dừng lại khi match đầu tiên.
5. Miễn phí
- Không tính phí tạo và sử dụng Security Groups
- Có thể tạo nhiều Security Groups tùy nhu cầu
Thành phần của Security Group Rule
Inbound Rules (Traffic vào)
| Thành phần | Mô tả | Ví dụ |
|---|---|---|
| Type | Loại traffic | SSH, HTTP, HTTPS, Custom TCP |
| Protocol | Giao thức | TCP (6), UDP (17), ICMP (1) |
| Port Range | Cổng hoặc dải cổng | 22, 80, 443, 1024-65535 |
| Source | Nguồn được phép | IP, CIDR, Security Group ID, Prefix List |
| Description | Mô tả (tùy chọn) | "Allow SSH from office" |
Outbound Rules (Traffic ra)
| Thành phần | Mô tả | Ví dụ |
|---|---|---|
| Type | Loại traffic | All traffic, HTTPS |
| Protocol | Giao thức | TCP, UDP, All |
| Port Range | Cổng hoặc dải cổng | 443, 0-65535 |
| Destination | Đích được phép | IP, CIDR, Security Group ID, Prefix List |
| Description | Mô tả (tùy chọn) | "Allow all outbound" |
Các loại Source/Destination
Default Security Group
Khi tạo VPC, AWS tự động tạo default security group với các rules:
| Rule Type | Protocol | Port | Source/Destination |
|---|---|---|---|
| Inbound | All | All | Chính security group đó (sg-xxx) |
| Outbound | All | All | 0.0.0.0/0 (Anywhere) |
⚠️ Best Practice: Không sử dụng default security group. Luôn tạo custom security groups với rules cụ thể.
Security Group Referencing
Cho phép reference một Security Group khác làm source/destination thay vì IP:
Ưu điểm:
- Không cần update IP khi thêm/xóa instances
- Dễ quản lý và bảo trì
- Tự động áp dụng cho tất cả instances trong security group được reference
Ví dụ thực tế: Web Application
Architecture 3-tier với Security Groups
Security Group cho Load Balancer
| Rule | Type | Protocol | Port | Source/Dest |
|---|---|---|---|---|
| Inbound | HTTP | TCP | 80 | 0.0.0.0/0 |
| Inbound | HTTPS | TCP | 443 | 0.0.0.0/0 |
| Outbound | Custom TCP | TCP | 80 | sg-web-servers |
Security Group cho Web Servers
| Rule | Type | Protocol | Port | Source/Dest |
|---|---|---|---|---|
| Inbound | HTTP | TCP | 80 | sg-load-balancer |
| Inbound | HTTPS | TCP | 443 | sg-load-balancer |
| Inbound | SSH | TCP | 22 | 10.0.0.0/8 (bastion) |
| Outbound | MySQL | TCP | 3306 | sg-database |
| Outbound | HTTPS | TCP | 443 | 0.0.0.0/0 |
Security Group cho Database
| Rule | Type | Protocol | Port | Source/Dest |
|---|---|---|---|---|
| Inbound | MySQL | TCP | 3306 | sg-web-servers |
Quotas (Giới hạn)
| Resource | Default Limit | Có thể tăng? |
|---|---|---|
| Security Groups per VPC | 2,500 | Có |
| Inbound rules per Security Group | 60 | Có (tối đa 1000 khi tính cả outbound) |
| Outbound rules per Security Group | 60 | Có (tối đa 1000 khi tính cả inbound) |
| Security Groups per Network Interface | 5 | Có (tối đa 16) |
📌 Lưu ý: Tổng số rules = (Inbound + Outbound rules) × Security Groups per interface ≤ 1,000
Security Group vs Network ACL
| Đặc điểm | Security Group | Network ACL |
|---|---|---|
| Cấp độ | Instance (ENI) | Subnet |
| Stateful/Stateless | Stateful | Stateless |
| Rules | Chỉ Allow | Allow và Deny |
| Thứ tự rules | Tất cả rules được đánh giá | Theo thứ tự number (thấp → cao) |
| Default | Deny tất cả inbound, Allow tất cả outbound | Allow tất cả |
| Áp dụng | Phải gán vào instance | Tự động áp dụng cho subnet |
Traffic không bị filter
Security Groups KHÔNG filter traffic đến/từ:
- Amazon DNS
- Amazon DHCP
- EC2 Instance Metadata (169.254.169.254)
- ECS Task Metadata endpoints
- Windows License Activation
- Amazon Time Sync Service
- Reserved IP của VPC router
Quản lý Security Groups với AWS CLI
Tạo Security Group
Thêm Inbound Rule
Xem Security Group Rules
Xóa Rule
Xóa Security Group
Best Practices
Nên làm
- Principle of Least Privilege: Chỉ mở ports cần thiết
- Sử dụng Security Group referencing thay vì hard-code IP
- Đặt tên và mô tả rõ ràng cho mỗi security group và rule
- Tách riêng Security Groups theo chức năng (web, app, db)
- Regular audit các security group rules
- Sử dụng VPC Flow Logs để monitor traffic
Không nên làm
- Không mở 0.0.0.0/0 cho SSH (port 22) hoặc RDP (port 3389)
- Không mở large port ranges (VD: 1-65535)
- Không sử dụng default security group cho production
- Không để security group không sử dụng - dọn dẹp định kỳ
- Không ignore outbound rules - cần restrict nếu có thể
Troubleshooting
Không kết nối được đến instance
- Kiểm tra Inbound rules của Security Group
- Kiểm tra Network ACL của subnet
- Kiểm tra Route tables
- Kiểm tra instance có public IP không (nếu kết nối từ internet)
- Kiểm tra Internet Gateway đã attached chưa
Instance không thể kết nối internet
- Kiểm tra Outbound rules của Security Group
- Kiểm tra có NAT Gateway hoặc Internet Gateway không
- Kiểm tra Route tables có route đến 0.0.0.0/0 không
Exam Tips
Key Points for AWS Exams
-
Security Group chỉ có ALLOW rules
- Không có DENY rules
- Mặc định deny tất cả (implicit deny)
- Nếu cần DENY specific IPs → dùng NACL
-
Stateful vs Stateless
- Security Group = Stateful → response tự động cho phép
- NACL = Stateless → phải tạo rule cả 2 chiều
-
Default behavior
- Inbound: Deny all (phải thêm rule để allow)
- Outbound: Allow all (default)
-
Instance level, không phải subnet
- Security Group gắn vào ENI (Network Interface)
- NACL áp dụng cho cả subnet
Common Exam Scenarios
| Scenario | Answer |
|---|---|
| Block specific IP addresses | NACL (Security Group không có deny) |
| Allow return traffic automatically | Security Group (stateful) |
| Defense in depth at subnet level | NACL |
| Firewall per instance | Security Group |
| Need both Allow AND Deny rules | NACL |
Tài liệu tham khảo
- AWS Security Groups Documentation
- Security Group Rules
- Amazon VPC Quotas
- Compare Security Groups and Network ACLs
Liên kết: