Giriş
Security Group (SG) EC2 instance'larının sanal firewall'ıdır. Stateful'dır: dönüş trafiği otomatik izinlidir. Inbound ve outbound kurallar ayrı tanımlanır.
Varsayılan SG genelde yalnızca aynı SG'den trafiğe izin verir; üretimde özel SG'ler oluşturun.
Bu rehberde tiered mimari, least privilege ve audit stratejilerini inceliyoruz.
Temel Kavramlar
SG kuralları: Type, Protocol, Port, Source/Destination. 0.0.0.0/0 tüm internete açık demektir; SSH/RDP için kaçının.
Bir instance birden fazla SG'ye bağlanabilir; kurallar birleşim (union) olarak uygulanır.
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0
aws ec2 authorize-security-group-ingress \
--group-id sg-xxx --protocol tcp --port 443 --cidr 10.0.0.0/8Tiered Security Group Mimarisi
Web tier SG: 80/443 from ALB SG only. App tier: uygulama portu from Web SG. DB tier: 5432 from App SG only.
ALB kendi SG'sine sahiptir; internetten ALB'ye, ALB'den instance'lara trafik akar.
- sg-alb: internet → ALB
- sg-web: ALB → web
- sg-app: web → app
- sg-db: app → database
# Web tier - yalnızca ALB'den
Type: HTTP, Source: sg-alb-web
Type: HTTPS, Source: sg-alb-web
# App tier - yalnızca Web'den
Type: Custom TCP 8000, Source: sg-webLeast Privilege Prensipleri
Her kural için en dar CIDR veya SG referansı kullanın. Port aralığı yerine tek port tercih edin.
Outbound'u da kısıtlayın; varsayılan tüm trafik açık olabilir. Yalnızca gerekli endpoint'lere izin verin.
# Kötü: SSH tüm internete
Source: 0.0.0.0/0, Port 22
# İyi: SSH yalnızca bastion SG
Source: sg-bastion, Port 22Yaygın Hatalar
0.0.0.0/0 ile SSH/RDP açmak en yaygın hatadır. Database portunu internete açmak ikinci büyük hatadır.
SG değişikliği anında etkilidir; staging'de test edin. Eski kuralları temizlemeyi unutmayın.
Source olarak CIDR yerine SG referansı kullanın; IP değişse bile kural geçerli kalır.
Audit ve Otomasyon
AWS Config security-group-attached-to-ec2 kuralı. VPC Flow Logs trafik analizi. Security Hub bulguları.
Terraform/aws_security_group ile SG'leri kod olarak yönetin; drift önleyin.
resource "aws_security_group" "web" {
name_prefix = "web-"
vpc_id = aws_vpc.main.id
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
security_groups = [aws_security_group.alb.id]
}
}Sonuç
Security Group'lar AWS ağ güvenliğinin birincil savunmasıdır. Tiered mimari, SG referansları ve least privilege uygulayın.
Düzenli audit ve infrastructure-as-code ile kuralları yönetin.