AWS'de ağ güvenliği denilince akla gelen iki temel bileşen Security Groups (SG) ve Network Access Control Lists (NACL)'dir. Her ikisi de trafiği filtreler, ancak farklı katmanlarda ve farklı kurallarla çalışır. Bu yazıda, SG ve NACL arasındaki farkları, hangi durumda hangisini kullanmanız gerektiğini ve beraber kullanırken dikkat etmeniz gereken noktaları adım adım açıklıyoruz.
Security Group Nedir?
Security Group, bir EC2 instance veya diğer AWS kaynağı için sanal bir güvenlik duvarı görevi görür. Durum bilgisi olan (stateful) bir yapıdadır: Giden trafiğe izin verirseniz, bu trafiğe ait yanıtlar otomatik olarak geri dönebilir. Yalnızca izin ver kuralları vardır, reddetme kuralları yoktur. Varsayılan olarak tüm gelen trafik reddedilir, tüm giden trafiğe izin verilir.
Network ACL Nedir?
Network ACL, VPC alt ağ (subnet) seviyesinde çalışan, isteğe bağlı bir güvenlik katmanıdır. Durum bilgisi olmayan (stateless): Gelen trafiğe izin verdiğinizde, yanıt trafiği için ayrıca giden kuralı yazmanız gerekir. Hem izin ver hem de reddet kuralları tanımlanabilir. Varsayılan NACL tüm trafiğe izin verir; özel NACL ise tüm trafiği reddeder.
Security Group ve NACL Karşılaştırması
İkisi arasındaki temel farkları aşağıdaki tabloda özetledik:
| Özellik | Security Group | Network ACL |
|---|---|---|
| Seviye | Instance/kaynak seviyesi | Subnet seviyesi |
| Durum bilgisi | Stateful (durumlu) | Stateless (durumsuz) |
| Kural türü | Sadece allow | Allow ve deny |
| Değerlendirme sırası | Tüm kurallar değerlendirilir | Sıra numarasına göre (küçükten büyüğe) |
| Varsayılan davranış | Gelen: Deny, Giden: Allow | Özel NACL: Tüm red, Varsayılan NACL: Tüm izin |
| Kaynak sayısı | Her instance için birden fazla SG atanabilir | Her subnet için sadece bir NACL |
| Loglama | SG bazında log yok (VPC Flow Logs ile izlenir) | Benzer şekilde VPC Flow Logs kullanılır |
Hangi Durumda Hangisini Kullanmalıyım?
Security Group'u Ne Zaman Tercih Etmelisiniz?
- Instance'a doğrudan trafik kontrolü gerektiğinde
- Stateful yapının avantajından yararlanmak istediğinizde (yanıt trafiği için ayrı kural yazmak istemezseniz)
- Hassas kaynaklar için ek bir güvenlik katmanı olarak
- VPC tasarımınızda principle of least privilege uygulamak için
Network ACL Ne Zaman Kullanılır?
- Subnet seviyesinde kaba filtreleme yapmak (örneğin, belirli IP aralıklarını tamamen engellemek)
- Deny listesi (kara liste) ile özel IP blokajları uygulamak
- Mevcut mimariyi büyük ölçüde değiştirmeden hızlı bir güvenlik önlemi eklemek
- Stateless yapının farkında olarak, yanıt trafiğini de ayrıca yönetmek istediğiniz durumlar
En İyi Uygulamalar ve Sık Yapılan Hatalar
Security Group İpuçları
- Her instance için sadece ihtiyaç duyduğunuz portları açın. Örneğin, web sunucusu için 80 ve 443 dışındaki portları kapatın.
- Kaynak IP aralıklarını mümkün olduğunca dar tutun (örneğin, /32).
- Giden trafiği de sınırlandırın; varsayılan olarak tüm giden trafiğe izin verilir, ancak üretim ortamlarında 0.0.0.0/0 yerine özel hedefler tanımlayın.
- Birden fazla SG kullanarak rol tabanlı erişim (web katmanı, veritabanı katmanı) oluşturun.
Network ACL İpuçları
- Kurallarınızı sıra numaralarına göre dikkatlice planlayın; 100’er artışlarla çalışmak ileride düzenleme kolaylığı sağlar.
- Stateless olduğu için, gelen ve giden trafik için simetrik kurallar yazmayı unutmayın. Örneğin, ephemeral portları (1024-65535) giden kurallarda mutlaka açın.
- Deny kurallarını yalnızca belirli IP blokajları için kullanın; genel güvenlik için SG yeterlidir.
- NACL’i birincil güvenlik katmanı olarak kullanmaktan kaçının; daha çok derinlemesine savunma (defense in depth) stratejisinin bir parçası olarak düşünün.
Sık Yapılan Hatalar
- Yalnızca NACL kullanarak instance’ları korumaya çalışmak (subnet güvenliği yeterli değildir).
- Security Group’un stateful avantajını unutup yanıt trafiği için ayrı kurallar yazmaya çalışmak.
- NACL kurallarında yanlış sıra numarası kullanarak istenmeyen blokajlara neden olmak.
- VPC Flow Logs’u etkinleştirmeyerek, hatalı kuralların teşhisini zorlaştırmak.
Derinlemesine Savunma: Security Group ve NACL Birlikte Nasıl Kullanılır?
İdeal bir AWS VPC tasarımında, her iki katman birlikte kullanılır. Örneğin; alt ağ (subnet) seviyesinde NACL ile genel engellemeler (örneğin, tüm SSH trafiğini yalnızca belirli IP'lerden kabul et), instance seviyesinde ise SG ile daha detaylı kurallar uygulanır. Bu yaklaşım, derinlemesine savunma (defense in depth) prensibinin bir örneğidir.
Özellikle çok katmanlı uygulamalarda, ön uç, uygulama ve veritabanı katmanları için farklı SG’ler ve NACL’ler tanımlayarak güvenliği katmanlandırabilirsiniz. Bu yapıyı otomatize etmek için Terraform veya CloudFormation gibi IaC araçlarını kullanarak altyapınızı kod olarak yönetebilirsiniz. AWS CloudFormation ve Terraform karşılaştırmamızda bu yaklaşımın faydalarını daha ayrıntılı görebilirsiniz.
Ayrıca, doğru alt ağ planlaması ve VPC tasarımı, güvenlik duvarı kurallarınızın etkinliğini doğrudan etkiler. Bu konuda AWS VPC Tasarımı ve Alt Ağ Planlaması yazımız, subnet yapılandırması ve güvenlik gereksinimlerini nasıl dengeleyeceğinizi anlatıyor.
Sonuç: Hangi Çözümü Seçmelisiniz?
Security Group ve Network ACL birbirini tamamlayan araçlardır. SG, instance bazında daha esnek ve kolay yönetilirken, NACL subnet düzeyinde güçlü bir stateless filtreleme sağlar. AWS’nin CloudFormation ve Terraform gibi IaC araçları ile bu kaynakları yönetmek, tutarlılık ve tekrarlanabilirlik sağlar. Kendi ihtiyaçlarınızı değerlendirirken, uygulamanızın hassasiyetini, trafik modellerini ve yönetim maliyetini göz önünde bulundurun. Derinlemesine savunma için her iki katmanı da kullanmanızı öneririz.
Sık Sorulan Sorular
Security Group stateful mi stateless mi?
Security Group stateful'dir. Giden trafiğe izin verildiğinde, gelen yanıt trafiği otomatik olarak kabul edilir.
Network ACL stateful midir?
Hayır, NACL stateless'tir. Gelen ve giden trafik için ayrı ayrı kurallar yazılmalıdır.
Security Group ile NACL arasındaki temel fark nedir?
Security Group instance düzeyinde çalışır ve sadece izin ver kuralları vardır. NACL subnet düzeyinde çalışır ve hem izin ver hem de reddet kuralları içerir.
Hangi durumda NACL kullanmalıyım?
Subnet seviyesinde kaba filtreleme, belirli IP blokajları veya deny listesi gerektiğinde NACL tercih edilir. Ancak birincil güvenlik katmanı olarak değil, derinlemesine savunma için kullanılmalıdır.
SG ve NACL birlikte nasıl kullanılır?
Öncelikle NACL ile subnet düzeyinde genel kurallar (örneğin hassas portları engelleme) uygulanır, ardından SG ile instance bazında daha detaylı kurallar tanımlanır. Bu, çok katmanlı güvenlik sağlar.






