Aby być bardziej precyzyjnym przy dopasowywaniu określonego ruchu sieciowego, stosuje się rozszerzone listy dostępu. Rozszerzone listy dostępu są trudniejsze do skonfigurowania i wymagają więcej czasu procesora niż standardowe listy dostępu, ale umożliwiają znacznie bardziej granularny poziom kontroli.
Dzięki rozszerzonym listom dostępu można oceniać dodatkowe informacje o pakietach, takie jak:
- źródłowy i docelowy adres IP
- typ protokołu TCP/IP (TCP, UDP, IP…)
- numery portów źródłowych i docelowych
Do skonfigurowania rozszerzonej listy dostępu wymagane są dwa kroki:
1. Skonfiguruj rozszerzoną listę dostępu za pomocą następującego polecenia:
(config) access list NUMBER permit|deny IP_PROTOCOL SOURCE_ADDRESS WILDCARD_MASK DESTINATION_ADDRESS WILDCARD_MASK PROTOCOL_INFORMATION
2. Zastosuj listę dostępu do interfejsu za pomocą następującego polecenia:
(config) ip access-group ACL_NUMBER in | out
Numery rozszerzonych list dostępu mają zakresy od 100 do 199 i od 2000 do 2699. Należy zawsze umieszczać rozszerzone listy dostępu ACL jak najbliżej źródła ocenianych pakietów.
Aby lepiej zrozumieć koncepcję rozszerzonych list dostępu, rozważ następujący przykład:
Chcemy umożliwić stacji roboczej administratora (10.0.0.1/24) nieograniczony dostęp do serwera (192.168.0.1/24). Odmówimy również wszelkiego rodzaju dostępu do serwera ze stacji roboczej użytkownika (10.0.0.2/24).
Po pierwsze, utworzymy oświadczenie, które zezwoli stacji roboczej administratora na dostęp do serwera:
Następnie musimy utworzyć oświadczenie, które odmówi dostępu do serwera ze stacji roboczej użytkownika:
Na koniec musimy zastosować listę dostępu do interfejsu Fa0/0 na R1:
To zmusi router do oceny wszystkich pakietów wchodzących na Fa0/0. Jeśli Administrator spróbuje uzyskać dostęp do Serwera, ruch będzie dozwolony, ze względu na pierwszą instrukcję. Jeśli jednak użytkownik spróbuje uzyskać dostęp do serwera, ruch będzie zabroniony z powodu drugiej deklaracji ACL.
Na końcu każdej listy dostępu znajduje się jawna deklaracja deny all, więc druga deklaracja ACL nie była tak naprawdę potrzebna. Po zastosowaniu listy dostępu każdy ruch, który nie jest jawnie dozwolony, zostanie odrzucony.
Po prawej stronie mamy Serwer, który służy jako serwer WWW, nasłuchujący na porcie 80. Musimy zezwolić Użytkownikowi na dostęp do stron internetowych na S1 (port 80), ale musimy również odmówić innego rodzaju dostępu.
Po pierwsze, musimy zezwolić na ruch od Użytkownika do portu Serwera 80. Możemy to zrobić za pomocą następującego polecenia:
Używając słowa kluczowego tcp, możemy filtrować pakiety według portów źródłowego i docelowego. W powyższym przykładzie zezwoliliśmy na ruch z 10.0.0.2 (stacja robocza użytkownika) do 192.168.0.1 (serwer) na porcie 80. Ostatnia część deklaracji, eq 80, określa port docelowy 80.
Ponieważ na końcu każdej listy dostępu znajduje się domyślna deklaracja deny all, nie musimy definiować kolejnych deklaracji. Po zastosowaniu listy dostępu, każdy ruch nie pochodzący z 10.0.0.2 i kierujący się do 192.168.0.1, port 80 będzie odrzucany.
Musimy zastosować listę dostępu do interfejsu:
Możemy sprawdzić, czy nasza konfiguracja zakończyła się sukcesem, próbując uzyskać dostęp do serwera ze stacji roboczej użytkownika przy użyciu różnych metod. Na przykład, ping nie powiedzie się:
Telnetowanie na port 21 nie powiedzie się:
Jednakże będziemy mogli uzyskać dostęp do serwera na porcie 80 za pomocą przeglądarki:
.