ACL – listy kontroli dostępu

0

Listy kontroli dostępu są mechanizmem filtrowania pakietów przetwarzanych przez router. Ich zastosowanie może być bardzo różne, np. są wykorzystywane do selekcji ruchu podlegającego ochronie IPSec.

Z tematem list dostępu jest związane pojęcie masek (wildcard). Maski list dostępu są podobne do masek podsieci w notacji adresów IP. Różnią się tym, że mają odwrotny zapis – bity, które są ważne, mają wartość 0, a bity nieistotne mają wartość 1.

Przykład Decymalnie 128 64 32 16 8 4 2 1
Sprawdzenie wszystkich bitów 0 0 0 0 0 0 0 0 0
Sprawdzenie czterech pierwszych
bitów w oktecie
15 0 0 0 0 1 1 1 1
Sprawdzenie ostatnich dwóch
bitów w oktecie
252 1 1 1 1 1 1 0 0
Nie są sprawdzane żadne bity w oktecie 1 1 1 1 1 1 1 1 1

Wildcard zawsze definiują bloki adresów o wielkości 1, 2, 4, 8, 16, itd. Bloki adresów muszą zaczynać się od 2^n.

Przykłady
Adresy pasujące do zakresu od 1.1.1.1 do 1.1.1.255 będą definiowane przez maskę jako 1.1.1.0 0.0.0.255.

Z kolei blok adresów 172.16.1.8 do 172.16.1.15 będzie definiowany jako 172.16.1.8 0.0.0.7.

Oznacza to, że pierwszy adres będzie miał wartość 172.16.1.8 (ostatni oktet binarnie to 0001000). Maska 0.0.0.7 oznacza, że ostatnie trzy bity nie będą miały znaczenia. Więc pasować będą aż do adresu 172.16.1.15
(ostatni oktet binarnie to 0001111). Trzeba zaznaczyć, że blok adresów nie może zaczynać się, np. od adresu 172.16.1.10 i kończyć na adresie 172.16.1.17. Zawsze początkiem bloku musi być liczba, której bity odpowiadające masce są równe 0.

Konfiguracja list dostępu
Aby skonfigurować listy dostępu, należy wykonać dwie
czynności:

  • zdefiniować listę,
  • przypisać ją do interfejsu lub linii terminalowej.

Aby skonfigurować listy, trzeba:

  • stworzyć listę w głównym trybie konfiguracji przez wyspecyfikowanie numeru listy i kryteriów filtrowania. Listy standardowe są definiowane przez podanie jako kryterium filtrowania adresu źródłowego IP i maski. Rozszerzone listy dostępu mogą wykorzystywać jako kryterium dostępu adres źródłowy i docelowy, rodzaj protokołu transportowego IP (np. TCP, UDP, ICMP), port protokołu TCP lub UDP.
  • przypisanie listy dostępu trzeba wykonać w trybie konfiguracji interfejsu lub linii terminalowej. Zdefiniowaną wcześniej listę dostępu można przypisać do wielu interfejsów i linii terminalowych. Listy mogą być przypisane dla ruchu wchodzącego, jak i wychodzącego.

Numer listy Opis
1-99 Standardowa IP
100-199 Rozszerzona IP
200-299 Lista mostkowa (typ protokołu)
600-699 AppleTalk
700-799 Mostkowa (adres MAC)
800-899 Standardowa IPX
900-999 Rozszerzona IPX
1000-1099 IPX SAP
1100-1199 Rozszerzona mostkowa (MAC i kod dostawcy)
1200-1299 Zbiorcza IPX
1300-1999 Standardowa IP z rozszerzonym zakresem numeracji
2000-2699 Rozszerzona IP z rozszerzonym zakresem numeracji

Zasady tworzenia list dostępu
O czym należy pamiętać tworząc listę dostępu.

Przetwarzanie z góry do dołu. Jeśli lista składa się z wielu linii, analizowane są one w kolejności od góry do dołu. Po pierwszym dopasowaniu lista nie jest dalej przetwarzana. U góry listy należy umieścić kryteria bardziej szczegółowe, a u dołu bardziej ogólne. Na przykład, jeśli trzeba umieścić wpisy dotyczące sieci i hosta należącego do tej sieci, to wpis dotyczący hosta powinien znaleźć się wyżej. Gdyby znajdował się niżej, nigdy nie zostałby osiągnięty, bo bardziej ogólne kryterium dotyczące sieci kończyłoby analizę listy.

Częstotliwość "trafień" w regułę. Jeśli któraś z reguł występuje częściej niż inne, powinna znaleźć się jak najwyżej na liście. W ten sposób można zaoszczędzić procesorowi routera zbędnego
przetwarzania listy.

Domyślna reguła "deny any" na końcu listy. Jeśli nie wyspecyfikuje się wprost reguły "permit any", zawsze dodawana jest domyślnie reguła "deny any" na końcu listy. W związku z tym tylko ruch, na który zezwolono w liście dostępu będzie przepuszczany.

Nowe linie zawsze dodawane na końcu. Każda nowa reguła dodawana do listy dostępu jest dodawana na końcu. Nie można dodać reguły w dowolne miejsce listy.

Listy niezdefiniowane. Jeśli przypiszemy listę poleceniem ip access-group do interfejsu, a lista jeszcze nie istnieje – dozwolony będzie każdy ruch.

Konfiguracja standardowych list dostępu
Standardowa lista dostępu jest ciągiem reguł zabraniających lub zezwalających na ruch pakietów na podstawie źródłowych adresów IP. Standardowe listy dostępu przetwarzają pakiety w różny sposób dla ruchu przychodzącego i wychodzącego.

Przetwarzanie ruchu przychodzącego
Jeśli lista jest przypisana do interfejsu w kierunku przychodzącym, przetwarzane są kolejne linie. Jeśli adres źródłowy pakietu pasuje do reguły, sprawdzana jest akcja. W przypadku akcji „deny” pakiet jest porzucany, a do nadawcy jest wysyłany komunikat ICMP host unrechable. Jeśli akcją jest „permit”, pakiet jest przetwarzany dalej przez router. W każdym przypadku przeglądanie listy jest kończone po pierwszej akcji „deny” lub „permit”. Jeśli żadna reguła
nie pasowała do pakietu, jest on przetwarzany przez domyślną regułę „deny any”.

Przetwarzanie ruchu wychodzącego
W tym przypadku przetwarzanie listy jest ostatnią czynnością przed opuszczeniem interfejsu routera. Pakiety przychodzące są najpierw przekazywane do odpowiedniego interfejsu wyjściowego i tam sprawdzane pod kątem reguł wychodzących, jeśli do interfejsu jest przypisana taka reguła.

Standardowe listy dostępu tworzy się za pomocą polecenia access-list. Każda reguła w liście wymaga jednego polecenia access-list.

access-list numer listy {deny|permit} {adres źródłowy [maska] | [log]}

Aby przypisać listę do interfejsu, należy zastosować
polecenie ip access-group. Każdy interfejs może mieć przypisane dwie listy dostępu, dla ruchu wchodzącego i wychodzącego. Jeśli przypisane są obie listy, muszą być tego samego typu. Składnia polecenia wygląda następująco.

ip access-group numer listy {in | out}

Usuwanie całej listy polega na wydaniu polecenia no
accel-list numer listy
. Należy je wprowadzić w trybie konfiguracji. Usuwanie przypisania listy do interfejsu wykonuje się za pomocą polecenia no access-group numer listy wydanego w trybie konfiguracji interfejsu.

Podobnie, aby przypisać listę do linii terminalowej, należy zastosować polecenie ip access-class w trybie konfiguracji linii. Parametry polecenia są identyczne, jak w przypadku polecenia ip access-group. Oczywiście, jeśli celem jest ograniczenie dostępu do zdalnego łączenia się z routerem, sens ma użycie tylko parametru in.

Maski domyślne
Aby skrócić wpisywanie długich, złożonych list dostępu, w niektórych przypadkach można skorzystać z domyślnych masek. Jeśli nie zostanie wpisana żadna maska, zawsze przyjmowana jest domyślnie maska 0.0.0.0.

Zapis

Interpretacja

access-list 1 permit 10.1.1.3 access-list 1 permit 10.1.1.3 0.0.0.0
access-list 1 permit 172.16.21.3 access-list 1 permit 172.16.21.3 0.0.0.0
access-list 1 permit 192.168.244.196 access-list 1 permit 192.168.244.196 0.0.0.0
access-list 1 permit host 192.168.244.196 access-list 1 permit 192.168.244.196 0.0.0.0

Konfiguracja rozszerzonych list dostępu
Rozszerzone listy dostępu pozwalają na bardziej szczegółowe definiowanie reguł filtrowanie niż standardowe listy. Pozwalają na uwzględnienie, jako kryterium filtrowanie, numerów portów docelowych warstwy transportowej, rodzajów protokołów oraz adresów IP nadawcy i odbiorcy. Podobnie, jak listy standardowe, są przeglądane od góry do dołu, aż do pierwszego trafienia. Po takim pierwszym dopasowaniu następujae akcja permit lub deny odpowiednio zezwalająca na przejście lub blokująca pakiet.

Przetwarzanie list rozszerzonych
Router sprawdza każdy pakiet pod kątem adresów IP, portów i opcji protokołu. Jeśli po dopasowaniu akcją jest „deny”, pakiet jest odrzucany, a do nadawcy wysyłany jest komunikat ICMP o nieosiągalności hosta.

Składnia rozszerzonych list dostępu dla IP
Rozszerzone listy dostępu tworzy się za pomocą polecenia access-list. W przypadku list rozszerzonych składnia polecenia jest następująca:

access-list numer listy [dynamic nazwa-dyn [timeout minuty] {deny|permit} protokół źródło wildcard-źródło odbiorca wildcard-odbiorca [precendence proirytet] [tos tos] [log]

Parametr opis
numer listy Identyfikuje listę. Numer z zakresu 100-199
dynamic nazwa-dyn (opcjonalnie)Identyfikuję listę jako listę dynamiczną.
Znajduje zastosowanie w zabezpieczeniach lock and key
timeout minuty (opcjonalnie) Wyznacza limit ważności list dynamicznych w minutach
deny|permit Specyfikuje akcję
protokół Oznacza numer lub nazwę protokołu transportowego IP. Może to być jedna z poniższych nazw:

    • ah
    • eigrp
    • esp
    • gre
    • icmp
    • igmp
    • ip
    • ipinip
    • nos
    • ospf
    • pcp
    • tcp
    • udp

    Można również podać numer protokołu z zakresu 0-255.

źródło i odbiorca Adres IP w notacji aaa.bbb.ccc.ddd. Można również użyć słowa kluczowego any dla określenia dowolnego adresu.
precedence priorytet (opcjonalnie) Dopasowuje pakiety zgodnie z polem
precedence w nagłówku IP. Dopuszczalne wartości (numeryczne lub jako nazwa) to:
  • critical (5)
  • flash (3)
  • flash-overwrite (4)
  • immediate (2)
  • internet (6)
  • network (7)
  • priority (1)
  • routine (0)

tos tos (opcjonalnie)Dopasowuje pakiety zgodnie z polem Type of Service nagłówka IP. Dopuszczalne wartości to:

  • max-reliability (2)
  • max-throughput (4)
  • min-delay (8)
  • min-monetary-cost (1)
  • normal (0)
log (Opcjonalnie) powoduje wysłanie informacji o "trafieniu" w regułę mechanizmu syslog

Składnia rozszerzonych list dostępu dla TCP
Jeśli potrzebne jest filtrowanie ruchu TCP, użyj polecenia access-list tcp. Jego składnia to:

access-list numer-listy [dynamic nazwa-dyn [timeout minuty]] {deny|permit} tcp źródło żródło-wildcard [operator port[port]] odbiorca odb-wildcard [operator port [port]] [established] [precedence precedence] [tos tos] [log]

To polecenie ma swoje unikalne parametry.

Parametr Opis
tcp Określa, że lista bierze pod uwage parametry protokołu TCP
operator (opcjonalnie) Określa jak dopasowane mają byc numery portu w datagramach z parametrem pot. Dozwolone wartości to:
  • it -mniejszy niż
  • gt -większy niż
  • eq -równy
  • neq -nie równy
  • range -zakres

port (opcjonalnie) Określa numer portu z zakresu 0 do 65535 lub nazwę usługi reprezentującą port
established Dopasowanie datagramu z ustawionymi bitami ACK lub RST. Pozwala na kontrolowanie ruchu ustanowionych sesji. Ta metoda nie utrzymuje stanu sesji, a tylko bada zawartość flag w datagramie

Rozmieszczanie rozszerzonych list dostępu
Ponieważ rozszerzone listy dostępu mogą filtrować pakiety na podstawie adresów nadawców, ich lokalizacja nie jest tak istotna, jak w przypadku list standardowych. Jeśli zadaniem listy jest minimalizowanie nasycenia sieci i maksymalizacja wydajności, to można je umieścić na routerach bliskich zablokowanym adresom źródłowym. Jeśli listy mają zapewnić maksymalną kontrolę nad przepływem pakietów, należy je umieszczać jak najbliżej chronionych hostów.
Należy unikać stosowania list dostępu na urządzeniach szkieletu sieci, bo wprowadzają one opóźnienia. Oto kilka ogólnych zasad odnośnie tworzenia list dostępu:

  • należy minimalizować odległości między nadawcą a listą, jeśli ruch jest zabroniony (dłuższa droga datagramów i pakietów ICMP unreachable),
  • nie należy umieszczać rozszerzonych list dostępu w szkielecie sieci,
  • należy dobierać parametry routera (pamięć i CPU) do planowanych list,
  • należy umieszczać listy na właściwych interfejsach, eliminując zbędne przetwarzanie pakietów,
  • uważnie zarządzać dużymi listami dostępu.

Nazywanie list dostępu
W IOS w wersji nowszej niż 11.2 można stosować również
nazwane listy dostępu. Tworzone są one za pomocą polecenia ip access-list, jego składnia to:
ip access-list {standard|extended} nazwa

Zalety list nazwanych
Nazwane listy dostępu umożliwiają dużo łatwiejsze
zarządzanie regułami:

  • Pozwalają na usuwanie dowolnej linii z listy.
  • List nazwanych może być dowolnie wiele. W przypadku
  • skomplikowanych konfiguracji pozwala to obejść ograniczenia list standardowych i rozszerzonych związanych z ich sztywną numeracją.

Działania na listach
Utworzenie listy:

routerA(config)#ip access-list extended test
routerA(config-ext-nacl)#permit ip any host 1.1.1.1
routerA(config-ext-nacl)#permit ip any host 2.2.2.2
routerA(config-ext-nacl)#permit ip any host 3.3.3.3

Sprawdzenie listy:

routerA#sh ip access-lists
Extended IPaccesslist test
permit ip any host 1.1.1.1
permit ip any host 2.2.2.2
permit ip any host 3.3.3.3

Usunięcie drugiej linii:

routerA(config)#ip access-list extended test
routerA(config-ext-nacl)#no permit ip any host 2.2.2.2

Ponowne sprawdzenie zawartości listy:

routerA#sh ip access-lists
Extended IPaccess list test
permit ip any host 1.1.1.1
permit ip any host 3.3.3.3

Dostęp do linii wirtualnych routera
Omawiane do tej pory listy dostępu służyły do filtrowania ruchu przechodzącego przez router. Istnieje jednak możliwość filtrowania ruchu
przychodzącego do samego routera (np. telnet na linie wirtualne). Dla tego typu ruchu można zastosować tylko standardowe listy dostępu. Aby zezwolić na połączenie telnet tylko ze stacji o IP 192.168.14.2 z routerem A, konfiguracja listy będzie wyglądać następująco:

routerA(config)#access-list 2 permit 192.168.14.2
routerA(config)#line vty 0 4
routerA(config-line)#access-class 2 in

Weryfikacja listy dostępu
Oprócz tworzenia list dostępu istotna jest też ich
weryfikacja i zarządzanie. Aby wyświetlić wszystkie listy dostępu, należy użyć polecenia show access-lists.

Można również użyć polecenia ze wskazaniem konkretnego
protokołu: show ip access-list.

Gdy chcesz wyświetlić zawartość jednej listy, podaj jej numer: show access-list 100.

Można również zastosować polecenie show runing-config. Polecenie show line pozwala zobaczyć listy przypisane do linii wirtualnych routera, show line vty 0 4.

Aby zobaczyć listy przypisane do interfejsu, można
skorzystać z polecenia show ip interface ethernet0.

Autor: Adrian Rogaski, www.rogaski.org

PODZIEL SIĘ

BRAK KOMENTARZY

ZOSTAW ODPOWIEDŹ