||

Listy ACL – kontrola dostępu

Czy zastanawialiście się w jaki sposób router filtruje ruch sieciowy? Skąd urządzenie wie, komu zezwolić np. na dostęp do sieci wewnętrznej LAN, a komu nie zezwolić? Z jakiego urządzenia np. możemy wyjść z sieci LAN na „świat”? Na te i na wiele innych pytań postaramy się odpowiedzieć w dzisiejszym artykule, który poświęcony jest listom kontroli dostępu.

Jeśli chcesz zobaczyć temat w formie video – KLIKNIJ 🙂

ACL – co to takiego?

ACL (ang. Access Control List), czyli lista kontroli dostępu. Ta funkcja służy głównie do filtrowania ruchu sieciowego i jest nie odłącznym elementem zabezpieczenia sieci. Listy filtrują taki ruch w oparciu
o adres źródła oraz maskę. Ponadto wytyczne mogą zawierać  protokoły, numery portów, docelowy adres IP albo rodzaj wiadomości. Zdefiniowane zasady dostępu bądź zakazy wykonywane są zgodnie z zasadą „od góry do dołu” linijka po linijce. Innym zastosowaniem list ACL jest np.:

  • definicja ruchu do translatora adresów sieciowych, czyli NAT;
  • szyfrowanie;
  • filtracja protokołów innych niż IP.

 Lecz są to opcje zaawansowane i omówione zostaną w innym artykule.

Zastosowanie list

Do czego może posłużyć lista ACL Administratorowi?

  • Zabezpieczenie dostępu do sieci – Administrator może zdefiniować obszary w swojej sieci LAN oraz określić ich dostępność urządzeniom znajdującym się w tej sieci.
  • Określenie typu przenoszonego ruchu sieciowego – Administrator może określić uprawnienia użytkownikom do określonych usług np. użytkownicy mogą korzystać z komunikacji www ale  wysyłać lub pobierać pliki z zewnątrz już nie mogą, gdyż zablokowany jest ruch FTP.
  • Kontrola nad wydajnością sieci – Administrator może mieć kontrolę nad jakością swojej sieci poprzez np. zablokowanie ruchu video, dzięki czemu sieć będzie mniej obciążona i zwiększy się jej efektywność.

Zasada działania listy ACL

Jak wspomniano wcześniej listy filtrują ruch opierając się na adresie źródłowym oraz masce. Po co maska? Nie wystarczy sam adres IP źródła? Na to pytanie odpowiemy w dalszej części artykułu, gdyż
w tej chwili mogłoby to trochę wprowadzić zamieszanie. Zacznijmy od początku. Aby lepiej zrozumieć ogólną zasadę działania listy ACL przyjrzyjmy się poniższemu schematowi.

Zasada działania listy ACL – opracowanie własne

Przyjmijmy, że lista ACL została utworzona na routerze brzegowym. Załóżmy również, że pewne pakiety danych próbują zostać wysłane z sieci LAN w stronę sieci Internet i odwrotnie. Trafiają one do routera, który kieruje je do konkretnego portu. Na tych portach została przypisana utworzona przez Administratora lista dostępowa. Router przystępuje do przeglądania jej wpisów od góry do dołu, linijka po linijce w celu odpowiedniego dopasowania przychodzącego lub wychodzącego pakietu z informacją w liście. Pakiet zostanie przepuszczony jeśli w warunku listy do którego będzie dopasowanie, zadeklarowana została instrukcja typu permit. Natomiast jeśli w warunku będzie wpis typu deny, to pakiet zostanie odrzucony. Trzeba w tym miejscu zaznaczyć, że w przypadku wystąpienia pierwszego poprawnego dopasowania do warunków w liście ACL, kolejne warunki tej listy nie są już sprawdzane. Domyślnie na żadnych portach w routerze nie są stworzone żadne listy ACL. 

A gdzie takie listy tworzymy? Przeważnie takie listy zakłada się na routerach łączących sieć wewnętrzną z siecią Internet, a także na routerach w dwóch różnych obszarach sieci wewnętrznej np. na routerze w głównej siedzibie firmy i  routerze w oddziale firmy.

Budowa listy ACL

Listy dostępowe definiuje się na routerze w trybie konfiguracji globalnej. Każda lista posiada unikalny identyfikator, czyli liczbę. Trzeba pamiętać, że nie jest możliwe skonfigurowanie dwóch list
o takim samym identyfikatorze na jednym urządzeniu. Każda lista musi mieć swoją unikalną liczbę. Jaka to liczba? Czy może być ona dowolna? Niestety nie. Każdy taki numer określa rodzaj listy. Poniżej przedstawione zostały zakresy numerów do odpowiednich typów list:

  • [1-99] – standardowa lista dostępu IP
  • [100-199] – rozszerzona lista dostępu IP
  • [1000-1099] – lista dostępu IPX SAP
  • [1100-1199] – rozszerzona lista dostępu 48-bitowych adresów MAC
  • [1200-1299] – lista dostępu adresu skonsolidowanego IPX
  • [1300-1999] – standardowa lista dostępu IP (rozszerzony zakres)
  • [200-299] – lista dostępu typu-kodu protokołu
  • [300-399] – DECnet
  • [600-699] – Appletalk
  • [700-799] – lista dostępu 48-bitowych adresów MAC
  • [800-899] – standardowa lista dostępu IPX
  • [900-999] – rozszerzona lista dostępu IPX
  • [2000-2699] – rozszerzona lista dostępu IP (rozszerzony zakres).

Aby stworzyć standardową listę ACL (ang. standard  ACL) należy wykonać poniższe kroki:

  • utworzenie listy –  access-list [identyfikator]
  • zdefiniowanie opcji dostępu: permit, jeśli zezwala się na niego lub denny, gdy się go odmawia – access-list [identyfikator] permit  lub access-list [identyfikator] deny
  • podanie adresu IP lub nazwę hosta – access-list [identyfikator] permit [adres lub host]  lub access-list [identyfikator] denny [adres lub host].

Gdy lista została utworzona to następnie przypisuje się ją do konkretnego interfejsu na routerze. Jest to bardzo ważna czynność bez której lista nie będzie w ogóle działać. Aby tego dokonać przechodzimy do konfiguracji danego interfejsu na routerze i wydajemy poniższe polecenie

ip access-group [lista ACL] [in \ out].

 In lub out określa czy lista jest wejściowa czy wyjściowa.

W urządzeniach Cisco występują dwa rodzaje list: standardowa i rozszerzona. Jaka jest różnica między tymi listami? Mianowicie lista standardowa jak wspomniano wcześniej filtruje ruch na podstawie adresu źródłowego IP. Jeśli chodzi o listę rozszerzoną ma ona znacznie więcej funkcji, gdyż filtruje ruch nie tylko na podstawie adresu źródłowego ale również według adresu docelowego, numeru portu, protokołu lub np. rodzaju wiadomości. Lecz dziś zajmiemy się tylko listami standardowymi. Rozszerzone omówimy w innym artykule.

Lista wejściowa i wyjściowa – zasady działania

Wracając do tematu list wejściowych in i wyjściowych out. Na czym polega różnica działania takich list? Na te pytania pomoże odpowiedzieć nam poniższy rysunek.

Algorytm działania listy ACL – opracowanie własne

Jak możemy zaobserwować działanie listy ACL na wejście rozpoczyna się wejściem pakietu danych do routera. Router porównuje informacje zawarte w pakiecie do wpisów zawartych w liście ACL. Porównanie trwa tak długo aż router znajdzie pierwsze dopasowanie. Następnie router sprawdza
w trafionym wpisie czy pakiet danych może zostać przekazany dalej czy jednak ma zostać odrzucony. Może wystąpić też taka sytuacja, że po przeanalizowaniu wszystkich instrukcji w liście nie wystąpi żadne dopasowanie i wtedy pakiet zostaje z automatu odrzucony. Dlaczego tak się dzieje? Ponieważ
w liście ACL widnieje domyślna dodawana nie jawna instrukcja denny any, czyli odrzuć wszystko.

Teraz omówmy działanie listy ACL, która zostaje przypisana do interfejsu wyjściowego na routerze. Na początku router musi sprawdzić czy otrzymany pakiet danych jest możliwy do wysłania dalej. Aby to zrobić urządzenie przegląda wpisy w tablicy routingu. Jeśli takiej możliwości nie ma to router przerywa dalsze przekazywanie pakietów . Natomiast jeśli routing jest możliwy to wtedy analizuje wpisy w utworzonej liście ACL. Etap analizy wpisów listy ACL wygląda identycznie jak w przypadku analizy listy wejściowej. Jeśli dopasowanie istnieje to sprawdzana jest następnie instrukcja zezwalająca na wysłanie pakietu. Jeżeli takiego dopasowania nie ma to z automatu pakiet jest odrzucany. Tak więc różnica jest w krokach początkowych algorytmu kiedy pakiet z danymi dociera do routera. Reszta etapów algorytmu jest taka sama w obydwu przypadkach.

Tworzenie listy dostępu – praktyka

Aby lepiej zrozumieć jak działają listy ACL, jak się je tworzy i jakie mają zastosowanie należy wykonać praktyczny eksperyment. Do tego posłuży nam poniższy schemat topologii sieci, który został wykonany w programie GNS3.

Topologia sieci do zadania z listą ACL – opracowanie własne

Ten eksperyment polega na zaimplementowaniu dopasowania ruchu sieciowego aby umożliwić niektórym użytkownikom dostęp do zasobu sieciowego, a innym go ograniczyć. Powszechnym mechanizmem do iterowania ruchu jak już powiedzieliśmy jest lista dostępu ACL, która umożliwia kontrolę dostępu na podstawie nagłówka pakietu w warstwie trzeciej. Sieć wewnętrzna LAN ma być tak skonstruowana aby komunikacja między dwoma komputerami była możliwa w ramach wewnętrznej sieci LAN. Ponadto z urządzenia PC1 ma być możliwa komunikacja z siecią zewnętrzną ale już z komputera PC2 ten ruch ma być zablokowany. Jak to zrobić? Od czego zacząć?

Adresacja wstępna

Pierwszym krokiem jaki należy wykonać jest adresacja urządzeń wewnątrz sieci LAN. 

PC1> IP 192.168.1.100/24 192.168.1.254 
PC2> IP 192.168.1.200/24 192.168.1.254

Następnie adresujemy porty na routerze R1 według powyższego schematu.

R1(config)# interface FastEthernet0/0
R1(config-if)# ip address 192.168.1.254 255.255.255.0
R1(config-if)#no shutdown
R1(config)# interface Serial3/0
R1(config-if)# ip address 10.10.10.1 255.255.255.252
R1(config-if)#no shutdown

Teraz zaadresujemy porty na routerze o nazwie Internet, który w naszym schemacie symuluje sieć WAN.

Internet(config)# interface Serial3/0
Internet(config-if)# ip address 10.10.10.2 255.255.255.252

Dla naszych potrzeb ćwiczeniowych na obu routerach skonfigurujemy routing aby komunikacja między siecią LAN i WAN była możliwa. W naszym eksperymencie zrobimy prosty routing OSPF.

R1(config)# router ospf 1
R1(config-router)#network 10.10.10.0 0.0.0.3 area 0
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
Internet(config)# router ospf 1
Internet(config-router)#network 10.10.10.0 0.0.0.3 area 0

Teraz sprawdźmy czy urządzenia wewnątrz sieci LAN mogą komunikować się ze sobą.

PC1> ping 192.168.1.200
84 bytes from 192.168.1.200 icmp_seq=1 ttl=64 time=0.686 ms
84 bytes from 192.168.1.200 icmp_seq=2 ttl=64 time=1.024 ms
84 bytes from 192.168.1.200 icmp_seq=3 ttl=64 time=0.543 ms
PC2> ping 192.168.1.100
84 bytes from 192.168.1.100 icmp_seq=1 ttl=64 time=0.588 ms
84 bytes from 192.168.1.100 icmp_seq=2 ttl=64 time=0.596 ms
84 bytes from 192.168.1.100 icmp_seq=3 ttl=64 time=0.648 ms

Komunikacja jest prawidłowa. Ruch między komputerami odbywa się bez problemów. Teraz sprawdźmy czy możliwy jest ruch sieciowy z obu PC na adres portu wychodzącego z routera w kierunku sieci Internet.

PC1> ping 10.10.10.1
84 bytes from 10.10.10.1 icmp_seq=1 ttl=255 time=14.937 ms
84 bytes from 10.10.10.1 icmp_seq=2 ttl=255 time=15.299 ms
84 bytes from 10.10.10.1 icmp_seq=3 ttl=255 time=14.474 ms

PC2> ping 10.10.10.1
84 bytes from 10.10.10.1 icmp_seq=1 ttl=255 time=14.937 ms
84 bytes from 10.10.10.1 icmp_seq=2 ttl=255 time=15.299 ms
84 bytes from 10.10.10.1 icmp_seq=3 ttl=255 time=14.474 ms

Jak widać oba urządzenia pingują adres portu wychodzącego z routera w stronę sieci Internet. To teraz wydajmy polecenie ping z obu PC na adres portu routera symulującego Internet w stronę naszego routera.

PC1> ping 10.10.10.2
84 bytes from 10.10.10.2 icmp_seq=1 ttl=254 time=44.716 ms
84 bytes from 10.10.10.2 icmp_seq=2 ttl=254 time=45.204 ms
84 bytes from 10.10.10.2 icmp_seq=3 ttl=254 time=45.351 ms

PC2> ping 10.10.10.2
84 bytes from 10.10.10.2 icmp_seq=1 ttl=254 time=44.716 ms
84 bytes from 10.10.10.2 icmp_seq=2 ttl=254 time=45.204 ms
84 bytes from 10.10.10.2 icmp_seq=3 ttl=254 time=45.351 ms

Oba komputery mogą komunikować się z siecią Internet. Ale nasze zadanie polega na tym aby ten ruch był możliwy tylko z PC1, a z PC2 komunikacja ma być zabroniona.

Konfiguracja listy ACL według schematu

Tak więc przystępujemy do stworzenia listy ACL na routerze. Przechodzimy w tryb konfiguracji globalnej i wydajemy poniższe polecenia:

R1(config)# access-list 1 deny   192.168.1.200
R1(config)# access-list 1 permit 192.168.1.0 0.0.0.255

Pierwsza instrukcja dotyczy zablokowania ruchu z adresu IP, który został nadany komputerowi PC2. Drugi wpis dotyczy zezwolenia na ruch w stronę sieci Internet z adresu IP, który został przypisany urządzeniu PC1.

Gdy już stworzyliśmy prostą listę dostępu należy ją teraz przypisać do interfejsu, który wychodzi
z routera na „świat”. W naszym przypadku będzie to interfejs Serial3/0. Przechodzimy w tryb konfiguracji danego interfejsu i wydajemy poniższe polecenie.

R1(config)#interface serial3/0
R1(config-if)# ip access-group 1 out

W tym momencie przypisaliśmy stworzoną wcześniej listę ACL do danego interfejsu z udostępnieniem w kierunku wychodzącym. Można byłoby alternatywnie powyższą listę zastosować w kierunku przychodzącym na interfejsie fastEthernet0/0. To rozwiązanie uniemożliwiłoby hostowi PC2 dostęp do Internetu. Ponadto zablokowałoby wszelką komunikację między PC2, a routerem.

Po wykonaniu powyższych kroków sprawdźmy czy możliwa jest komunikacja z PC1 w stronę sieci Internet.

PC1> ping 10.10.10.2
84 bytes from 10.10.10.2 icmp_seq=1 ttl=254 time=44.716 ms
84 bytes from 10.10.10.2 icmp_seq=2 ttl=254 time=45.204 ms
84 bytes from 10.10.10.2 icmp_seq=3 ttl=254 time=45.351 ms
84 bytes from 10.10.10.2 icmp_seq=4 ttl=254 time=45.270 ms
84 bytes from 10.10.10.2 icmp_seq=5 ttl=254 time=45.148 ms

Ruch odbywa się bez zarzutów. Teraz sprawdźmy czy z urządzenia PC2 jest możliwe wysyłanie pakietów w stronę sieci Internet. 

PC2> ping 10.10.10.2
*192.168.1.254 icmp_seq=1 ttl=255 time=14.840 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.1.254 icmp_seq=2 ttl=255 time=15.013 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.1.254 icmp_seq=3 ttl=255 time=15.260 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.1.254 icmp_seq=4 ttl=255 time=15.587 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.1.254 icmp_seq=5 ttl=255 time=15.514 ms (ICMP type:3, code:13, Communication administratively prohibited)

Jak widzimy ruch został zablokowany. Otrzymujemy komunikat (ICMP type:3, code:13, Communication administratively prohibited). Ten komunikat świadczy o tym, że cel został nie osiągnięty z powodu zabronionej administracyjnie komunikacji. W tym komunikacie mamy zawarte jaki typ został zablokowany (ICMP), jaki rodzaj (type3: cel nieosiągnięty) oraz kod opisu(code 13: komunikacja zabroniona administracyjnie).

Tabela z kodami i opisami alertów

Poniżej znajduje się tabela z przykładowymi kodami oraz opisami danego typu komunikacji w tym przypadku ICMP.

RODZAJKODOPIS
0 – Echo Odpowiedz0Odpowiedź echo (używana do pingowania)
1 i 2Skryty
3 – Cel nieosiągalny0Sieć docelowa jest nieosiągalna
1Host docelowy nieosiągalny
2Protokół docelowy jest nieosiągalny
3Port docelowy jest nieosiągalny
4Wymagana fragmentacja i ustawiona flaga DF
5Trasa źródłowa nie powiodła się
6Nieznana sieć docelowa
7Nieznany host docelowy
8Host źródłowy izolowany
9Sieć zabroniona administracyjnie
10Host administracyjnie zabroniony
11Sieć nieosiągalna dla TOS
12Host nieosiągalny dla TOS
13Komunikacja zabroniona administracyjnie
14Naruszenie pierwszeństwa gospodarza
15Obowiązuje odcięcie pierwszeństwa
4 – Ugaszanie źródła0Tłumienie źródła (kontrola przeciążenia)
5 – Przekieruj wiadomość0Przekieruj Datagram dla sieci
1Przekieruj datagram dla hosta
2Przekieruj Datagram dla TOS i sieci
3Przekieruj Datagram dla TOS i hosta
6Alternatywny adres hosta
7Skryty
8 – Prośba o echo0Żądanie echa (używane do pingowania)
9 – Reklama routera0Reklama routera
10 – Pozyskiwanie routera0Wykrywanie/wybór/pozyskiwanie routera
11 – Przekroczono czas0TTL wygasł w tranzycie
1Przekroczono czas ponownego złożenia fragmentu
12 – Problem z parametrem: Zły nagłówek IP0Wskaźnik wskazuje błąd
1Brak wymaganej opcji
2Zła długość
13 – Znacznik czasu0Znak czasu
14 – Odpowiedź sygnatury czasowej0Odpowiedź sygnatury czasowej
15 – Prośba o informacje0Prośba o informacje
16 – Odpowiedź informacyjna0Informacja Odpowiedz
17 – Żądanie maski adresowej0Żądanie maski adresu
18 – Odpowiedź maski adresu0Odpowiedź maski adresu
19Zarezerwowane dla bezpieczeństwa
20 do 29Zarezerwowane dla eksperymentu odporności
30 – Traceroute0Prośba o informacje
31Błąd konwersji datagramu
32Przekierowanie hosta mobilnego
33Gdzie jesteś (pierwotnie przeznaczone dla IPv6)
34Here-I-Am (pierwotnie przeznaczone dla IPv6)
35Żądanie rejestracji mobilnej
36Mobilna odpowiedź rejestracyjna
37Żądanie nazwy domeny
38Odpowiedź nazwy domeny
39SKIP Algorithm Discovery Protocol, proste zarządzanie kluczami dla protokołu internetowego
40Photuris, awarie bezpieczeństwa
41ICMP dla eksperymentalnych protokołów mobilności
42 do 255Skryty
Tabela kodów wraz z opisami alertów – opracowanie własne

Czyli jak widzimy utworzona przez nas lista dostępu ACL działa poprawnie. Przepuszcza oraz blokuje ruch tym urządzeniom z sieci LAN w stronę sieci Internet, które zostały zadeklarowane w instrukcji utworzonej listy dostępu.

Podsumowanie

Powyższy eksperyment potwierdza poprawność działania listy dostępu ACL. Dzięki niej możliwe jest filtrowanie ruchu sieciowego co daje Administratorowi kontrolę nad bezpiecznym ruchem pakietów w sieci LAN. Lecz trzeba pamiętać aby taka lista działała poprawnie Administrator musi dokładnie przemyśleć i poprawnie zadeklarować instrukcje w liście dostępu.


Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *