Listy kontroli dostępu to zestaw komend, które definiują które pakiety mogą zostać wpuszczone, lub wypuszczone z sieci w zależności od tego co mają segmenty w nagłówkach. Filtrowanie może odbywać się na podstawie źródłowego adresu ip, w takim wypadku mówimy o standardowych listach dostępowych lub w znacznie rozszerzonej wersji na podstawie źródłowego i/lub docelowego adresu ip, protokołu oraz konkretnego numeru portu tcp/udp. Dodatkowo każda ACL’ka jest przypisywana do interfejsu w konkretnym kierunku (in lub out).

Poprawnie skonfigurowane ACL’ki zapewniają:
- Podstawową optymalizację ruchu w sieci poprzez odrzucanie niepożądanych pakietów
- Dodatkową warstwę zabezpieczeń poprzez ściśle określone reguły, które definiują które hosty/podsieci mogą się ze sobą komunikować
- Ograniczenie dostępu użytkownikom do zasobów sieciowych poprzez filtrowanie ruchu na podstawie protokołów np. ftp lub http/https
Poprawnie skonfigurowane ACL’ki zapewniają:
Standard ACL
Access Control Lists dzielą się zasadniczo na standardowe (tylko ipv4) i rozszerzone (ipv4/ipv6) oraz ze względu na sposób identyfikacji na numeryczne i nazwane.
Standardowe ACL tworzymy poprzez wydanie komendy access-list następnie podajemy identyfikator listy (słownie lub numerycznie). W kolejnym kroku definiujemy czy ruch ma zostać przepuszczony (permit) lub odrzucony (deny). Na końcu polecenia definiujemy zakres adresów, których dotyczy lista dostępowa poprzez podanie adresu ip podsieci/hosta oraz wildcard mask (maska blankietowa) lub poprzez użycie słówka any.
R1(config)#access-list 1 permit 192.168.0.0 0.0.0.255 R1(config)#access-list 1 deny any
Wildcard mask tworzymy następująco:
255.255.255.255
– 255.255.255.000 odejmujemy maskę podsieci
= 000.000.000.255
Do każdej ACL’ki możemy dodatkowo dodać opis w używająć polecenia remark
R1(config)#access-list 1 remark Permit hosts from 192.168.0.0 LAN R1#show running-config | include access-list 1 access-list 1 remark Permit hosts from 192.168.0.0 LAN access-list 1 permit 192.168.0.0 0.0.0.255 access-list 1 deny any
Gotową ACL’kę należy podpiąć do interfejsu we właściwym kierunku (ruch wchodzący – in lub wychodzący out)
R1(config)#interface fastethernet 0/1 R1(config-if)#access-group 1 in
ACL’kę dla dostępu konsolowego lub wirtualnego terminalu dodajemy za pomocą komendy access-class
R1(config)#line vty 0 4 R1(config-line)#access-class 1 in
Logika ACL

Tworząc dowolną listę, należy pamiętać, że szukając dopasowania router, przeszukuje listę do pierwszego pasującego dopasowania. Jeśli na początku listy będą zbyt ogólne wpisy, to istnieje szansa przepuszczenia ruchu, który przy prawidłowej konfiguracji powinien zostać zablokowany.
Extended ACL
Rozszerzone listy dostępu pozwalają na znacznie precyzyjniejsze określenie, jakiego rodzaju ruchu dotyczy konkretna lista poprzez określenie adresu ip źródła i celu, rodzaju protokołu oraz numeru portu.
Rozszerzone ACL tworzymy poprzez wydanie komendy access-list następnie podajemy identyfikator listy (słownie lub numerycznie). W kolejnym kroku definiujemy czy ruch ma zostać przepuszczony (permit) lub odrzucony (deny). Opcjonalnie możemy zdefiniować czy router ma fitrować pakiety tcp/udp lub innego protokołu np. igmp. W rozszerzonych listach oprócz źródłowego adresu ip należy również zdefiniować docelowy zakres adresów, których dotyczy lista dostępowa. Ostatnim krokiem jest podanie portu lub zakresu portów. Ponieważ część protokołów wymaga nawiązania połaczenia w dwóch kierunkach, należy zezwolnić na nawiązanie sesji na żądanie pochodzące z sieci wewnętrznej poprzez opcję established.
R1(config)#access-list 103 permit tcp 192.168.0.0 0.0.0.255 any eq ssh R1(config)#access-list 103 deny any any R1(config)#access-list 104 permit tcp any 192.168.0.0 0.0.0.255 eq 80 R1(config)#access-list 105 permit tcp any 192.168.0.0 0.0.0.255 established
Gotową ACL’kę należy podpiąć do interfejsu we właściwym kierunku (ruch wchodzący – in lub wychodzący out)
R1(config)#interface fastethernet 0/1 R1(config-if)#access-group 105 in
Modyfikacja ACL
Istniejące listy możemy edytować na dwa sposoby. Pierwszy sposób to usunięcie konkretnej listy dostępowej i wprowadzenie jej od nowa. Pamiętać należy jednak, że dana access-lista będzie nadal widnieć pod interfejsami, do których została zastosowana, co może skutkować całkowitym zablokowaniem ruchu, w końcu na końcu każdej access-listy mamy niejawne deny any.
R1(config)#no access-list 103
Drugi sposób to wykorzystanie numerów sekwencyjnych. Wprowadzając nowe pozycje do listy, są one automatycznie numerowane. Możliwe jest usunięcie, lub nadpisanie konkretnej reguły podając jej numer sekwencyjny.
R1#show access-lists Extended IP access list 103 10 permit tcp 192.168.0.0 0.0.0.255 any eq ssh 20 deny any any R1(config)#ip access-list extended 103 R1(config-ext-nacl)#no 10 R1#show access-lists Extended IP access list 103 20 deny any any
IPv6 Access control lists
ACL dla IP w wersji 6 są bardzo podobne do rozszerzonych list dostępowych IPv4, jednakże mają kilka różnić. Wszystkie listy są nazwane (nazwy muszą się różnić od tych dla ipv4), nie mamy już numerowanych list. Z użycia znikły również maski blankietowe (wildcard mask). Z różnic na końcu każdej ACL pojawiają się zawsze niejawnie:
- permit icmp any any nd-na
- permit icmp any any nd-ns
Ponieważ IPv6 porzuciło mechanizm ARP do wykrywania hostów w sieci lokalnej, na rzecz usługi warstwy 3 Neighbor discovery z automatu zezwalamy na stosowanie komunikatów Neighbor Discovery – Neighbor Advertisement (nd-na) oraz Neighbor Discovery – Neighbor Solicitation (nd-ns).
R1(config)#ipv6 access-list NO-ACCESS-LAN R1(config-ipv6-acl)# deny ipv6 any 2001:db8:cafe:30::/64 R1(config-ipv6-acl)# end
Gotową ACL’kę należy podpiąć do interfejsu we właściwym kierunku (ruch wchodzący – in lub wychodzący out)
R1(config)#interface gigabitethernet 0/1 R1(config-if)# ipv6 traffic-filter NO-ACCESS-LAN in
Listę dostępową dla dostępu konsolowego lub wirtualnego terminalu dodajemy tak samo jak w przypadku ACL dla IPv4
R1(config)#line vty 0 4 R1(config-line)#access-class NO-ACCESS-LAN in
Najlepsze praktyki podczas konfiguracji ACL
- Standard ACL zakładamy jak najbliżej celu, ponieważ ruch filtrujemy na podstawie źródła pakietu.
- Extended ACL zakładamy jak najbliżej źródła celu, ponieważ jesteśmy w stanie bardzo precyzyjnie określić który rodzaj ruchy jest przez niepożądany i poprzez takie filtrowanie możemy zaoszczędzić przepustowość w naszej sieci.
- Na końcu każdej ACL dodajemy permit lub deny any, pozwala to dokładniej śledzić statyski naszej listy, ponieważ standardowo każda ACL kończy się niejawną opcją deny any
0 komentarzy