You are on page 1of 5

ACLs (Access Control Lists) – v 0.

a). Generalitati:
- ACL este o lista de reguli de tip permit sau deny care este folosita pentru filtrarea traficul din retea care
ajunge sau traverseaza un router.

- ACL-urile pot fi folosit nu doar pentru filtrarea pachetelor ci si pentru configurarea NAT, QoS, a “traficului
interesant” pentru DDR (Dial on Demand Routing), s.a.

- Listele de control se pot crea atat pe routere unde sunt in general de tip L3, cat si pe switch-uri, unde sunt in
general de tip L2 (ex: adrese MAC sursa/destinatie, campul type din hdr. Ethernet), dar pot fi si de L3 (ex IP,
IPv6, sa).

- In contextul configurarii ACL-urilor, directia IN a unei interfete se refera la directia prin care pachete „intra‟ in
router/switch din mediul de transmisie, in timp ce directia OUT se refera la pachetele care „ies‟ din router sau
switch. Intr-un cuvant, ne gandim la IN si OUT raportandu-ne la echipamentul de retea.

- ACL-urile se pot asocia oricarei interfete LAN, WAN si virtuale a routerului, atat pe IN cat si pe OUT.

- Se poate asocia 1 lista de control per protocol rutat (IP, IPX, AppleTalk, XNS etc), per directie (IN/OUT) si
per interfata (Fa0/1). De exemplu, daca avem 4 interfete, 3 protocole rutate si ne vom folosii de ambele (2)
directii pentru filtrare (IN si OUT), vom obtine maxim 4 x 3 x 2 = 24 liste de control pe care le putem
configura.

- ACL-urile se configureaza pe un router in 2 pasi:


1. se creaza ACL-urile in memoria RAM (running-config)
2. se instaleaza (asociaza) ACL-urile anterior create unei/unor interfete fizice sau/si virtuale

- In „mod default‟, un router nu are configurate ACL-uri, ceea ce inseamna ca tot traficul care traverseaza sau
are ca destinatie acel router este permis.

- Traficul generat de insusi router-ul nostru nu este afectat (filtrat) de ACL-urile configurate si instalate
pe interfetele sale.

- Procesul de filtrare consta in luarea deciziei, pentru fiecare pachet in parte, daca acesta va fi aruncat sau
acceptat (IN) / injectat (OUT) in mediul de transmisie.

- Un pachet care este acceptat de regulile listei de acces pe directia IN a „interfetei de intrare‟ va fi trimis
procesului de rutare pentru a se lua decizia asupra interfetei pe care pachetul va iesi in interretea catre destinatia
sa finala (daca nu cumva se adreseaza chiar router-ului nostru).
Pachetele care „ies‟ din router pe o interfata deja stabilita in urma procesului de routare vor fi confruntate cu
ACL-ul pe directia OUT a interfetei respective. Daca nu va fi aruncat nici in aceasta etapa, pachetul va fi pus pe
segmentul de retea.

- In general, aruncarea unui pachet de catre o lista de acces IP va genera un pachet ICMP desination
unreachable, communication administratively prohibited (type-ul 3, codul 13 ICMP) avand drep IP destinatie
sursa pachetului aruncat. In cazul comenzii ping din IOS va apare simbolul U la primirea unui astfel de mesaj
de eroare.
Pentru ca generarea de catre router a unor astfel de mesaje se face adesea folosind CPU si pentru ca un eventual
atacator ar putea profita de acest lucru initiind un atac de tip DOS/DDOS asupra routerului, se recomanda
uneori oprirea generarii de astfel de mesaje de „feedback‟. Comanda la nivel de interfata va fi:
Router(config-if)# no ip unreacheable
Modificarea produsa se va vizualiza cu:
Router# show ip interface <intf>
Incetarea trimiterii tuturor (!) mesajelor ICMP de tipul 3 va avea insa drept efect nedorit blocarea functionarii
PMTUD (Path MTU Discovery) pentru caile ce traverseaza pe IN acea interfata.
Nu va avea drept efect insa blocarea Echo Request/Echo Reply catre acea interfata/router sau catre un host din
„spatele‟ routerului.
Similar, NU va avea drept efect blocarea functionalitatii traceroute ce traverseaza acel router, dar va bloca
functionarea traceroute ce are drept destinatie insusi routerul daca traceroute utilizeaza UDP (cazul IOS si
default Linux) si nu utilizeaza ICMP (cazul Windows).

b). Tipuri de ACL-uri:


- ACL-urile studiate in CCNA sunt ACL-uri de tip static. Acestea se impart in 2 tipuri:
1. ACL-uri standard – identificabile prin cifre (numerice)
– identificabile prin nume (denominate)

2. ACL-uri extinse – identificabile prin cifre (numerice)


– identificabile prin nume (denominate)

- ACL-urile standard pot identifica (“fac match”) pachetele din trafic numai dupa IP-ul sursa al pachetului, in
vreme ce ACL-urile extinse folosesc drept criteriu IP-ul sursa, IP-ul destinatie, portul (TCP sau UDP)
sursa/destinatie (daca este cazul), cat si protocolul precizat la nivelul header-ului de retea (IP, TCP, UDP,
ICMP, EIGRP, IPIP, OSPF s.a.).

- ACL-urile numerice: stergerea unei reguli atrage dupa sine stergerea intregii suite de reguli. Se identifica prin
numere (1-99 si 1300-1999 pentru ACL-urile standard; 100-199 si 2000-2699 pentru ACL-urile exinse)
- ACL-urile denominate: stergerea unei reguli se poate face granular. Au o aplicabilitate mai restransa in IOS
decat cele numerice.
- Atat pentru ACL-urile numerice cat si pentru cele standard introducerea de noi reguli se face in mod exclusiv
prin adaugarea acestora la sfarsitul setului curent de reguli. Daca se doreste inserarea lor in interiorul listei
aceasta va trebui in prealabil stearsa si apoi reconstruita. Exista o exceptie: se poate trata sintactic o lista
numerica ca o lista denominata.

c). Configurare:
- Fiecare lista de acces numerica are un numar unic. La fel, fiecare lista de acces denominata are un nume unic.
Aceste numere/nume sunt unice pentru fiecare router, adica au semnificatie locala.

- Fiecare pachet este confruntat cu regulile ACL ale interefetei pe care intra sau iese. Aceste reguli sunt
consultate in ordine (de la prima regula introdusa catre ultima regula introdusa, sau de sus in jos intr-o listare cu
show running). Daca caracteristicile analizate (cele precizate mai sus ca diferente intre ACL-urile standard si
ACL-urile extinse) ale unui pachet coincid cu cele specificate de una din reguli, decizia de permit sau de deny a
acelei reguli va fi aplicata pachetului in cauza. Dupa acest moment se va trece la pachetul urmator. In cazul in
care pachetul nu corespunde nici uneia din conditiile specificate de lista de reguli acesta va fi aruncat
datorita regulii implicite de tip deny ce exista la sfarsitul oricarui ACL. Aceasta regula implicita nu este
vizibila in comenzile de listare/vizualizare a ACL-urilor din IOS.
- Datorita confruntarii in ordine a regulilor din ACL cu fiecare pachet este necesar ca:
i). regulile sa fie specificate in ordinea descrescatoarea a frecventei (cele mai frecvente sa fie primele) –
se urmareste reducerea latentei de procesare necesara parcurgerii listei de reguli
ii). regulile sa fie specificate de la cele mai precise (referitoare la hosturi) la cele mai generale
(referitoare la subretele si retele). Spre exemplu, mai intai se va interzice accesul unui host din reteaua
noastra la web si doar apoi se va permite accesul tuturor celorlalte host-uri din aceeasi retea pe serverele
de web. Daca inversam aceasta ordine, pachetele venite de la hostul care trebuia blocat vor fi “prinse” de
regula mai generala de tip permit fiind lasate sa treaca catre serviciul de web, si nu vor fi confruntate cu
regula deny specifica acelui host.

- Editarea ACL-urilor trebuie facuta doar in conditiile in care acestea nu sunt atasate deja unei interfete – in caz
contrar efectele pot fi imprevizibile: stergerea unei liste de control atasate unei interfete poate face ca, din acel
moment, acea interfata sa accepte tot traficul sau, dimpotriva, sa respinga toate pachetele in functie de versiunea
de IOS.

- Pe liniile virtuale (vty) functioneaza ACL-uri standard si extins de tip numeric si denominat.
- Verificarea identitatii IP-ului (sursa sau destinatie) din pachetul confruntat cu regulile din ACL se realizeaza in
3 pasi:
1) se calculeaza rezultatul operatiei SAU logic dintre IP-ul din ACL si wildcard mask-ul din ACL
2) se calculeaza rezultatul operatiei SAU logic dintre IP-ul din pachet (sursa ori destinatie) cu wildcard
mask-ul din ACL (corespunzator IP-ului sursa ori destinatie din ACL)
3) se compara cele 2 rezultate: daca sunt identice exista un match la nivelul IP-ului. Aceasta conditie
este suficienta pentru ACL-urile standard. In cazul ACL-urilor extinse se verifica si restul conditiilor (tip
protocol, eventuale porturi logice, biti din headerul TCP…)

- Wildcard mask-ul (WM) din sintaxa ACL-urilor nu are nimic in comun cu network mask-ul (NM) pe care il
cunoastem de la clasele de IP-uri, si asta in ciuda faptului ca amandoua mastile sunt binare si sunt alcatuite din
32 de biti:
a) valorile de „1‟ din din NM indica bitii de retea/subretea din adresa IP iar valorile de „0‟ indica bitii de
host address. Bitii de „1‟ incep intodeauna din stanga si sunt continui (neseparati de biti de zero). Spre exemplu,
avem un NM valid: 255.255.224.0 == (11111111) 2.( 11111111) 2.(11100000) 2.( 00000000)2
b) valorile de „1‟ din WM indica biti care pot avea in IP-ul din pachet orice valoare, adica „1‟ sau „0‟ -
indiferent de valoarea bitilor corespunzatori ca pozitie din IP-ul din regula ACL. Valorile de „0‟ din WM indica,
in schimb, necesitatea ca bitii din IP-ul din pachet sa aiba exact aceleasi valori cu bitii corespunzatori ca pozitie
din regula ACL. Nu exista aici nici-o restrictie care sa impuna ca bitii de „1‟ sa fie neseparati de biti de „0‟.
Putem avea, spre ex., urmatorul WM: 82.34.1.22 == (01010010) 2.( 00100010) 2.(00000001) 2.(00010110)2

- Ca alternativa la IP si WM precizat in mod explicit avem 2 cuvinte cheie:


- any : echivalent pentru 0.0.0.0 255.255.255.255
Ex1: access-list 3 deny any
access-list 103 permit ip any any
< in loc de: >
Ex2: access-list 3 deny 0.0.0.0 255.255.255.255
access-list 103 permit ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255

- host IP : echivalent cu IP 0.0.0.0 . In cazul ACL-urilor standard, WM poate fi omis (e implicit):


Ex1: access-list 4 permit host 10.0.0.33
access-list 104 permit ip host 10.0.0.33 any
< sau >
Ex2: access-list 4 permit 10.0.0.33 ! <––– WM omis
< in loc de: >
Ex3: access-list 4 permit 10.0.0.33 0.0.0.0
access-list 104 permit ip 10.0.0.33 0.0.0.0 any

- Se recomanda ca ACL-urile standard sa se instaleaze pe routerul cel mai apropiat de destinatia finala a
pachetului (pe interfata de iesire a acestuia catre reteaua destinatie), in timp ce ACL-urile extinse sa se
instaleaze pe router-ul cel mai apropiat de host-ul sursa al pachetului (pe interfata de intrare in router
dinspre reteaua sursa). Cerinta urmeaza logica filtrarii doar a traficului dorit, cat mai aprope de sursa sa.

- Sintaxa:
A) Creare ACL-uri:

a). standard numeric:


Router(config)# access-list NR {deny|permit|remark} IPs WMs
NR  [1, 99] U [1300,1999] IPs – IP sursa
WMs – wildcard sursa
b). standard denominat:
Router(config)# ip access-list standard <NUME>
Router(config-std-nacl)# {deny|permit|remark} IPs WMs

c). extins numeric:


Router(config)# access-list NR {deny|permi|remark} prot IPs WMs [WORD Ps] IPd WMd [WORD Pd]
NR  [100, 199] U [2000,2699] protocol: IP,ICMP,TCP,UDP, sa
Ps – port sursa , ex 21 (ftp), 23 (telnet), 80 (www), sa IPd – IP destinatie
Pd – port destinatie, ex 130 (pop3), 143 (imap), 53 (dns), sa

d). extins denominat:


Router(config)# ip access-list extended <NUME>
Router(config-ext-nacl)# {deny|permit} protocol IPs WMs [WORD Ps] IPd WMd [WORD Pd]

B). Detasare/Atasare ACL pe interfata router:

Router(config-if)# [no] ip access-group {NR|nume} {in|out}

C). Verificare ACL-uri configurate/atasate:

Router# show running-config


Router# show access-lists [NR|nume]
Router# show ip access-lists [NR|nume]
Router# show ip interface [slot/port]
Anexa:

You might also like