ACL na Cisco: gdzie stawiać standardowe i rozszerzone
Lista ACL (Access Control List, lista kontroli dostępu) to najprostszy sposób, żeby router sam odrzucał ruch, którego nie chcesz: telefony z LAN-u nie dotykają serwera zarządzania, Internet nie dobija się do Twojej sesji Telnet. W tym artykule: jak router czyta reguły, czym różni się lista standardowa od rozszerzonej, dlaczego miejsce wpięcia listy jest równie ważne jak jej treść — i jak skonfigurować filtr tak, żeby nie odciąć sobie dostępu do urządzenia, na którym właśnie pracujesz.
Jak router czyta listę ACL
ACL to uporządkowany zestaw reguł, który router sprawdza dla każdego pakietu przechodzącego przez interfejs. Zasady są trzy i warto je zapamiętać w tej kolejności:
- Od góry do dołu — reguły sprawdzane są w kolejności wpisania.
- Pierwsze dopasowanie wygrywa — gdy pakiet pasuje do reguły, router stosuje jej akcję (
permitalbodeny) i nie ogląda reszty listy. - Na końcu czeka niewidoczne
deny any(tzw. implicit deny) — pakiet, który nie pasował do niczego, zostaje odrzucony. Nie musisz tego wpisywać, ono tam jest zawsze.
Z tego wynika najczęstszy błąd początkujących: lista zaczynająca się od zbyt ogólnego permit nigdy nie doszła do szczegółowych zakazów niżej — ruch został już przepuszczony pierwszą regułą. Reguły układa się od najbardziej szczegółowej do najbardziej ogólnej.
Kolejna pułapka: w tradycyjnej liście numerowanej nowa reguła dopisywana jest zawsze na końcu. Jeśli po deny obejmującym cały ruch dopiszesz wyjątek, nic nie da — wyjątek jest niżej niż domknięcie. Dlatego dzisiaj częściej używa się list nazwanych, gdzie każdą regułę ma numer sekwencyjny i można wstawić wpis w konkretne miejsce listy.
Standardowa czy rozszerzona
Różnica jest jedna, ale zasadnicza: co lista potrafi rozpoznać.
| Rodzaj | Numeracja | Kryteria |
|---|---|---|
| Standardowa | 1–99, 1300–1999 | tylko adres IP źródła |
| Rozszerzona | 100–199, 2000–2699 | źródło i cel, protokół, porty TCP/UDP |
Lista standardowa widzi wyłącznie to, skąd pakiet przyszedł. Może powiedzieć „nie wpuszczaj niczego z podsieci gości", ale już nie „wpuść z tej podsieci tylko ruch HTTP na serwer WWW". Lista rozszerzona rozróżnia pełną pentę: skąd, dokąd, jakim protokołem i na jaki port.
W praktyce oznacza to prosty podział zadań:
- standardowa — blokowanie całej podsieci, filtrowanie dostępu do linii VTY (sesje zdalne na routerze),
- rozszerzona — dopuszczanie konkretnych usług do konkretnych serwerów, odrzucanie ruchu, który nie ma prawa przekroczyć granicy sieci.
Do określania adresów w regułach używa się masek wildcard — jeśli ich liczenie jeszcze siedzi, mam to rozpisane w osobnym artykule: maska wildcard do ACL i OSPF.
Gdzie wpiąć listę — reguła, która wraca na egzaminie
Listę przypisujesz do interfejsu poleceniem ip access-group z kierunkiem in albo out. Wybór interfejsu nie jest dowolny — obowiązuje reguła:
- lista standardowa idzie blisko celu ruchu,
- lista rozszerzona idzie blisko źródła ruchu.
Dlaczego? Standardowa zna tylko źródło. Jeśli wpijesz ją przy źródle, odrzuci ruch do wszystkich miejsc, a przecież chciałeś zablokować tylko jedno. Wpięta blisko celu filtruje dokładnie tę drogę, nie ruszając niczego innego.
Rozszerzona zna cel, więc może odrzucić niechciany ruch od razu na wejściu do sieci — zanim przejedzie przez łącza i kolejne routery, które i tak by go nie przepuściły. Szkoda pasma i cykli procesora na pakiet skazany na porażkę.
Ta zasada to klasyk pytań egzaminacyjnych CCNA w stylu „na którym interfejsie którego routera umieścisz listę" — i zarazem realna umiejętność projektowa.
Jak nie odciąć sobie dostępu
Scenariusz, który zdarzył się każdemu, kto pierwszą listę założył zdalnie: wpisujesz ip access-group 100 in na interfejsie, przez który prowadzi Twoja sesja Telnet, reguły dopuszczające Twojego hosta jeszcze nie ma (albo jest niżej niż implicit deny) — i sesja zamiera. Router działa, sieć działa, Ty już nie masz jak wejść.
Zabezpieczenia, które stosuje się od pierwszego dnia:
- Dopuść swój host zanim przypiszesz listę do interfejsu. Reguła
permitdla adresu, z którego pracujesz, musi być na liście zanimip access-groupwejdzie w życie. - Najlepiej testuj przez konsolę. Fizyczny lub emulowany port konsolowy nie przechodzi przez filtrowany interfejs — lista Cię nie obejmie.
- Listę przypisuj jako ostatni krok, nie pierwszy. Konfiguracja
access-list ...niczego jeszcze nie filtruje; dopieroip access-groupwłącza filtr. - Do zabezpieczenia samego routera (sesje VTY) używa się odrębnego mechanizmu:
access-classw sekcjiline vty, a nieip access-groupna interfejsie.
Konfiguracja: tylko HTTP do serwera
Przykład rozszerzonej listy: użytkownicy z podsieci 192.168.10.0/24 mają móc otwierać wyłącznie strony WWW na serwerze 192.168.20.50; cały pozostały ruch do tego serwera jest odrzucany.
access-list 100 permit tcp 192.168.10.0 0.0.0.255 host 192.168.20.50 eq 80
access-list 100 deny ip any any log
!
interface gigabitEthernet 0/1
ip access-group 100 out
Serwer wisi w sieci za interfejsem G0/1, więc lista działa na ruch wychodzący z tego interfejsu — czyli dokładnie na pakiety zmierzające do serwera. Końcówka log w regule deny powoduje, że router loguje każde odrzucenie — przyda się przy szukaniu, dlaczego „coś nie działa".
Zabezpieczenie dostępu zdalnego do samego routera listą standardową:
access-list 5 permit 192.168.100.0 0.0.0.63
!
line vty 0 4
access-class 5 in
Teraz sesje Telnet/SSH przyjmowane są tylko z podsieci zarządzania 192.168.100.0/26.
Weryfikacja: show ip access-lists pokazuje listę z licznikiem dopasowań przy każdej regule. Jeśli licznik rośnie przy deny, a nie powinien — masz odpowiedź, który ruch gubi się na filtrze.
Ćwiczenie: zablokuj i napraw
W Packet Tracerze zbuduj: PC-A (192.168.10.10/24) i PC-B (192.168.30.10/24) po dwóch stronach routera R1, po jednym przełączniku w każdej podsieci. Interfejsy routera: G0/0 — 192.168.10.1/24, G0/1 — 192.168.30.1/24, oba z no shutdown. Ustaw bramy na PC.
- Sprawdź ping PC-A → PC-B. Musi działać przed filtracją.
- Na R1 wpisz listę standardową
access-list 10 deny host 192.168.10.10, a na interfejsieG0/1ip access-group 10 out— czyli blisko celu, zgodnie z regułą. - Ping PC-A → PC-B teraz zawodzi. Uwaga: PC-B → PC-A też nie odpowie — odpowiedzi (echo reply) mają adres źródłowy 192.168.10.10 i lista odrzuca je na wejściu do podsieci PC-B. To typowy efekt listy standardowej blisko celu: blokuje dany ruch wszędzie, gdzie ją wpięto, a nie tylko w jednym kierunku.
- Dopisz
access-list 10 permit any— bez niego implicit deny odrzucałby cały pozostały ruch do podsieci192.168.30.0/24. Ping PC-A → PC-B nadal zawodzi: reguładenyjest wyżej, a pierwsze dopasowanie wygrywa. - Zamień listę na rozszerzoną: na
G0/1zdejmij starą (no ip access-group 10 out, potemno access-list 10), wpiszaccess-list 110 deny icmp host 192.168.10.10 host 192.168.30.10plusaccess-list 110 permit ip any anyi wpnij ją naG0/0jakoin— czyli przy źródle. Ping PC-A → PC-B nadal nie przechodzi (odpowiedzi od PC-A też pasują do reguły), ale pakiet ginie od razu na wejściu do routera, zanim przejedzie przez cały router i łącze do podsieci PC-B.
Na koniec porządek w listach: każda reguła dopasowań to licznik w show ip access-lists. Przy filtrowaniu na produkcji to pierwsze polecenie po pytaniu „czemu nie działa” — zanim zaczniesz zgadywać, zobacz, co router faktycznie odrzuca.