Dwie warstwy ochrony Twojego VPC

AWS daje Ci dwa mechanizmy firewall do kontroli ruchu w VPC. Oba filtrują ruch sieciowy, ale działają na zupełnie różnych poziomach i w zupełnie inny sposób. Zrozumienie różnic między nimi to absolutna podstawa na egzaminie Cloud Practitioner (i w prawdziwej pracy z AWS).

  • Security Group (SG) - firewall na poziomie instancji (ENI)
  • Network ACL (NACL) - firewall na poziomie subnetu

Pomyśl o tym tak: NACL to ochrona na bramie osiedla, a Security Group to zamek w drzwiach mieszkania. Ruch musi przejść przez obie warstwy.

Security Groups - strażnik instancji

Security Group to wirtualny firewall, który kontroluje ruch przychodzący (inbound) i wychodzący (outbound) na poziomie interfejsu sieciowego (ENI). Każda instancja EC2 musi mieć przypisaną co najmniej jedną Security Group.

Kluczowe cechy Security Groups:

  • Stateful - jeśli pozwolisz na ruch przychodzący, odpowiedź automatycznie przejdzie bez osobnej reguły
  • Zawierają tylko reguły ALLOW - nie możesz jawnie zablokować konkretnego IP
  • Domyślnie: cały ruch inbound zablokowany, cały ruch outbound dozwolony
  • Możesz referencować inne Security Groups jako źródło (zamiast adresów IP)
  • Jedna instancja może mieć wiele Security Groups (reguły się sumują)
  • Zmiany działają natychmiast
💡 Referencja do innej Security Group
To potężna funkcja! Zamiast podawać adres IP, możesz powiedzieć: „Pozwól na ruch z każdej instancji, która ma Security Group sg-abc123". Dzięki temu nie musisz aktualizować reguł, gdy zmieniają się adresy IP instancji. AWS sam sprawdza, które instancje mają daną SG.

Firewall stateful śledzi stan połączeń (connection tracking). Co to oznacza w praktyce?

Wyobraź sobie, że masz regułę inbound: „Pozwól na TCP port 443 (HTTPS) z dowolnego IP". Klient łączy się z Twoim serwerem na porcie 443. Serwer odpowiada klientowi z portu 443 na losowy port klienta (np. 52487).

W firewallu stateful odpowiedź przechodzi automatycznie, bo firewall „pamięta", że to jest część istniejącego połączenia. Nie potrzebujesz żadnej reguły outbound dla tego ruchu.

W firewallu stateless (jak NACL) musiałbyś jawnie dodać regułę outbound pozwalającą na ruch do portu 52487 klienta. Dlatego w NACL konfiguruje się tzw. „ephemeral ports".

Network ACL (NACL) - strażnik subnetu

Network ACL to firewall działający na poziomie subnetu. Każdy subnet ma dokładnie jedną NACL (domyślną lub custom). NACL sprawdza ruch wchodzący do subnetu i wychodzący z niego.

Kluczowe cechy NACL:

  • Stateless - musisz jawnie skonfigurować reguły zarówno inbound, jak i outbound
  • Zawiera reguły ALLOW i DENY
  • Reguły mają numery i są ewaluowane od najniższego numeru (first match wins)
  • Domyślna NACL: pozwala na cały ruch (inbound i outbound)
  • Custom (nowo utworzona) NACL: blokuje cały ruch domyślnie
  • Jeden subnet = jedna NACL (ale jedna NACL może obsługiwać wiele subnetów)
⚠️ EXAM ALERT
Kluczowa pułapka egzaminacyjna: Default NACL pozwala na CAŁY ruch, a nowo utworzona (custom) NACL blokuje CAŁY ruch. To odwrotnie niż mogłoby się wydawać! Zapamiętaj tę różnicę, bo to częste pytanie na egzaminie.

Porównanie Security Group vs NACL

To jedna z najważniejszych tabel, które powinieneś znać na egzaminie:

⚖️ Security Group vs Network ACL
CechaSecurity GroupNetwork ACL
Poziom działaniaInstancja (ENI)Subnet
Stateful/StatelessStatefulStateless
Typ regułTylko ALLOWALLOW i DENY
Ewaluacja regułWszystkie reguły sprawdzane razemReguły po kolei (numer, first match)
Domyślne inboundBlokuje cały ruchDefault: pozwala. Custom: blokuje
Domyślne outboundPozwala na cały ruchDefault: pozwala. Custom: blokuje
PrzypisanieDo instancji (wiele SG na instancję)Do subnetu (1 NACL na subnet)
Blokowanie IPNie można (brak DENY)Tak, można zablokować konkretne IP
🏢 Scenariusz: Blokowanie złośliwego IP

Twój monitoring wykrył, że adres IP 203.0.113.50 próbuje atakować Twój serwer. Chcesz go natychmiast zablokować. Jak to zrobisz?

Security Group? Nie! SG obsługuje tylko reguły ALLOW. Nie możesz dodać reguły DENY dla konkretnego IP.

Network ACL? Tak! Dodajesz regułę DENY w NACL subnetu:

  • Rule #50, Type: All Traffic, Source: 203.0.113.50/32, Action: DENY

Upewnij się, że numer reguły (50) jest niższy niż reguła ALLOW dla ogólnego ruchu (np. #100), bo NACL ewaluuje reguły od najniższego numeru i zatrzymuje się na pierwszym dopasowaniu.

Reguły w praktyce

Typowa konfiguracja Security Group dla serwera webowego:

Inbound:

TypProtokółPortŹródło
HTTPTCP800.0.0.0/0
HTTPSTCP4430.0.0.0/0
SSHTCP22Twoje IP/32

Outbound: domyślnie cały ruch dozwolony (i zostawiamy to tak, bo SG jest stateful).

Ponieważ NACL jest stateless, musisz jawnie pozwolić na ruch zwrotny. Klient łączący się z Twoim serwerem na porcie 443 oczekuje odpowiedzi na losowym porcie z zakresu 1024-65535 (tzw. ephemeral ports).

Dlatego w outbound NACL musisz dodać regułę pozwalającą na TCP porty 1024-65535. Bez tego klienci będą się łączyć, ale nie dostaną odpowiedzi.

To samo w drugą stronę: jeśli Twoja instancja łączy się z internetem (np. apt-get update), odpowiedź z serwera przyjdzie na ephemeral port. Potrzebujesz inbound reguły w NACL dla portów 1024-65535.

💡 Best practice
W praktyce większość zespołów polega głównie na Security Groups (bo są wygodniejsze, stateful i elastyczne) i zostawia default NACL, która pozwala na cały ruch. NACL jest dodatkową warstwą obrony, stosowaną gdy potrzebujesz jawnie zablokować konkretne IP lub zakresy.
✅ Security i Networking Checklist
Security Group = stateful, tylko ALLOW, poziom instancji
NACL = stateless, ALLOW + DENY, poziom subnetu
Default NACL pozwala na cały ruch
Custom NACL blokuje cały ruch domyślnie
SG nie pozwala blokować IP, NACL pozwala
NACL wymaga reguł dla ephemeral ports (stateless!)
Oba mechanizmy działają razem jako defense in depth
🧠 Podsumowanie
  • Security Group działa na poziomie instancji, NACL na poziomie subnetu
  • SG jest stateful (odpowiedź przechodzi automatycznie), NACL jest stateless
  • SG ma tylko reguły ALLOW, NACL ma ALLOW i DENY
  • Domyślna NACL pozwala na cały ruch, custom NACL blokuje cały ruch
  • Do blokowania konkretnych IP użyj NACL (bo SG nie ma reguł DENY)
  • NACL ewaluuje reguły po numerach (od najniższego, first match wins)
  • W praktyce: SG jako główna ochrona + NACL jako dodatkowa warstwa
🧪 Sprawdź się

Chcesz zablokować konkretny adres IP, który atakuje Twój serwer. Jakiego mechanizmu użyjesz?

A Security Group z regułą DENY
B Network ACL z regułą DENY
C Route Table z regułą blackhole
Security Group obsługuje tylko reguły ALLOW, więc nie możesz jawnie zablokować IP. Network ACL obsługuje reguły DENY i ALLOW, więc możesz dodać regułę DENY dla konkretnego IP. Pamiętaj, żeby nadać jej niższy numer niż reguła ALLOW, bo NACL ewaluuje reguły po kolei.

Security Group jest „stateful". Co to oznacza w praktyce?

A Ruch zwrotny jest automatycznie dozwolony bez osobnej reguły
B Reguły są zachowane między sesjami
C SG pamięta historię zmian reguł
Stateful oznacza, że firewall śledzi połączenia. Jeśli pozwolisz na ruch przychodzący na porcie 443, odpowiedź z Twojego serwera automatycznie przejdzie przez SG bez potrzeby dodawania reguły outbound. NACL jest stateless, więc tam musisz jawnie skonfigurować ruch w obie strony.

Jaki jest domyślny stan nowo utworzonej (custom) Network ACL?

A Pozwala na cały ruch inbound i outbound
B Pozwala na ruch inbound, blokuje outbound
C Blokuje cały ruch inbound i outbound
Nowo utworzona (custom) NACL domyślnie blokuje CAŁY ruch, zarówno inbound jak i outbound. To odwrotnie niż Default NACL, która pozwala na cały ruch. To częsta pułapka na egzaminie!