Cisco Network Security - Listy kontroli dostępu (ACL)

1. Routery podejmują decyzje o trasowaniu na podstawie informacji zawartych w nagłówku pakietu. Ruch wchodzący do interfejsu routera jest kierowany wyłącznie na podstawie informacji zawartych w tabeli trasowania. Router porównuje adres IP docelowy z trasami w tabeli trasowania, aby znaleźć najlepsze dopasowanie, a następnie przekazuje pakiet na podstawie najlepiej dopasowanej trasy. Ten sam proces można wykorzystać do filtrowania ruchu za pomocą listy kontroli dostępu (ACL).
ACL to seria poleceń IOS, które są używane do filtrowania pakietów na podstawie informacji zawartych w nagłówku pakietu. Domyślnie router nie ma skonfigurowanych żadnych ACL. Jednak gdy ACL jest stosowany do interfejsu, router wykonuje dodatkowe zadanie oceny wszystkich pakietów sieciowych, gdy przechodzą przez interfejs, aby określić, czy pakiet może być przekazany dalej.

ACL używa sekwencyjnej listy poleceń zezwalających lub odrzucających, znanych jako wpisy kontroli dostępu (ACE).

2. Gdy ruch sieciowy przechodzi przez interfejs skonfigurowany z ACL, router porównuje informacje zawarte w pakiecie z każdym ACE, w kolejności sekwencyjnej, aby określić, czy pakiet pasuje do jednego z ACE. Ten proces nazywa się filtrowaniem pakietów.

3. Zadania wymagające użycia ACL:
  • Ograniczanie ruchu sieciowego w celu zwiększenia wydajności sieci
  • Zapewnienie kontroli przepływu ruchu
  • Zapewnienie podstawowego poziomu bezpieczeństwa dostępu do sieci
  • Filtrowanie ruchu na podstawie typu ruchu
  • Przesiewanie hostów w celu zezwolenia lub odmowy dostępu do usług sieciowych
  • Zapewnienie priorytetu dla niektórych klas ruchu sieciowego
4. Filtrowanie pakietów kontroluje dostęp do sieci poprzez analizę przychodzących i/lub wychodzących pakietów i przekazywanie ich lub odrzucanie na podstawie określonych kryteriów. Filtrowanie pakietów może wystąpić na warstwie 3 lub 4.

Routery Cisco obsługują dwa typy ACL:
  • Standardowe ACL - ACL filtrują tylko na warstwie 3, używając tylko źródłowego adresu IPv4.
  • Rozszerzone ACL - ACL filtrują na warstwie 3, używając źródłowego i/lub docelowego adresu IPv4.Mogą również filtrować na warstwie 4, używając portów TCP, UDP i opcjonalnych informacji o typie protokołu dla lepszej kontroli.
5. Numerowane ACL

ACL o numerach od 1 do 99, lub 1300 do 1999 są standardowymi ACL, podczas gdy ACL o numerach od 100 do 199, lub 2000 do 2699 są rozszerzonymi ACL.

6. Nazwane ACL

Nazwane ACL to preferowana metoda konfiguracji ACL. Konkretnie, standardowe i rozszerzone ACL mogą być nazwane, aby dostarczyć informacje o celu ACL. Na przykład, nadanie rozszerzonemu ACL nazwy FTP-FILTER jest znacznie lepsze niż posiadanie numerowanego ACL 100.

Polecenie konfiguracji globalnej ip access-list jest używane do tworzenia nazwanego ACL.

Najlepiej, aby nazwy były wpisywane wielkimi literami. Nie mogą one zawierać ani spacji, ani interpunkcji, mogą zawierać znaki alfanumeryczne.

7. Listy kontroli dostępu (ACL) w routerach Cisco definiują zestaw reguł do kontroli pakietów przechodzących przez interfejsy routera. Istnieją dwa typy ACL: standardowe (filtrowanie na podstawie źródłowego adresu IPv4) i rozszerzone (filtrowanie na podstawie źródłowego i/lub docelowego adresu IPv4 oraz portów TCP/UDP). ACL mogą być numerowane lub nazwane, przy czym nazwane ACL są preferowane dla lepszej identyfikacji celu ACL. ACL działają na zasadzie sekwencyjnej listy poleceń zezwalających lub odrzucających, znanych jako wpisy kontroli dostępu (ACE). Gdy pakiet przechodzi przez interfejs z ACL, router porównuje informacje w pakiecie z każdym ACE, aby zdecydować, czy pakiet pasuje do jednego z ACE. Na końcu każdego ACL jest domyślne odrzucenie, które blokuje cały ruch. 

8. Element sterujący dostępem IPv4 (ACE) używa 32-bitowej maski wieloznacznej do określenia, które bity adresu należy sprawdzić pod kątem dopasowania. Maski wieloznaczne są również używane przez protokół routingu Open Shortest Path First (OSPF).

Maska wieloznaczna jest podobna do maski podsieci, ponieważ używa procesu ANDing do identyfikacji, które bity w adresie IPv4 dopasować. Jednak różnią się one sposobem dopasowywania binarnych 1 i 0. W przeciwieństwie do maski podsieci, w której binarna 1 jest równa dopasowaniu, a binarna 0 nie jest dopasowaniem, w masce wieloznacznej jest odwrotnie.
9. Słowa kluczowe to:
  • host - To słowo kluczowe zastępuje maskę 0.0.0.0. Ta maska mówi, że wszystkie bity adresu IPv4 muszą pasować, aby filtrować tylko jeden adres hosta. 
  • any - To słowo kluczowe zastępuje maskę 255.255.255.255. Ta maska mówi, że należy zignorować cały adres IPv4 lub zaakceptować dowolne adresy.
R1(config)# access-list 10 permit 192.168.10.10  0.0.0.0
R1(config)# access-list 11 permit  0.0.0.0 255.255.255.255
R1(config)#

R1(config)# access-list 10 permit  host  192.168.10.10
R1(config)# access-list 11 permit  any
R1(config)#

10. Proceduralne kroki konfiguracji rozszerzonych ACL są takie same jak dla standardowych ACL. Najpierw konfiguruje się rozszerzone ACL, a następnie aktywuje je na interfejsie. Jednak składnia poleceń i parametry są bardziej złożone, aby obsługiwać dodatkowe funkcje dostarczane przez rozszerzone ACL.

Aby utworzyć numerowane rozszerzone ACL, użyj następującego polecenia konfiguracji globalnej:

Router(config-if)# ip access-group 0 0

Należy użyć globalnego polecenia konfiguracji no access-list <numer>, aby usunąć rozszerzone ACL.

Chociaż dla rozszerzonych ACL istnieje wiele słów kluczowych i parametrów, nie jest konieczne wszystkie ich użycie podczas konfiguracji rozszerzonego ACL.
  • access-list-number - numer ACL (zakres od 100 do 199 oraz 2000 do 2699)
  • deny (odmowa dostępu jeżeli warunek jest spełniony)
  • permit (przyzwolenie na dostęp jeżeli warunek jest spełniony)
  • remark text ("dodatkowy tekst/opis)
  • protocol (nazwa i numer protokołu sieciowego)
  • source (identyfikacja sieci źródłowej, adres hosta docelowego)
  • source-wildcard (32-bitowa maska wieloznaczna stosowana do miejsca źródłowego) 
  • destination (identyfikacja sieci docelowej)
  • destination-wildcard (32-bitowa maska wieloznaczna stosowana do miejsca docelowego) 
  • port (numer portu TCP lub UDP)
  • established (funkcja zapory dla protokołu TCP)
  • log (generowanie i wysyłanie wiadomości informacyjnej za każdym razem, gdy dopasowano ACE)
10. TCP może również wykonywać podstawowe usługi zapory sieciowej (firewall) z użyciem słowa kluczowego established. Słowo kluczowe umożliwia ruch wewnętrzny na wyjście z prywatnej sieci wewnętrznej i zezwala na powrót ruchu odpowiedzi do wewnętrznej sieci prywatnej.

Jednak ruch TCP generowany przez hosta zewnętrznego i próbujący komunikować się z hostem wewnętrznym jest odrzucany.
Słowo kluczowe established może być używane do zezwalania tylko na powrót ruchu HTTP z żądanych stron internetowych, podczas gdy cały inny ruch jest odrzucany.

11. Po skonfigurowaniu ACL może być konieczne jego modyfikowanie. ACL z wieloma ACE mogą być skomplikowane do skonfigurowania. Są dwie możliwości
  • przez edytor tekstu (ACL z wieloma ACE powinny być tworzone w edytorze tekstu. Pozwala to zaplanować wymagane ACE, utworzyć ACL, a następnie wkleić go do interfejsu routera. Ułatwia to również zadania edycji i naprawy ACL.)
R1# show run | section access-list 
access-list 1 deny 19.168.10.10
access-list 1 permit 192.168.10.0 0.0.0.255
R1#

R1(config)# no access-list 1
R1(config)#
R1(config)# access-list 1 deny 192.168.10.10
R1(config)# access-list 1 permit 192.168.10.0 0.0.0.255
R1(config)#
  • metoda numerów sekwencyjnych (ACE ACL może być również usunięte lub dodane za pomocą numerów sekwencyjnych ACL. Numery sekwencyjne są automatycznie przypisywane, gdy wprowadzane jest ACE. Te numery są wymienione w poleceniu show access-lists. Polecenie show running-config nie wyświetla numerów sekwencyjnych.)
R1# show access-lists 
Standard IP access list 1 
    10 deny 19.168.10.10 
    20 permit 192.168.10.0, wildcard bits 0.0.0.255
R1#

R1# conf t
R1(config)# ip access-list standard 1
R1(config-std-nacl)# no 10
R1(config-std-nacl)# 10 deny host 192.168.10.10
R1(config-std-nacl)# end
R1# show access-lists
Standard IP access list 1
    10 deny   192.168.10.10
    20 permit 192.168.10.0, wildcard bits 0.0.0.255
R1#

12. Każde ACL powinno być umieszczone tam, gdzie jest najbardziej efektywne. Rozszerzone ACL powinny być umieszczone jak najbliżej źródła ruchu do filtrowania. W ten sposób niepożądany ruch jest odrzucany blisko sieci źródłowej, bez przechodzenia przez infrastrukturę sieci.

Standardowe ACL powinny być umieszczone jak najbliżej miejsca docelowego. Jeśli standardowe ACL zostało umieszczone przy źródle ruchu, “zezwolenie” lub “odrzucenie” nastąpi na podstawie podanego adresu źródłowego, niezależnie od miejsca docelowego ruchu.
  • Zakres kontroli organizacyjnej - Umieszczenie ACL może zależeć od tego, czy organizacja ma kontrolę zarówno nad siecią źródłową, jak i docelową.
  • Przepustowość zaangażowanych sieci - Może być pożądane filtrowanie niechcianego ruchu u źródła, aby zapobiec transmisji ruchu pochłaniającego przepustowość.
  • Łatwość konfiguracji - Może być łatwiej zaimplementować ACL w miejscu docelowym, ale ruch będzie niepotrzebnie zużywał przepustowość. Rozszerzone ACL mogłyby być używane na każdym routerze, skąd pochodził ruch. To pozwoliłoby zaoszczędzić przepustowość, filtrowanie ruchu u źródła, ale wymagałoby tworzenia rozszerzonych ACL na wielu routerach.
13. Podszywanie się pod adres IP zastępuje normalny proces tworzenia pakietów przez wstawienie niestandardowego nagłówka IP z innym adresem IP źródłowym. 

Istnieje wiele dobrze znanych klas adresów IP, które nigdy nie powinny być widoczne jako adresy IP źródłowe dla ruchu wchodzącego do sieci organizacji. Na przykład interfejs S0/0/0 jest podłączony do internetu nie powinien nigdy akceptować pakietów przychodzących z następujących adresów:
  • Adresy z samymi zerami
  • Adresy rozgłoszeniowe 
  • Adresy lokalnego hosta (127.0.0.0/8) 
  • Adresy Automatic Private IP Addressing (APIPA) (169.254.0.0/16) 
  • Zarezerwowane prywatne adresy (RFC 1918) 
  • Zakres adresów IP multicast (224.0.0.0/4) 

Sieć 192.168.1.0/24 jest podłączona do interfejsu R1 G0/0. Ten interfejs powinien zezwalać tylko na pakiety przychodzące z adresem źródłowym z tej sieci. ACL dla G0/0 pokazane na rysunku zezwoli tylko na pakiety przychodzące z sieci 192.168.1.0/24. Wszystkie inne zostaną odrzucone.

Skuteczną strategią łagodzenia ataków jest wyraźne zezwalanie tylko na pewne rodzaje ruchu przez zaporę ogniową. Na przykład, Domain Name System (DNS), Simple Mail Transfer Protocol (SMTP) i File Transfer Protocol (FTP) to usługi, które często muszą być dozwolone przez zaporę ogniową. Jest również powszechne konfigurowanie zapory ogniowej tak, aby zezwalała administratorom na zdalny dostęp przez zaporę ogniową. Secure Shell (SSH), syslog i Simple Network Management Protocol (SNMP) to przykłady usług, które router może potrzebować. Chociaż wiele z tych usług jest użytecznych, powinny być kontrolowane i monitorowane. Wykorzystanie tych usług prowadzi do luk bezpieczeństwa.

14. Kilka wiadomości ICMP jest zalecanych dla prawidłowego działania sieci i powinno być dozwolone w sieci wewnętrznej:
  • Odpowiedź echo - Pozwala użytkownikom na pingowanie hostów zewnętrznych. 
  • Source quench - Prosi nadawcę o zmniejszenie szybkości przesyłania wiadomości. 
  • Unreachable - Generowane dla pakietów, które są administracyjnie odrzucane przez ACL. 
Kilka wiadomości ICMP jest wymaganych dla prawidłowego działania sieci i powinno być dozwolone do wyjścia z sieci:
  • Echo - Pozwala użytkownikom na pingowanie hostów zewnętrznych. 
  • Problem z parametrem - Informuje hosta o problemach z nagłówkiem pakietu. 
  • Pakiet za duży - Umożliwia odkrywanie maksymalnej jednostki transmisji (MTU) pakietu. 
  • Source quench - Zmniejsza ruch, gdy jest to konieczne. Jako reguła, warto blokować wszystkie inne typy wiadomości ICMP na wyjściu.
15. Protokoły zarządzania, takie jak SNMP, są przydatne do zdalnego monitorowania i zarządzania urządzeniami sieciowymi. Jednak mogą one być nadal wykorzystywane. Jeśli SNMP jest konieczne, wykorzystanie podatności SNMP można zminimalizować, stosując ACL interfejsu do filtrowania pakietów SNMP pochodzących z nieautoryzowanych systemów. Wykorzystanie może być nadal możliwe, jeśli pakiet SNMP pochodzi z adresu, który został sfałszowany i jest dozwolony przez ACL.

Te środki bezpieczeństwa są pomocne, ale najskuteczniejszym środkiem zapobiegania wykorzystaniu jest wyłączenie serwera SNMP na urządzeniach IOS, na których nie jest on wymagany. Należy użyć polecenia no snmp-server, aby wyłączyć usługi SNMP na urządzeniach Cisco IOS.

Router(config)# no snmp-server

16. Wiele sieci zaczęło przechodzić na środowisko IPv6 z powodu słabości IPv4. Jednak ataki IPv6 stają się coraz bardziej powszechne w miarę migracji. IPv4 będzie współistnieć z IPv6, a następnie stopniowo zostanie zastąpione przez IPv6, co tworzy potencjalne luki bezpieczeństwa. Aktorzy zagrożeń mogą wykorzystywać IPv4 do atakowania IPv6 w środowiskach z podwójnym stosem. Możliwe są ataki typu stealth, wykorzystujące hosty z podwójnym stosem, fałszywe wiadomości NDP i techniki tunelowania. Najskuteczniejszym środkiem zapobiegania wykorzystaniu jest wyłączenie serwera SNMP na urządzeniach IOS, na których nie jest on wymagany.

17. Składnia:
ipv6 access-class ipv6-access-list-name { in | out }

Gdzie:

  • ipv6-access-list-name to nazwa listy dostępu IPv6. Nazwy nie mogą zawierać spacji ani cudzysłowów ani zaczynać się od cyfry.
  • in służy do filtrowania przychodzących połączeń IPv6.
  • out służy do filtrowania wychodzących połączeń IPv6.

Poniżej znajduje się przykładowa konfiguracja ACL dla IPv6:

Device# configure terminal
Device (config)# ipv6 access-list INBOUND
Device (config-ipv6-acl)# deny tcp any any eq www log-input
Device (config-ipv6-acl)# permit tcp 2001:DB8::/32 any
Device (config-ipv6-acl)# permit udp 2001:DB8::/32 any
Device (config-ipv6-acl)# end

W powyższym przykładzie, utworzono listę dostępu o nazwie INBOUND, która blokuje (deny) ruch TCP z dowolnego adresu (any) do dowolnego adresu (any) na porcie www i loguje próby połączenia (log-input). Następnie zezwala (permit) na ruch TCP i UDP z adresu 2001:DB8::/32 do dowolnego adresu (any).