Listy ACL sieci a grupy zabezpieczeń
Porównają bezstanowe listy ACL sieci ze stanowymi grupami zabezpieczeń i poznają zastosowanie każdego rozwiązania w warstwowej ochronie sieci.
Listy ACL sieci a grupy zabezpieczeń to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Dwie warstwy bezpieczeństwa sieci
AWS udostępnia dwa odrębne mechanizmy zapory sieciowej w ramach VPC. Security Groups działają na poziomie instancji (technicznie na poziomie ENI) i są stanowe. Network Access Control Lists (NACL) działają na poziomie podsieci i są bezstanowe. Oba mechanizmy są sprawdzane dla każdego ruchu wchodzącego do podsieci lub opuszczającego ją oraz dla powiązanych z nią instancji. Jednoczesne użycie obu zapewnia ochronę warstwową: NACL jako pierwszą linię ochrony na granicy podsieci, a grupy zabezpieczeń jako zaporę dla poszczególnych instancji. Egzamin SAA-C03 często porównuje te dwa mechanizmy.
Network ACL: bezstanowa zapora na poziomie podsieci
Network ACL (NACL) to numerowana lista reguł stosowanych do całego ruchu przekraczającego granicę podsieci. NACL są bezstanowe — każdy pakiet jest oceniany niezależnie. Jeśli zezwolą Państwo na przychodzący ruch TCP na porcie 80, należy jawnie zezwolić na wychodzący ruch zwrotny (porty efemeryczne 1024–65535), aby odpowiedź mogła opuścić podsieć. Reguły są sprawdzane w kolejności numerycznej (najpierw najniższy numer); zastosowanie ma pierwsza pasująca reguła, a kolejne nie są już sprawdzane. Każdy VPC ma domyślny NACL zezwalający na cały ruch przychodzący i wychodzący.
# Deny all traffic from a specific IP in the NACL
aws ec2 create-network-acl-entry \
--network-acl-id acl-12345678 \
--ingress \
--rule-number 90 \
--protocol tcp \
--cidr-block 203.0.113.10/32 \
--rule-action deny \
--port-range From=0,To=65535Numerowanie i kolejność reguł NACL
Reguły NACL są sprawdzane w rosnącej kolejności według numeru reguły (od 1 do 32766), a sprawdzanie kończy się natychmiast po dopasowaniu reguły — reguła Allow o niższym numerze może zostać przesłonięta przez regułę Deny o jeszcze niższym numerze dla tego samego ruchu. AWS zaleca numerowanie reguł co 10 lub 100, aby pozostawić miejsce na późniejsze dodawanie reguł. Każdy NACL kończy się regułą domyślną (* DENY), która odrzuca cały ruch niepasujący do żadnej jawnej reguły. Tej reguły obejmującej pozostały ruch nie można edytować ani usuwać.
# Example NACL ruleset:
# Rule 100: Allow HTTPS (443) from 0.0.0.0/0
# Rule 200: Allow HTTP (80) from 0.0.0.0/0
# Rule 300: Deny All from specific-bad-IP
# Rule *: Deny All from 0.0.0.0/0 (default, implicit)Bezstanowe NACL: porty efemeryczne
Ponieważ NACL są bezstanowe, należy uwzględnić oba kierunki każdego połączenia. Gdy klient w Internecie łączy się z instancją EC2 na porcie 443, instancja wysyła odpowiedź z powrotem na port efemeryczny klienta (losowy port o wysokim numerze, zazwyczaj 1024–65535 w systemie Linux i 49152–65535 w systemie Windows). Reguły wychodzące NACL muszą jawnie zezwalać na ten zakres. Częstym błędem w konfiguracji NACL jest utworzenie reguły Allow dla przychodzącego portu 443 i pominięcie zezwolenia na wychodzące porty efemeryczne — połączenia zostają wtedy nawiązane, ale odpowiedzi są po cichu odrzucane.
# NACL outbound rule allowing return traffic on ephemeral ports
aws ec2 create-network-acl-entry \
--network-acl-id acl-12345678 \
--egress \
--rule-number 100 \
--protocol tcp \
--cidr-block 0.0.0.0/0 \
--rule-action allow \
--port-range From=1024,To=65535Podsumowanie informacji o Security Groups
Przypomnienie: grupy zabezpieczeń są przypisywane do instancji (lub ENI), zezwalają wyłącznie na jawne reguły Allow (nie obsługują Deny), są stanowe (odpowiedzi na dozwolony ruch przychodzący są automatycznie dozwolone wychodząco bez dodatkowej reguły), a wszystkie przypisane reguły oceniają łącznie z użyciem logiki OR. Jako źródła lub miejsca docelowe można wskazywać identyfikatory innych grup zabezpieczeń, co ułatwia utrzymanie konfiguracji w porównaniu z zakresami adresów IP. Grupy zabezpieczeń są podstawowym mechanizmem kontroli dostępu na poziomie instancji, a NACL dodają dodatkową warstwę na poziomie podsieci.
Najważniejsze różnice: NACL a Security Groups
Kluczowe porównanie na egzamin:
- Poziom: NACL = podsieć; SG = instancja (ENI)
- Stan: NACL = bezstanowy; SG = stanowy
- Reguły: NACL = Allow ORAZ Deny; SG = tylko Allow (niejawna odmowa)
- Sprawdzanie: NACL = według kolejności (wygrywa pierwsze dopasowanie); SG = sprawdzane są wszystkie reguły (wystarczy dowolna reguła Allow)
- Zakres: NACL dotyczy wszystkich instancji w podsieci; SG dotyczy wyłącznie powiązanych instancji
- Ruch przychodzący/wychodzący: NACL wymaga jawnych reguł w obu kierunkach; SG jest stanowa (w przypadku odpowiedzi wystarczą reguły ruchu przychodzącego)
Kiedy używać NACL
NACL należy używać do: blokowania określonych adresów IP (grupy zabezpieczeń nie mogą odrzucać ruchu — mogą tylko zezwalać; NACL mogą zawierać jawne reguły Deny blokujące znane złośliwe adresy IP lub roboty indeksujące). Reguł obejmujących całą podsieć (ta sama reguła dotyczy wszystkich instancji w podsieci bez modyfikowania poszczególnych grup zabezpieczeń). Dodatkowej warstwy ochrony (jeśli błędna konfiguracja grupy zabezpieczeń przypadkowo otworzy dostęp, reguła Deny w NACL na granicy podsieci nadal może zablokować ruch). W praktyce większość zespołów zarządza dostępem głównie za pomocą grup zabezpieczeń, a NACL wykorzystuje tylko do jawnego blokowania adresów IP.
Domyślne a niestandardowe NACL
Domyślny NACL (tworzony wraz z każdym VPC) zezwala na cały ruch przychodzący i wychodzący — zawiera regułę 100 Allow All Inbound oraz regułę 100 Allow All Outbound. Podsieci, które nie są jawnie powiązane z niestandardowym NACL, korzystają z domyślnego NACL. Po utworzeniu niestandardowego NACL zawiera on początkowo wyłącznie domyślną regułę Deny-All (reguła *), blokując cały ruch do czasu dodania jawnych reguł Allow. Oznacza to, że przypisanie nowego niestandardowego NACL do podsieci natychmiast zablokuje cały ruch — przed powiązaniem go z produkcyjnymi podsieciami należy dodać reguły Allow.
# Create a custom NACL (starts with DENY ALL)
aws ec2 create-network-acl --vpc-id vpc-12345678
# Associate it with a subnet
aws ec2 replace-network-acl-association \
--association-id aclassoc-12345678 \
--network-acl-id acl-custom-idKolejność sprawdzania: NACL i Security Groups
W przypadku ruchu przychodzącego do instancji EC2 ruch najpierw przechodzi przez NACL na granicy podsieci (gdzie jest sprawdzany zgodnie z kolejnością reguł). Jeśli NACL zezwoli na ruch, dociera on następnie do grupy zabezpieczeń instancji — grupa zabezpieczeń również musi na niego zezwolić. Oba mechanizmy muszą dopuścić ruch, aby mógł on dotrzeć do instancji. W przypadku ruchu wychodzącego najpierw sprawdzana jest grupa zabezpieczeń (stanowa — zezwala, jeśli ruch jest odpowiedzią na dozwolony ruch przychodzący), a następnie NACL (bezstanowy — musi zawierać jawną regułę Allow dla ruchu wychodzącego). Zrozumienie tej kolejności wyjaśnia, dlaczego reguły NACL dla ruchu zwrotnego są potrzebne nawet przy użyciu stanowych grup zabezpieczeń.
Rozwiązywanie problemów za pomocą NACL
NACL są częstym źródłem trudnych do zdiagnozowania problemów z siecią ze względu na swój bezstanowy charakter. Objawy to: połączenia zostają nawiązane, ale przepływ danych się zatrzymuje (brak reguły dla wychodzących portów efemerycznych); ruch odbywa się tylko w jednym kierunku (brak reguły przychodzącej lub wychodzącej); określone adresy IP nie mogą się połączyć (reguła Deny o niższym numerze jest dopasowywana przed regułą Allow). Metoda diagnozowania: należy użyć VPC Flow Logs, aby sprawdzić, czy pakiety na poziomie NACL mają status ACCEPT czy REJECT. Dziennik przepływu pokaże odrzucone pakiety oraz ich źródło i miejsce docelowe, pomagając wskazać brakującą regułę.
# Athena query to find NACL-rejected flows
SELECT sourceaddress, destinationaddress, destinationport, action
FROM vpc_flow_logs
WHERE action = 'REJECT'
AND interfaceid LIKE 'eni-%'
LIMIT 100;Warstwowa architektura zabezpieczeń
Zalecany schemat zabezpieczeń VPC z wieloma warstwami: NACLs w publicznych podsieciach zezwalają z Internetu wyłącznie na porty 80, 443 oraz wymagane porty efemeryczne; cała pozostała komunikacja jest odrzucana. Grupy zabezpieczeń publicznych podsieci przypisane do ALB zezwalają na porty 80/443 z 0.0.0.0/0. Grupy zabezpieczeń prywatnych aplikacji zezwalają wyłącznie na ruch z identyfikatora grupy zabezpieczeń ALB. Grupy zabezpieczeń prywatnych danych zezwalają wyłącznie na ruch z identyfikatora grupy zabezpieczeń aplikacji. Ta wielowarstwowa ochrona zapewnia, że nawet jeśli jedna warstwa zostanie skonfigurowana nieprawidłowo, inna nadal zapewnia ochronę — jest to zasada minimalnego dostępu na każdej warstwie.
Szybki test
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji nauczyli się Państwo, że: NACLs to bezstanowe zapory na poziomie podsieci, które obsługują reguły Allow i Deny oceniane w kolejności określonej numerami, grupy zabezpieczeń to stanowe zapory na poziomie instancji z regułami wyłącznie Allow, przy czym wszystkie reguły są oceniane łącznie oraz NACLs służą do jawnego blokowania adresów IP i definiowania reguł obowiązujących w całej podsieci, a grupy zabezpieczeń — do szczegółowej kontroli dostępu do instancji. To kończy moduł VPC Basics — w następnej kolejności omówimy RDS i relacyjne bazy danych w AWS.
Często zadawane pytania
Czy lekcja „Listy ACL sieci a grupy zabezpieczeń” jest bezpłatna?
Tak — pełny tekst „Listy ACL sieci a grupy zabezpieczeń” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „Listy ACL sieci a grupy zabezpieczeń”?
Porównają bezstanowe listy ACL sieci ze stanowymi grupami zabezpieczeń i poznają zastosowanie każdego rozwiązania w warstwowej ochronie sieci. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Listy ACL sieci a grupy zabezpieczeń”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Architektura VPC i bloki CIDR
- Brama internetowa i tabele routingu
- Brama NAT i prywatne podsieci
- Listy ACL sieci a grupy zabezpieczeń