Administratorzy sieci muszą dysponować narzędziami, które uniemożliwiają dostęp do sieci niepożądanym użytkownikom oraz udostępniają niezbędne usługi użytkownikom upoważnionym. Służą do tego takie elementy ochrony bezpieczeństwa, jak hasła, sprzęt do wywołań zwrotnych oraz zabezpieczenia fizyczne. Często jednak ich niedostatek polega na braku elastyczności typowej dla preferowanych przez większość administratorów prostych filtrów sieciowych i określonych mechanizmów kontroli. Administrator sieci może na przykład chcieć umożliwić użytkownikom dostęp do Internetu, lecz jednocześnie może zabronić zewnętrznym użytkownikom dostępu do sieci LAN przy użyciu protokołu Telnet.
Routery umożliwiają filtrowanie ruchu, na przykład przez blokowanie ruchu internetowego, i wykorzystują do tego celu listy kontroli dostępu ACL (ang. Access Control List). ACL jest sekwencyjną listą instrukcji zezwoleń (permit) lub zakazów (deny), które są stosowane w odniesieniu do adresów lub protokołów wyższych warstw. Lista ACL może być bardzo prosta i składać się z pojedynczego wiersza, zezwalającego na dostęp pakietom pochodzącym z określonego hosta, ale może być również złożonym zbiorem reguł i warunków, które definiują ruch w sieci oraz określają procesy routera.
Listy ACL są listami warunków używanych do sprawdzania ruchu w sieci, który jest kierowany przez interfejs routera. Listy te informują router, jakie rodzaje pakietów zaakceptować, a jakie odrzucić. Akceptacja i odrzucenie zależą od spełnienia konkretnych warunków. Listy ACL umożliwiają zarządzanie ruchem oraz bezpieczny dostęp do i z sieci.
Mogą zostać utworzone dla wszystkich sieciowych protokołów routowanych, takich jak IP i IPX (ang. Internetwork Packet Exchange). Listy ACL można tak skonfigurować na routerze, aby kontrolować dostęp do sieci lub podsieci.
Aby możliwe było filtrowanie ruchu, listy ACL muszą określić, czy pakiety mają być przekazywane, czy blokowane na interfejsach routera. Router sprawdza każdy pakiet i albo go przekaże, albo odrzuci, w zależności od warunków określonych na liście ACL. Lista ACL umożliwia podejmowanie decyzji o routingu na podstawie adresu źródłowego, adresów docelowych, protokołów oraz numerów portów wyższych warstw.
Listy ACL muszą być definiowane osobno dla każdego protokołu, kierunku oraz interfejsu. Aby kontrolować przepływ ruchu na interfejsie, należy zdefiniować listę ACL dla każdego protokołu włączonego na tym interfejsie. Jedna lista ACL kontroluje ruch na interfejsie w jednym kierunku. Aby kontrolować ruch przychodzący i wychodzący, należy utworzyć dwie oddzielne listy ACL. Na każdym interfejsie można zdefiniować dwa kierunki i wiele protokołów. Jeśli router ma dwa interfejsy skonfigurowane dla protokołów IP, AppleTalk i IPX, potrzebnych będzie 12 oddzielnych list ACL. Dla każdego protokołu powstanie jedna lista, co należy pomnożyć przez dwa dla każdego kierunku i jeszcze raz przez dwa dla każdego interfejsu.
Listy ACL mogą wykonywać następujące zadania:
Lista ACL składa się z instrukcji, które określają, czy przychodzące lub wychodzące na dane interfejsy pakiety są akceptowane, czy odrzucane. Decyzje te są podejmowane na podstawie dopasowywania instrukcji warunkowej znajdującej się na liście kontroli dostępu, po czym pakiet zostaje zaakceptowany lub odrzucony w zależności od czynności zdefiniowanej w instrukcji.
Kolejność instrukcji na liście ACL jest istotna. System Cisco IOS sprawdza pakiet, porównując go z każdą z instrukcji warunkowych w kolejności od początku do końca listy. Po znalezieniu na liście pasującej pozycji jest przeprowadzana czynność akceptacji lub odrzucenia i nie są wykonywane żadne inne instrukcje z listy ACL. Jeśli na początku listy znajduje się instrukcja warunkowa dopuszczająca cały ruch, żadna z instrukcji znajdujących się niżej nie będzie nigdy sprawdzana.
Jeśli niezbędne jest dodanie nowych instrukcji warunkowych do listy kontroli dostępu, należy usunąć całą listę i utworzyć ją na nowo, tym razem z nową instrukcją warunku.
Proces działania routera rozpoczyna się tak samo, niezależnie od tego, czy używane są listy ACL, czy też nie. Po nadejściu ramki do interfejsu router sprawdza, czy adres warstwy 2 odpowiada jego adresowi lub czy ramka jest ramką rozgłoszeniową. Jeśli adres ramki został zaakceptowany, informacja o ramce jest usuwana, a router sprawdza, czy istnieje lista ACL interfejsu wejściowego. Jeśli lista ACL istnieje, dla pakietu sprawdzane są instrukcje w niej zawarte. Pakiet, który spełnia warunek instrukcji, zostaje zaakceptowany lub odrzucony. Jeśli pakiet został zaakceptowany na interfejsie, sprawdzone dla niego zostaną pozycje tablicy routingu, aby określić interfejs docelowy i przenieść tam pakiet. Następnie router sprawdza, czy interfejs docelowy zawiera listę ACL. Jeśli lista ACL istnieje, dla pakietu sprawdzane są jej instrukcje. Jeśli pakiet spełnia warunek instrukcji, wykonywana jest czynność akceptacji lub odrzucenia. Jeśli nie ma listy ACL lub pakiet został zaakceptowany, zostanie on poddany enkapsulacji w nową ramkę warstwy 2 i przekazany przez interfejs do następnego urządzenia.
Instrukcje listy ACL są wykonywane po kolei w porządku logicznym. Jeśli warunek dopasowania jest spełniony, pakiet zostaje dopuszczony lub odrzucony, a następne warunki listy ACL nie są sprawdzane. Jeśli nie zdołano dopasować żadnej instrukcji ACL, domyślnie na końcu listy jest umieszczana niejawna instrukcja deny any. Niejawna instrukcja deny any na końcu listy ACL zapobiega akceptacji pakietów, które nie zostały dopasowane.
Istnieje wiele rodzajów list ACL. Podczas konfigurowania list ACL na routerze każdej z list należy nadać unikalny numer identyfikacyjny. Numer ten identyfikuje typ utworzonej listy kontroli dostępu i musi należeć do zakresu numerów właściwych dla tego typu listy.
| Protokół | Zakres |
| IP | 1-99, 1300-1999 |
| Extended IP | 100-1999, 2000-2699 |
| Apple Talk | 600-699 |
| IPX | 800-899 |
| Extended IPX | 900-999 |
| IPX Service Advertising Protocol | 1000-1099 |
Po przejściu do odpowiedniego trybu poleceń i ustaleniu numeru i typu listy użytkownik wprowadza instrukcje listy kontroli dostępu przy użyciu polecenia access-list, po którym następują właściwe parametry. Jest to pierwszy z dwóch etapów procesu. Drugim etapem jest przypisanie listy ACL do właściwego interfejsu.
W przypadku protokołu TCP/IP listy ACL są przypisywane do jednego lub kilku interfejsów, gdzie mogą filtrować ruch wejściowy i wyjściowy, przy użyciu polecenia ip access-group wydanego w trybie konfiguracji interfejsu. Podczas przypisywania listy ACL do interfejsu należy podać, czy ma ona dotyczyć pakietów wchodzących, czy wychodzących. Kierunek filtracji jest ustalany, aby sprawdzać pakiety, które przychodzą do interfejsu lub są z niego wysyłane. Aby określić, czy lista ACL kontroluje ruch przychodzący, czy wychodzący, administrator sieci musi traktować interfejsy tak, jakby widział je "z wnętrza routera". Jest to bardzo istotna zasada. Ruch, który jest odbierany przez interfejs, jest filtrowany za pomocą listy kontroli dostępu ruchu przychodzącego. Ruch wychodzący z interfejsu jest filtrowany przez listę kontroli dostępu ruchu wychodzącego. Po utworzeniu numerowanej listy ACL należy przypisać ją do interfejsu. Nie można zmienić listy ACL zdefiniowanej z a pomocą numeru. Trzeba ją usunąć, używając instrukcji no access-list numer-listy, a następnie odtworzyć.
Aby utworzyć i stosować listy kontroli dostępu, należy przestrzegać następujących reguł:
Dzika maska jest 32-bitową wielkością podzieloną na cztery oktety.
| Access-list 1 permit 172.16.0.0 0.0.255.255 | |
| Adres IP | 10101100.00010000.00000000.00000000 |
| Dzika maska | 00000000.00000000.11111111.11111111 |
Dzika maska jest nakładana na adres IP. Zera i jedynki w masce opisują sposób postępowania z odpowiadającymi im bitami adresu IP. Pojęcie dzikiej maski odnosi się do procesu dopasowywania bitów masek na liście ACL. Dzikie maski nie mają nic wspólnego z maskami podsieci. Służą one innym celom i podlegają innym regułom. Maska podsieci i dzika maska zastosowane w odniesieniu do adresu IP oznaczają dwie rożne koncepcje. Maski podsieci używają binarnych zer i jedynek do identyfikacji części adresu IP oznaczających sieć, podsieć i hosta. Dzikie maski używają binarnych zer i jedynek do filtrowania pojedynczych adresów IP lub ich grup w celu umożliwienia lub zabronienia dostępu do zasobów na podstawie adresu IP. Podobieństwo między dziką maską a maską podsieci polega jedynie na tym, że obie mają długość 32 bitów i składają się z binarnych jedynek i zer.
W procesie przetwarzania dzikiej maski jest ona nakładana na adres IP zawarty w instrukcji listy kontroli dostępu. W ten sposób tworzona jest wartość dopasowania, która jest używana do porównania i określane jest, czy pakiet powinien być przetwarzany przez daną instrukcję ACL, czy też przesłany do następnej instrukcji w celu kolejnego sprawdzenia. Druga część procesu ACL polega na tym, że dzika maska zostaje zastosowana w odniesieniu do adresu IP sprawdzanego przez daną instrukcję ACL. Wynik złożenia adresu IP i maski blankietowej musi być równy wartości dopasowania instrukcji ACL.
Na listach ACL są stosowane dwa specjalne słowa kluczowe: opcje any i host. Opcja any zastępuje 0.0.0.0 dla adresu IP i 255.255.255.255 dla dzikiej maski. Opcja ta pasuje do dowolnego adresu, z którym jest porównywana. Opcja host zastępuje 0.0.0.0 dla maski. Maska ta wymaga, aby wszystkie bity w adresie ACL i adresie pakietu pasowały do siebie. Opcja ta będzie wymuszała dopasowanie do jednego konkretnego adresu.
Polecenie show ip interface służy do wyświetlania informacji o interfejsie IP oraz wskazania, czy do interfejsu przypisane są listy ACL. Polecenie show access-lists służy do wyświetlania zawartości wszystkich list ACL na routerze. Aby wyświetlić konkretną listę, jako opcję tego polecenia należy podać nazwę lub numer listy ACL. Polecenie show running-config służy również do wyświetlania listy kontroli dostępu na routerze oraz informacji o ich przypisaniu do interfejsów.
Te instrukcje show służą do sprawdzenia zawartości i rozmieszczenia list. Zaleca się testowanie list kontroli dostępu przy użyciu przykładowego ruchu, aby sprawdzić poprawność zawartej w nich logiki.
Standardowe listy ACL sprawdzają adres źródłowy routowanych pakietów IP. Lista ACL zezwoli lub zabroni dostępu dla całego stosu protokołów, opierając się na adresie sieci, podsieci i hosta. Na przykład w pakietach przychodzących do interfejsu Fa0/0 są sprawdzane adresy źródłowe oraz protokoły. Pakiety, które zostały dopuszczone, są kierowane przez router do interfejsu wyjściowego. Jeśli nie zostały dopuszczone, są odrzucane na interfejsie wejściowym.
Standardowa wersja polecenia konfiguracji globalnej access-list służy do definiowania standardowej listy ACL o numerze z przedziału od 1 do 99. W przypadku systemu Cisco IOS wersja 12.0.1 standardowe listy ACL korzystają z dodatkowych numerów (od 1300 do 1999), co łącznie daje maksymalną liczbę 798 standardowych list ACL. Te dodatkowe numery są znane pod nazwą dodatkowych list kontroli dostępu IP.
Pełna składnia polecenia standardowej listy ACL wygląda następująco:
Router(config)#access-list numer-listy-dostępu {deny | permit | remark} źródło [dzika maska-źródła ] [log]Aby zrozumieć jej działanie, lepiej jest zapoznać się z wyjaśnieniem, takim jak przedstawione poniżej:
access-list 1 remark Umożliwia wyłącznie dostęp stacji roboczej Kowalskiego access-list 1 permit 171.69.2.88Aby usunąć standardową listę ACL, należy użyć odmiany polecenia z wyrazem no. Składnia jest następująca:
Router(config)#no access-list numer-listy-dostępuPolecenie ip access-group łączy istniejącą standardową listę ACL z interfejsem
Router(config)#ip access-group {numer-listy-dostępu | nazwa-listy-dostępu} {in | out}Rozszerzone listy ACL są używane częściej niż listy standardowe, ponieważ umożliwiają większy zakres kontroli. Rozszerzone listy ACL sprawdzają źródłowe i docelowe adresy pakietów oraz mogą sprawdzać protokoły i numery portów. Zwiększa to elastyczność opisu elementów sprawdzanych przez listę ACL. Dostęp można umożliwić lub uniemożliwić na podstawie adresów nadawcy i odbiorcy pakietu, typu protokołu oraz portu. Rozszerzone listy ACL mogą jednocześnie zezwalać na ruch e-mail z interfejsu Fa0/0 do określonych miejsc dostępnych poprzez interfejs S0/0 oraz uniemożliwiać przesyłanie plików i przeglądanie sieci WWW. Przy odrzucaniu pakietów niektóre protokoły wysyłają do nadawcy pakiet echo, aby powiadomić, że miejsce przeznaczenia jest niedostępne.
Na pojedynczej liście ACL można skonfigurować wiele instrukcji. Wszystkie instrukcje powinny mieć ten sam numer listy kontroli dostępu, aby związać je z tą samą listą ACL. Liczba instrukcji warunków jest dowolna i ograniczona wyłącznie przez dostępną pamięć routera. Oczywiście im więcej instrukcji zawiera lista ACL, tym trudniej ją zrozumieć i nią zarządzać.
Treść instrukcji rozszerzonej listy ACL może być bardzo długa i może zostać zawinięta w oknie terminala. W przypadku dzikich masek w instrukcji można również użyć słów kluczowych host lub any.
Na końcu instrukcji rozszerzonej listy ACL można podać numer portu TCP lub UDP, aby zwiększyć precyzję warunku. Można używać operatorów logicznych, takich jak równy (eq), nierówny (neq), większy (gt) lub mniejszy (lt). Rozszerzona lista ACL będzie wykonywała te operacje na określonych protokołach. Rozszerzone listy ACL używają numerów list kontroli dostępu z zakresu od 100 do 199 (w nowszych wersjach systemu IOS również z zakresu od 2000 do 2699). W przypadku oprogramowania Cisco IOS wersja 12.0.1 rozszerzone listy ACL mogą korzystać z dodatkowych numerów (od 2000 do 2699), co zwiększa dostępną liczbę list ACL do 799. Te dodatkowe numery są znane pod nazwą dodatkowych list kontroli dostępu IP.
Polecenie ip access-group służy do łączenia istniejącej rozszerzonej listy ACL z interfejsem: Należy pamiętać, że dla danego interfejsu, kierunku i protokołu dopuszczalna jest tylko jedna lista ACL. Format polecenia jest następujący:
Router(config-if)#ip access-group numer-listy-dostępu {in | out}Nazwane listy ACL dla protokołu IP zostały wprowadzone w oprogramowaniu Cisco IOS wersja 11.2. Nazwane listy ACL umożliwiają nadanie standardowym i rozszerzonym listom ACL nazw zamiast numerów. Nazwane listy kontroli dostępu mają następujące zalety:
Przez wdrożeniem nazwanych list ACL należy rozważyć wymienione poniżej uwarunkowania.
Nazwane listy ACL nie są zgodne z wersjami systemu Cisco IOS wcześniejszymi niż 11.2.
Dla kilku list ACL nie można używać tej samej nazwy. Na przykład nie można użyć nazwy George dla standardowej i rozszerzonej listy ACL.
Nazwaną listę ACL tworzy się przy użyciu polecenia ip access-list. Przenosi ono użytkownika do trybu konfiguracji listy ACL. W trybie konfiguracji listy ACL należy podać jeden lub więcej warunków zezwalających lub zabraniających. Określa to, czy pakiet odpowiadający instrukcji ACL jest przepuszczany, czy odrzucany.
Prawidłowe rozmieszczenie listy ACL powoduje filtrowanie ruchu oraz poprawia wydajność sieci. Lista ACL powinna być umieszczona w takim miejscu, aby miało to największy wpływ na wydajność.
Ogólna reguła jest taka, aby rozszerzone listy ACL umieszczać jak najbliżej źródła blokowanego ruchu. Standardowe listy ACL nie określają adresów docelowych, tak więc należy umieszczać je jak najbliżej celu.
Administratorzy mogą umieszczać listy kontroli dostępu jedynie na kontrolowanych przez siebie urządzeniach. Z tego powodu rozmieszczenie list kontroli dostępu należy rozpatrywać w kontekście zakresu działania administratora sieci.
Zapora jest elementem architektury sieci umieszczonym między użytkownikiem a światem zewnętrznym Jej zadaniem jest ochrona wewnętrznej sieci przed intruzami. W większości przypadków intruzi atakują z Internetu oraz z tysięcy dołączonych do niego odległych sieci. Zazwyczaj zapora sieciowa składa się z kilku różnych komputerów, które wspólnie zapobiegają próbom niepożądanego i nielegalnego dostępu.
Listy ACL powinny być używane przez routery zaporowe, ponieważ są one często umieszczane między siecią wewnętrzną a zewnętrzną, taką jak Internet. Dzięki temu możliwa jest kontrola ruchu przychodzącego do konkretnej części sieci wewnętrznej lub wychodzącego z niej. Router zaporowy izoluje od tego ruchu pozostałą część sieci wewnętrznej.
Skonfigurowanie list ACL na routerach brzegowych, które są umieszczone na krawędzi sieci, jest niezbędne do zapewnienia bezpieczeństwa. Jest to podstawowy środek ochrony przed zagrożeniami nadchodzącymi z sieci zewnętrznej lub słabiej kontrolowanych obszarów sieci do bardziej prywatnych obszarów sieci. Na routerach brzegowych można utworzyć listy ACL dla każdego protokołu sieciowego skonfigurowanego na interfejsach routera.
Standardowe i rozszerzone listy kontroli dostępu są stosowane w odniesieniu do pakietów przechodzących przez router. Nie są one przeznaczone do blokowania pakietów wygenerowanych przez ten router. Domyślnie, rozszerzona lista kontroli dostępu blokująca wychodzący ruch Telnet nie zapobiega nawiązywaniu sesji Telnet inicjowanych przez router.
Oprócz fizycznych portów lub interfejsów, takich jak Fa0/0 i S0/0, w routerze istnieją również porty wirtualne. Te porty wirtualne są nazywane liniami vty. Istnieje pięć linii vty o numerach od 0 do 4. W celu zapewnienia bezpieczeństwa można zezwolić lub zabronić dostępu użytkownikom z terminali wirtualnych do routera i równocześnie zabronić dostępu do innych urządzeń z tego routera.
Celem ograniczenia dostępu do linii vty jest zwiększenie bezpieczeństwa sieci. Protokół Telnet może również służyć do tworzenia niefizycznych połączeń vty z routerem. Istnieje tylko jeden rodzaj list kontroli dostępu dla linii vty. Do wszystkich linii vty należy stosować takie same ograniczenia, ponieważ nie można przewidzieć, z której linii skorzysta użytkownik.
Proces tworzenia listy kontroli dostępu dla linii vty jest taki sam, jak w przypadku interfejsu. Jednak stosowanie listy ACL do linii terminala wymaga użycia polecenia access-class zamiast access-group
Podczas konfigurowania list kontroli dostępu dla linii vty należy wziąć pod uwagę następujące uwarunkowania: