Şimdi aşağıdaki ayarlarla bir adet EC2 sunucu oluşturuyorum.



Hızlıca en düşük özellikte bir Amazon Linux t2.micro sunucu oluşturdum.


İçerisine hızlıca bir nodejs kurulumu yapıp ekrana hello world döndüren bir nodejs uygulaması yükledim ve bu uygulama 5000 portunu dinliyor.

Security Group burada devreye giriyor. Instance seviyesinde çalışıyor ve güvenlik izinlerini ayarlayabiliyoruz. Inbound Rules ile bu uygulamanın 5000 portunu dış dünyadan gelen tüm trafiğe açıyorum. 0.0.0.0/0 ayarı tüm trafik demektir. Burada spesifik IP adresi de tanımlayabiliriz.
Inbound, dış dünyadan veya başka bir kaynaktan AWS kaynağına (EC2, RDS vb.) gelen trafiği kontrol eder. Sunucuya kimler, hangi porttan, hangi protokol ile bağlanabilir?
Outbound, AWS kaynağından dışarıya giden trafiği kontrol eder. Sunucu hangi adreslere, hangi portlardan çıkış yapabilir?

Sunucuda terminali kapatsak dahi nodejs uygulamamız çalışsın istersen en doğrusu pm2 ile çalıştırmak olacaktır.

Şimdi NACL ayarlarına bakalım.


NACL, subnet seviyesinde çalışan bir network firewall’dır. O subnet içindeki tüm ec2’leri etkiler.
En kritik kural: NACL’ler sıralı çalışır
NACL’lerde:
- Kurallar küçük numaradan büyüğe değerlendirilir
- İlk eşleşen kural kazanır
- Alttaki kurallara bakılmaz
Port 5000’e gelen bir HTTP isteğini düşünelim
- Trafik subnet’e girdi
- Rule 100 kontrol edilir:
- Type: All traffic
- Port: All
- Source: 0.0.0.0/0
- Action: ALLOW
Trafik burada kabul edilir
Rule 200’e hiç bakılmaz
Peki gerçekten 5000’i NACL ile engellemek isteseydin ne olurdu?
• Port 5000 subnet seviyesinde tamamen kapanır
Security Group’ta açık olsa bile trafik EC2’ye ulaşamaz. Yani burada rule 200 kuralı ilk sırada tanımlanmış bir kural olsaydı 5000 portundan trafiği engelleyecekti ve bu subnet seviyesinde engellenmiş olacaktı.