Access control lists (ACL’er) er routerens og switchens måde at sige “ja” eller “nej” til trafik på. De bruges til at filtrere pakker, begrænse adgangen til management og udvælge trafik til NAT, QoS og VPN. I CCNA 200-301 v2.0 skal du kunne konfigurere IPv4 ACL’er: standard, extended, numbered og named (emne 4.6).
Sådan behandles en ACL
En ACL er en liste af linjer, Access Control Entries (ACE), der hver enten tillader (permit) eller afviser (deny). Tre regler er afgørende:
- Top-down: Linjerne gennemgås oppefra og ned.
- First match: Når en pakke matcher en linje, udføres handlingen, og resten af listen ignoreres.
- Implicit deny: Sidst i hver ACL står et usynligt
deny any. Matcher en pakke ingen linje, bliver den afvist.
Rækkefølgen er derfor afgørende: Specifikke linjer skal stå før generelle. Og en ACL med kun deny-linjer blokerer al trafik.
Wildcard-masker
ACL’er bruger wildcard-masker i stedet for subnetmasker. Et 0-bit betyder “skal matche”, og et 1-bit betyder “ligegyldigt”. Du finder wildcardet ved at trække subnetmasken fra 255.255.255.255:
| Subnetmaske | Wildcard | Matcher |
|---|---|---|
| 255.255.255.255 | 0.0.0.0 | Én host (skrives også host 10.1.1.10) |
| 255.255.255.0 | 0.0.0.255 | Et /24 |
| 255.255.255.240 | 0.0.0.15 | Et /28 |
| 0.0.0.0 | 255.255.255.255 | Alle adresser (skrives any) |
Standard ACL’er
Standard ACL’er filtrerer kun på kildeadressen. De har nummer 1–99 eller 1300–1999, eller de kan være navngivne.
Numbered standard ACL
Tillad kun netværket 192.168.10.0/24, og afvis alt andet:
R1(config)# access-list 10 remark Kun klient-LAN
R1(config)# access-list 10 permit 192.168.10.0 0.0.0.255
(Resten afvises af implicit deny.)
Named standard ACL
R1(config)# ip access-list standard KUN-ADMIN
R1(config-std-nacl)# permit host 192.168.99.10
R1(config-std-nacl)# permit 192.168.99.0 0.0.0.15
R1(config-std-nacl)# deny any log
deny any log gør den implicitte deny synlig og logger de afviste pakker.
Typisk brug: beskyt VTY-linjerne
Standard ACL’er bruges ofte til at begrænse, hvem der må logge ind med SSH:
R1(config)# line vty 0 4
R1(config-line)# access-class KUN-ADMIN in
R1(config-line)# transport input ssh
Extended ACL’er
Extended ACL’er kan filtrere på kilde, destination, protokol og porte. De har nummer 100–199 eller 2000–2699, eller de kan være navngivne.
Syntaksen er:
permit|deny <protokol> <kilde> <wildcard> [port] <destination> <wildcard> [port]
Eksempel: Klient-LAN’et 192.168.10.0/24 må nå webserveren 10.0.0.10 på HTTP og HTTPS og bruge DNS-serveren 10.0.0.53. Al anden trafik til servernettet 10.0.0.0/24 afvises, mens trafik til internettet tillades:
R1(config)# ip access-list extended KLIENT-IND
R1(config-ext-nacl)# remark Web til webserver
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.10 eq 80
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.10 eq 443
R1(config-ext-nacl)# remark DNS
R1(config-ext-nacl)# permit udp 192.168.10.0 0.0.0.255 host 10.0.0.53 eq 53
R1(config-ext-nacl)# permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.53 eq 53
R1(config-ext-nacl)# remark Resten af servernettet blokeres
R1(config-ext-nacl)# deny ip 192.168.10.0 0.0.0.255 10.0.0.0 0.0.0.255 log
R1(config-ext-nacl)# permit ip 192.168.10.0 0.0.0.255 any
Den samme første linje som numbered extended ACL:
R1(config)# access-list 110 permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.10 eq 443
Nyttige nøgleord: eq (lig med), gt, lt, neq, range, host, any, protokollerne ip, tcp, udp, icmp og established (TCP-returtrafik).
Anvend ACL’en på et interface
En ACL gør ingenting, før den bliver anvendt. Der må være én ACL pr. interface, pr. retning og pr. protokol:
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ip access-group KLIENT-IND in
- in: Pakker filtreres, når de kommer ind på interfacet, før routing.
- out: Pakker filtreres, når de skal ud af interfacet.
Hvor skal ACL’en placeres?
Den klassiske tommelfingerregel:
- Extended ACL: tæt på kilden. Den kan præcist udvælge trafikken, så uønskede pakker stoppes tidligt og ikke bruger båndbredde.
- Standard ACL: tæt på destinationen. Den kender kun kilden, så placeres den tæt på kilden, risikerer du at blokere kilden fra alle destinationer.
Redigér en named ACL
Named ACL’er har sekvensnumre, så du kan indsætte og slette enkelte linjer:
R1# show access-lists KLIENT-IND
Extended IP access list KLIENT-IND
10 permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.10 eq www
20 permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.10 eq 443
...
R1(config)# ip access-list extended KLIENT-IND
R1(config-ext-nacl)# 15 permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.10 eq 8443
R1(config-ext-nacl)# no 20
(Outputtet er forkortet.)
Med klassiske numbered ACL’er i global konfiguration tilføjes nye linjer altid nederst, og no access-list 110 sletter hele listen. Brug named ACL’er eller rediger dem i ACL-tilstanden, så undgår du ulykker.
Kontrol og fejlsøgning
R1# show access-lists
R1# show ip access-lists KLIENT-IND
R1# show ip interface GigabitEthernet0/0 | include access list
R1# show running-config | section access-list
show access-lists viser antallet af matches pr. linje. Det er det bedste værktøj til at se, hvilken linje der rammer trafikken.
Typiske fejl:
- Forkert rækkefølge: En bred
denystår før en specifikpermit. - Glemt
permit: ACL’en har kundeny-linjer, og implicit deny blokerer resten. - Forkert retning (in i stedet for out) eller forkert interface.
- Forkert wildcard, fx at bruge en subnetmaske (255.255.255.0) i stedet for et wildcard (0.0.0.255).
- Returtrafik glemt: En ACL, der kun tillader trafik den ene vej, kan blokere svarene.
ACL’er og trafik fra routeren selv
Et interface-ACL i retning out filtrerer ikke trafik, som routeren selv genererer, fx routingopdateringer eller ping fra routerens prompt. Til gengæld filtrerer et ACL i retning in også trafik til routeren selv. Hvis du laver en extended ACL ind på et WAN-interface, skal du derfor huske at tillade din routingprotokol, fx OSPF (permit ospf any any), ellers falder naboskabet.
Det skal du kunne til eksamen
- Forklare top-down, first match og implicit deny.
- Beregne wildcard-masker.
- Skrive standard og extended ACL’er, både numbered og named.
- Anvende dem med
ip access-groupogaccess-classog vælge den rigtige placering og retning. - Aflæse
show access-listsog finde fejlen.
Relateret: IP cheat sheet, Subnet forklaret, Opsætning af SSH og Hvad er NAT? (NAT bruger ACL’er til at udvælge trafik).