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
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)
Porównanie Security Group vs NACL
To jedna z najważniejszych tabel, które powinieneś znać na egzaminie:
| Cecha | Security Group | Network ACL |
|---|---|---|
| Poziom działania | Instancja (ENI) | Subnet |
| Stateful/Stateless | Stateful | Stateless |
| Typ reguł | Tylko ALLOW | ALLOW i DENY |
| Ewaluacja reguł | Wszystkie reguły sprawdzane razem | Reguły po kolei (numer, first match) |
| Domyślne inbound | Blokuje cały ruch | Default: pozwala. Custom: blokuje |
| Domyślne outbound | Pozwala na cały ruch | Default: pozwala. Custom: blokuje |
| Przypisanie | Do instancji (wiele SG na instancję) | Do subnetu (1 NACL na subnet) |
| Blokowanie IP | Nie można (brak DENY) | Tak, można zablokować konkretne 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:
| Typ | Protokół | Port | Źródło |
|---|---|---|---|
| HTTP | TCP | 80 | 0.0.0.0/0 |
| HTTPS | TCP | 443 | 0.0.0.0/0 |
| SSH | TCP | 22 | Twoje 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.
- 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
Chcesz zablokować konkretny adres IP, który atakuje Twój serwer. Jakiego mechanizmu użyjesz?
Security Group jest „stateful". Co to oznacza w praktyce?
Jaki jest domyślny stan nowo utworzonej (custom) Network ACL?