Access Control Lists

Wszystko co musisz wiedzieć o listach dostępu

Access Control Lists

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

Standard ACL

Access Control Lists dzielą się zasadniczno 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.

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

Gotową ACL’kę należy podpiąć do interfejsu we właściwym kierunku (ruch wchodzący – in lub wychodzący out)

ACL’kę dla dostępu konsolowego lub wirtualnego terminalu dodajemy za pomocą komendy access-class

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 po przez opcję established.

Gotową ACL’kę należy podpiąć do interfejsu we właściwym kierunku (ruch wchodzący – in lub wychodzący out)

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.

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 konkrentej reguły podając jej numer sekwencyjny.

IPv6 Access control lists

ACL dla IP w wersji 6 są bardzo podobno 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 lokajnej 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).

Gotową ACL’kę należy podpiąć do interfejsu we właściwym kierunku (ruch wchodzący – in lub wychodzący out)

Listę dostępową dla dostępu konsolowego lub wirtualnego terminalu dodajemy tak samo jak w przypadku ACL dla IPv4

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
O mnie

O mnie

Cześć! Nazywam się Rafał i jestem sieciowcem pasjonatem. Na blogu chciałbym podzielić się z Tobą swoimi przemyśleniami na temat sieci komputerowych.

Więcej o mnie…