RFC 3330 ist obsolet
In RFC 3330 waren die “Special Use IPv4 Addresses” definiert. Dieser RFC wurde jetzt durch den RFC 5735 ersetzt (leider kann man sich diese Nummer nicht so gut merken).
Sehr interessant ist die Erweiterung der TEST-NET-Einträge:
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
Während der erste Eintrag schon länger vorhanden ist, stehen jetzt zwei weitere Netze zu Dokumentationszwecken zur Verfügung. Diese Verwendung ist explizit im RFC 5737 – IPv4 Address Blocks Reserved for Documentation beschrieben.
Damit sollte man auch die typische Anti-Spoofing-ACL für Perimeter-Router anpassen:
ip access-list extended PERIMETER-IN
deny ip 0.0.0.0 0.255.255.255 any
deny ip 10.0.0.0 0.255.255.255 any
deny ip 127.0.0.0 0.255.255.255 any
deny ip 169.254.0.0 0.0.255.255 any
deny ip 172.16.0.0 0.15.255.255 any
deny ip 192.0.2.0 0.0.0.255 any
deny ip 192.168.0.0 0.0.255.255 any
deny ip 198.18.0.0 0.1.255.255 any
deny ip 198.51.100.0 0.0.0.255 any
deny ip 203.0.113.0 0.0.0.255 any
deny ip 224.0.0.0 31.255.255.255 any
deny ip EIGENES-NETZ any
permit ...
Cisco Access-Control-Listen
Immer wieder stelle ich fest, dass manche Admins eine der wichtigsten Erweiterungen der Cisco Access-Listen verpasst haben:
Access-Listen lassen sich komfortabel editieren
Seit einiger Zeit (nein, an das genaue Release erinnere ich mich nicht mehr) haben die ACEs (Access-List-Entries) Sequenznummern, die man beim show access-lists sehen kann:
c1841#sh access-lists
Extended IP access list 100
10 permit icmp any any (5 matches)
Extended IP access list TEST
10 permit icmp any any (5 matches)
20 permit udp any any
30 permit esp any any
Diese Sequenznummern können verwendet werden, um neue ACEs einzufügen. Dazu muss eine bisher nicht verwendete Nummer genommen werden:
c1841(config)#ip access-list ext TEST
c1841(config-ext-nacl)#15 permit tcp any any
c1841(config-ext-nacl)#
c1841(config-ext-nacl)#do sh ip access-list TEST
Extended IP access list TEST
10 permit icmp any any (5 matches)
15 permit tcp any any
20 permit udp any any
30 permit esp any any
c1841(config-ext-nacl)#
ACEs können natürlich auch gelöscht werden:
c1841(config-ext-nacl)#no 10
c1841(config-ext-nacl)#do sh ip access-list TEST
Extended IP access list TEST
15 permit tcp any any
20 permit udp any any
30 permit esp any any
c1841(config-ext-nacl)#
Wenn in einer ACL keine freien Sequenznummern mehr zur Verfügung stehen, können diese neu gebildet werden. Bei einem Reload werden diese mit einem Startwert von 10 und einer Schrittweite von 10 gebildet.
c1841(config)#ip access-list resequence TEST 50 20
c1841(config)#
c1841(config)#do sh ip access-list TEST
Extended IP access list TEST
50 permit tcp any any
70 permit udp any any
90 permit esp any any
c1841(config)#
Wer noch an seinen nummerierten ACLs hängt, kann die Editier-Funktionen natürlich auch benutzen. Dafür muss die Nummer einfach wie ein Name in den named ACLs verwendet werden:
c1841(config)#ip access-list extended 100
c1841(config-ext-nacl)#20 deny ip any any log
c1841(config-ext-nacl)#
c1841(config-ext-nacl)#do sh ip access-list 100
Extended IP access list 100
10 permit icmp any any (5 matches)
20 deny ip any any log
c1841(config-ext-nacl)#
Weitere Funktionen, die bei den ACLs in der Vergangenheit hinzugekommen sind:
Direktes Anzeigen der ACL zu einem Interface
c1841#sh ip access-list interface loo11
Extended IP access list TEST in
10 permit icmp any any (5 matches)
c1841#
c1841#sh ip access-list interface loo12
Extended IP access list TEST in
10 permit icmp any any (10 matches)
c1841#
c1841#sh ip access-list interface loo13
Extended IP access list TEST in
10 permit icmp any any (15 matches)
Extended IP access list TEST2 out
10 permit tcp any any
Obwohl dieselbe ACL auf drei verschiedenen Interfaces gebunden wurde, werden getrennte Statistiken geführt.
Mehrere Ports pro ACE
c1841(config)#ip access-list ext IPSEC
c1841(config-ext-nacl)#permit esp any any
c1841(config-ext-nacl)#permit udp any any eq isakmp non500-isakmp
c1841(config-ext-nacl)#
c1841(config-ext-nacl)#do sh access-list IPSEC
Extended IP access list IPSEC
10 permit esp any any
20 permit udp any any eq isakmp non500-isakmp
c1841(config-ext-nacl)#
Natürlich verliert man bei dieser Konfiguration die getrennten Counter für die unterschiedlichen Ports (hier 500 und 4500).
ACLs können auf weitere Felder wie z.B. den TTL-, den DSCP-Wert oder TCP-Flags filtern
c1841(config)#ip access-list extended TEST3
c1841(config-ext-nacl)#permit icmp any any ttl gt 128
c1841(config-ext-nacl)#permit udp any any dscp ef
c1841(config)#ip access-list extended TEST4
c1841(config-ext-nacl)#permit tcp any any match-all +syn +ack +fin -urg
Im zweiten Beispiel wird TCP-Traffic erlaubt, der sowohl das SYN, ACK und FIN-Bit trägt, aber nicht das URG-Bit.
Gruppieren von Network- oder Service-Objekten
Wer sich traut, das IOS 12.4(20)T einzusetzen, hat sogar die Möglichkeit, Object-Groups zu verwenden, wie es die PIX bzw. ASA schon lange vorgemacht hat:
c1841(config)#object-group network RFC1918
c1841(config-network-group)#10.0.0.0 0.255.255.255
c1841(config-network-group)#172.16.0.0 0.15.255.255
c1841(config-network-group)#range 192.168.0.0 192.168.255.255
c1841(config-network-group)#exit
c1841(config)#
c1841(config)#ip access-list extended TEST5
c1841(config-ext-nacl)#permit icmp any object-group RFC1918
Setzen von Cookies für das Logging
Ab 12.4(22)T kann an das Keyword log oder log-input ein “Cookie” angehängt werden, das als Tag zum Syslog-Server mitgesendet wird:
c1841(config)#ip access-list ext TEST6
c1841(config-ext-nacl)#deny icmp host 10.1.1.1 host 10.2.2.2 log BewareOfTheseHosts
c1841(config-ext-nacl)#
c1841(config-ext-nacl)#do sh ip access-lists TEST6
Extended IP access list TEST6
10 deny icmp host 10.1.1.1 host 10.2.2.2 log (10 matches) (tag = BewareOfTheseHosts)
c1841(config-ext-nacl)#
Auf dem Syslog-Server kommt dieses Tag mit der Log-Meldung an und kann z.B. gefiltert werden:
%SEC-6-IPACCESSLOGDP: list TEST6 denied icmp 10.1.1.1 -> 10.2.2.2 (0/0), 10 packets [BewareOfTheseHosts]
Standard-ACLs
Wie oft wird dieser Mist eigentlich noch verbreitet?
Question: Where should you place standard ACLs in the Network?
Answer: Standard ACLs should be placed as close as possible to the destination to prevent unintended traffic from filtering to your other networks.
Standard-ACLs werden nicht zum Filtern von Traffic verwendet! Dazu sind die extended Access-Listen da. Standard-ACLs haben ihre Daseinsberechtigung z.B. im Filtern von Routing-Updates, für Access-Classes, etc. Aber leider ist die Original-Aussage in diversen Cisco-Trainings zu finden und wird auch genauso oft nachgeplappert (leider auch von Leuten, die es besser wissen sollten).
Cisco ACL Editor und Simulator
Mit der Konfiguration von Access-Listen (ACLs) muss jeder Cisco-Admin erst einmal “warm werden”. Eine neue Software von Gareth O. Evans kann den Umgang mit ACLs erleichtern. Diese erlaubt nicht nur die Konfiguration von Access-Listen sondern auch deren Simulation. Man merkt allerdings, daß dieses Programm erst in Version 1.0.0.2 vorliegt. Benannte Access-Listen sind nicht möglich, die Eingabe der ACL-Nummern ist über ein Drop-Down-Menue eher umständlich und alles was vom “Standard” abweicht, ist nicht möglich. So gehen z.B. keine Time-Ranges, mehrere Ports pro ACE, ICMP-Typen oder aber das Filtern auf TCP-Flags. Das Programm ist zwar zur Zeit nur als 30-Tage-Test-Version zu bekommen, aber wenn es kostenlos bleibt, dann könnte es für den Einen oder Anderen interessant sein.


