Cisco Packet Tracer - listy ACL
Listy kontroli dostępu, czyli ACL (Access Control List) służą do filtrowania ruchu, czyli pełnią funkcję zapory sieciowej.
Standardowe listy ACL
Służą do zablokowania (deny) lub dopuszczenia (permit) ruchu z sieci
Filtrują ruch tylko w oparciu o adres źródła i maskę.
Przykład 1 standardowej listy ACL
Spójrzmy, ping z hosta 192.168.0.3 przechodzi bezproblemowo do hosta 10.0.0.3
Teraz zablokujemy cały ruch z adresu 192.168.0.3. Listę ACL ustawimy na ruterze Router0, na interfejsie FastEthernet0/0
Router0>ena Router0#conf term Router0(config)#access-list 1 deny host 192.168.0.3 Router0(config)#access-list 1 permit any Router0(config)#interface FastEthernet0/0 Router0(config-if)#ip access-group 1 out
Jak widać teraz ping nie przechodzi.
Przeanalizujmy
KROK 1. Utworzenie listy ACL
Router0(config)#access-list 1 deny host 192.168.0.3 Router0(config)#access-list 1 permit any
access-list 1
polecenie tworzące listę ACL oraz jej nr (standardowe listy ACL mają numery z zakresu 1-99) deny host 192.168.0.3
blokuje host 192.168.0.3. Można tez by użyć Router0(config)#access-list 1 deny 192.168.0.3 0.0.0.0
co dałoby ten sam efekt.
Router0(config)#access-list 1 permit any
- puszcza cały pozostały ruch. Jest to konieczne. gdyż zawsze domyślnie, listy ACL kończą się deny any
, czyli właściwie cały ruch byłby zablokowany. Ten sam efekt można uzyskać używając access-list 1 permit 0.0.0.0 255.255.255.255
KROK 2. Przypisanie listy ACL do interfejsu
Router0(config)#interface FastEthernet0/0 Router0(config-if)#ip access-group 1 out
Router0(config)#interface FastEthernet0/0
- wejście do konfiguracji interfejsu
Router0(config-if)#ip access-group 1 out
- polecenie grupuje listę ACL do interfejsu, out
oznacza ruch wychodzący
Przykład 2 standardowej listy ACL
Ten przykład jest rozwinięciem poprzedniego. Host 192.168.0.3 został zablokowany, teraz chcemy zablokować host 192.168.0.2.
Jak widać na razie ten host odpowiada, czyli nie jest zablokowany.
Dopisujemy dodatkowe wiersze na routerze Router0
Router0>ena Router0#conf t Enter configuration commands, one per line. End with CNTL/Z. Router0(config)#access-list 1 deny host 192.168.0.2 Router0(config)#access-list 1 permit any Router0(config)#interface fastethernet0/0 Router0(config-if)#ip access-group 1 out
Sprawdzamy czy działa. Jak widać nie działa. Host jest nadal aktywny.
Dlaczego nie zadziałało. Po prostu ruter przetwarza listy ACL linia po linii, jak ma napisane, ze ma puścić wszystkie połączenia to to robi, nie ważne ,że dalej coś blokujemy. Poniżej jest wynik polecenia show running-config
Możemy też użyć polecenia show access-lists
Router0#show access-lists Standard IP access list 1 deny host 192.168.0.3 (2 match(es)) permit any (16 match(es)) deny host 192.168.0.2
lub polecenia show access-list 1
Router0#show access-list 1 Standard IP access list 1 deny host 192.168.0.3 (2 match(es)) permit any (16 match(es)) deny host 192.168.0.2
Co byśmy nie wpisywali gołym okiem widać, że kolejność nie jest prawidłowa. Musimy usunąć listę ACL i wpisać ją od nowa.
Usuwanie listy ACL
Tutaj obowiązuje odwrotna kolejność, porównaniu z tworzeniem.
KROK 1
Wchodzimy w konfigurację interfejsu i usuwamy grupowanie listy do interfejsu poprzez polecenie no ip access-group
Router0(config)#interface fastethernet0/0 Router0(config-if)#no ip access-group 1 out
KROK 2
Usuwamy listę ACL poleceniem no access-list
Router0(config)#no access-list 1
Jak zrobisz tylko krok 2 to co prawda nie będziesz widział listy ACL, ale w konfiguracji interfejsu wpisy zostaną.
Przykład 3 standardowej listy ACL
Na ruterze Router0 (interfejs FastEthernet0/0) zablokujemy całą sieć 192.168.0.0.
Router>ena Router#conf term Router0(config)#access-list 1 deny 192.168.0.0 0.0.0.255 Router0(config)#access-list 1 permit any Router0(config)#interface fastethernet0/0 Router0(config-if)#ip access-group 1 out
Jak widać pingi nie przechodzą, choć wyświetlają się rożne komunikaty.
Należy wyjaśnić jeszcze skąd wzięło się Router0(config)#access-list 1 deny 192.168.0.0 0.0.0.255
, a właściwie co to za dziwna maska 0.0.0.255
.
To tzw. wildcard mask, czyli maska dopasowania lub inaczej blankietowa. Nie wchodząc w szczegóły jest to maska zapisywana odwrotnie, zamieniamy binarnie 0 i 1.
Rozszerzone listy ACL
Filtrują ruch na podstawie adresu źródła i przeznaczenia. Wykorzystują protokoły oraz nr portów. Używają nr list w zakresie 100-199.
Format rozszerzonej ACL
access-list <100-199> <deny | permit> <protokół> <źródłowy adres ip> <maska wildcard> <docelowy adres ip> <maska wildcard> <operator> <port lub usługa> access-list <100-199> <deny | permit> <protokół> host <źródłowy adres ip> host <docelowy adres ip> <operator> <port lub usługa> access-list <100-199> <deny | permit> <protokół> <źródłowy adres ip> <maska wildcard> <docelowy adres ip> <maska wildcard>
Protokoły
ahp Authentication Header Protocol eigrp Cisco's EIGRP routing protocol esp Encapsulation Security Payload gre Cisco's GRE tunneling icmp Internet Control Message Protocol ip Any Internet Protocol ospf OSPF routing protocol tcp Transmission Control Protocol udp User Datagram Protocol
Operatory
lt mniejsze niż gt większe niż neq nierówne eq równe range zakres portów
Porty i nazwy usług używane przy konfiguracji (słowa kluczowe)
FTP Data (TCP port 20) ftp-data FTP Control (TCP port 21) ftp Telnet (TCP port 23) telnet SMTP (TCP port 25) smtp HTTP (TCP port 80) www DNS (UDP port 53) dns TFTP (UDP port 69) tftp SNMP (UDP port 161) snmp IP RIP (UDP port 520) rip
Przykład 1 rozszerzonej listy ACL
Zablokujemy możliwość pingowania z hosta PC3 pozostałych sieci. Zrobimy to na najbliższym ruterze, aby nie był generowany zbędny ruch sieciowy.
Router1>ena Router1#conf t Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#access-list 100 deny icmp host 192.168.0.3 any Router1(config)#access-list 100 permit icmp any any Router1(config)#access-list 100 permit ip any any Router1(config)#access-list 100 permit tcp any any Router1(config)#int fa0/0 Router1(config-if)#ip access-group 100 in
Jak widać wszystko działa jak należy.
Przykład 2 rozszerzonej listy ACL
Zablokujemy dla PC3 możliwość korzystania z usługi WWW na serwerze. Zrobimy to na najbliższym ruterze, aby nie był generowany zbędny ruch sieciowy.
Jak widać host PC3 korzysta z usługi WWW na serwerze.
Router1>ena Router1#conf t Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#access-list 100 deny tcp host 192.168.0.3 host 10.0.0.4 eq 80 Router1(config)#access-list 100 permit tcp any any Router1(config)#access-list 100 permit ip any any Router1(config)#int fa0/0 Router1(config-if)#ip access-group 100 in
Jak widać osiągnęliśmy zamierzony efekt.
Jak widać host PC3 może kontaktować się z serwerem na innych portach.
Sprawdź jak by wyglądało kontaktowanie się poszczególnych hostów i korzystanie z usług, gdybyś nie wpisać do listy ACL tych 2 wierszy.
Router1(config)#access-list 100 permit tcp any any Router1(config)#access-list 100 permit ip any any
Nazywanie list ACL
Lista ACL może posiadać nazwę. Ma to tę zaletę, że łatwiej ją zapamiętać niż nr listy.
router>enable router#configure terminal router(config)#ip access-list <standard | extended> <nazwa> router(config-std-nacl)#<permit | deny> <źródłowy host lub sieć> <wildcard> <docelowy host lub sieć> <wildcard> router(config-ext-nacl)#<permit | deny> <protokół> <źródłowy host lub sieć> <wildcard> <docelowy host lub sieć> <wildcard> <operator> <port>
Przykład 1 - nazwana lista ACL
Posłużymy się przykładem 1 standardowej listy ACL omawianym wyżej
<Router0>ena Router0#conf t Enter configuration commands, one per line. End with CNTL/Z. Router0(config)#ip access-list standard blokadaPC3 Router0(config-std-nacl)#deny host 192.168.0.3 Router0(config-std-nacl)#permit any Router0(config-std-nacl)#int fa0/0 Router0(config-if)#ip access-group blokadaPC3 out