CISCO Access-List Netgroup 23 Aprile 2002 Angelo Veloce – LNF Computing Service Access List • Nega il traffico basandosi su dei test sul pacchetto IP Frame Header (for examples, HDLC) Packet (IP header) Segment (for Examples. TCP Header) Data Port number e TCP flags Protocol Source Address Destination Address Access List • Che tipo di Access List ci sono? – Standard Access List, controllano il source address del pacchetto IP – Extended Access List, controllano entrambi source e destination addresses del pacchetto IP. Inoltre puo’ essere filtrato uno specifico protocollo, numero di porta e TCP flags Come sono identificate le Access List sui Router CISCO: • Per il protocollo IP: – Standard hanno un range da 1 a 99 – Estese hanno un range da 100 a 199 • Per il protocollo IPX: – Standard hanno un range da 800 a 899 – Estese hanno un range da 900 a 999 • Per il protocollo Apple Talk – Il range va da 600 a 699 Bits della Wildcard Mask • Questa maschera permette di stabilire in una Network cosa controllare e cosa ignorare. – Dove c’é uno zero si ha un controllo sul corrispondente bit – Dove c’é un uno il corrispondente bit é ignorato. Wildcard Bits Octet Bit Position and Address Value for Bit 128 64 32 16 8 4 2 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 = Check all address Bits 1 = Ignore Last 6 Address Bits 1 = Ignore Last 4 Address Bits 0 = Check Last 2 Address Bits 1 = Do Not Check Address Bits Esempio Wildcard Mask • Data la Network 172.30.16.0 con wildcard mask 0.0.15.255 – La network é di classe B con il terzo ottetto subnettato . – É possibile usare questa configurazione per controllare le subnet da 172.30.16.0 a 172.30.31.0 Esempio Wildcard Mask • Per controllare qualsiasi indirizzo IP si dovrebbe usare: Any IP address 0.0.0.0 255.255.255.255 Wildcard mask Ignore all Per accettare qualsiasi indirizzo si utilizza l’espressione abbreviata ANY Esempio Wildcard Mask • Per controllare uno specifico IP host e quindi controllare tutti I bits: Uno specifico IP address 172.30.16.29 0.0.0.0 Wildcard mask controlla tutti i bits Per controllare tutti i bits di uno specifico IP address si usa l’abbreviazione Host 172.30.16.29 Sintassi delle Access List Estese • • • • • Access-list-number, identifica l’access list Protocol, sono IP, TCP, UDP, ICMP, GRE, IGRP Source e destination, identificano source e destination IP address Source-mask e destination-mask, sono la wildcard mask Operator, lt (less than), gt (greater than), eq (equal), neq (not equal), range • Operand, port number Router (config)# Access-list access-list-number {permit | deny} protocol Source source-wildcard-mask [operator source-port | source-port] Destination destination-wildcard-mask [operator destination-port | destination-port] [established] Sintassi delle Access List Estese • Attivare le access list estese su una interfaccia – Access-list-number, indica il numero dell’access list che deve essere richiamato sull’interfaccia – In | out, indica se l’access list é applicata in ingresso o in uscita all’interfaccia Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#interface atm1/0.5 point-to-point Router(config-subif)#ip access-group access-list-number {in |out} Esempio Router#show running-config | begin interface ATM1/0.5 interface ATM1/0.5 point-to-point description PVC 17.6M LNF-GARRB-Telecom bandwidth 17600 ip address XXX.XXX.XXX.XXX 255.255.255.252 ip access-group 103 in no ip mroute-cache atm pvc 107 30 107 aal5snap 17600 17600 … … Come scrivere le Access-List • Fondamentale e’ l’ordine in cui sono scritte le access-list • Man mano che si esegue l’access-list se si verificano delle condizioni si esce dal percorso saltando i controlli successivi • E’ importante anche il verso in cui sono applicate sulle interfacce Esempio • Per prima cosa, implementiamo la nostra access-list nel verso IN sull’interfaccia Seriale o ATM connessa alla WAN Dati SA DA Ip access-group <numero access-list> in Esempio (connessioni TCP) • Implementiamo l’access-list dalla “testa” ovvero dalle prime regole che vengono controllate. • Permesso di tutti i nodi internet all’inoltro di pacchetti TCP per connessioni gia’ stabilite access-list 103 permit tcp any XXX.XXX.XXX.0 0.0.7.255 established access-list 103 permit tcp any YYY.YYY.YYY.0 0.0.0.255 established access-list 103 permit tcp any ZZZ.ZZZ.ZZZ.0 0.0.0.255 established access-list 103 permit tcp any TTT.TTT.TTT.0 0.0.3.255 established Porte alte pericolose • Divieto a tutti i nodi verso le porte alte "pericolose": – – – – – – NFS (udp e tcp porta 2049), Openwin (tcp porta 2000), MySQL (tcp e udp porta 3306), X11 (tcp porte 6000-6010), adsm (tcp porta 1500), fontsrv (udp e tcp porte 7000 e 7100) Esempio (blocco porte alte pericolose UDP) • Divieto di tutti i nodi internet all’inoltro di pacchetti UDP sulle porte alte pericolose access-list 103 deny udp any any eq 2049 access-list 103 deny udp any any eq 3306 access-list 103 deny udp any host <font-server-IP> eq 7000 access-list 103 deny udp any any eq 7100 Esempio (UDP) • Permesso di tutti i nodi internet all’inoltro di pacchetti UDP sulle porte alte (>1024) access-list 103 permit udp any XXX.XXX.XXX.0 0.0.7.255 gt 1024 access-list 103 permit udp any YYY.YYY.YYY.0 0.0.0.255 gt 1024 access-list 103 permit udp any ZZZ.ZZZ.ZZZ.0 0.0.0.255 gt 1024 access-list 103 permit udp any TTT.TTT.TTT.0 0.0.3.255 gt 1024 Esempio (ssh) • Permettiamo l’accesso in SSH solo verso macchine amministrate dal servizio di calcolo access-list 103 permit tcp any host <ssh-server1-ip> eq 22 access-list 103 permit tcp any host <ssh-server2-ip> eq 22 access-list 103 permit tcp any host <ssh-server3-ip> eq 22 Esempio (net-services) • Permesso di tutti i nodi internet verso i Server DNS (53), SMTP (25), WWW (80) access-list 103 permit tcp any host <dns-server1-ip> eq domain access-list 103 permit udp any host <dns-server1-ip> eq domain access-list 103 permit tcp any host eq smtp access-list 103 permit tcp any host <dns-server2-ip> eq domain access-list 103 permit udp any host <dns-server2-ip> eq domain access-list 103 permit tcp any host <smtp-server2-ip> eq smtp access-list 103 permit tcp any host <http-server1-ip> eq www access-list 103 permit tcp any host <http-server2-ip> eq www access-list 103 permit tcp any host <webmail-ip> eq 443 access-list 103 permit tcp any host <http-server3-ip> eq www Porte utilizzate dagli AFS Server afs3-fileserver 7000/tcp # File Server Itself afs3-fileserver 7000/udp # File Server Itself afs3-callback 7001/tcp # Callbacks to Cache Managers afs3-callback 7001/udp # Callbacks to Cache Managers afs3-prserver 7002/tcp # Users & Groups Database afs3-prserver 7002/udp # Users & Groups Database afs3-vlserver 7003/tcp # Volume Location Database afs3-vlserver 7003/udp # Volume Location Database afs3-kaserver 7004/tcp # AFS/Kerberos Auth. Service afs3-kaserver 7004/udp # AFS/Kerberos Auth. Service afs3-volser 7005/tcp # Volume Managment Server afs3-volser 7005/udp # Volume Managment Server afs3-errors 7006/tcp # Error Interpretation Service afs3-errors 7006/udp # Error Interpretation Service afs3-bos 7007/tcp # Basic Overseer Process afs3-bos 7007/udp # Basic Overseer Process afs3-update 7008/tcp # Server-To-Server Updater afs3-update 7008/udp # Server-To-Server Updater afs3-rmtsys 7009/tcp # Remote Cache Manager Service afs3-rmtsys 7009/udp # Remote Cache Manager Service Esempio (AFS Servers) • Permesso di tutti i nodi verso gli AFS Server – Autenticazione per client windows (porta 750) access-list 103 permit udp any host <afs-server1-ip> eq 750 access-list 103 permit udp any host <afs-server2-ip> eq 750 - AFS server (compresa autenticazione per client unix) access-list 103 permit tcp any host <afs-server1-ip> range 7000 7009 # access-list 103 permit udp any host <afs-server1-ip> range 7000 7009 (redundant) access-list 103 permit tcp any host <afs-server2-ip> range 7000 7009 # access-list 103 permit udp any host <afs-server2-ip> range 7000 7009 (redundant) Esempio (AFS clients) • Permesso any to any per le callbacks delle cache dei client AFS access-list 103 permit tcp any any eq 7001 # access-list 103 permit udp any any eq 7001 (redundant) Esempio (NTP Servers) • Permesso di tutti i nodi internet verso i Server NTP access-list 103 permit udp any host <ntp-server1-ip> eq ntp access-list 103 permit udp any host <ntp-server1-ip> eq ntp access-list 103 permit udp any host <ntp-server1-ip> eq ntp access-list 103 permit udp any host <ntp-server1-ip> eq ntp Esempio (FTP Servers) • Permesso di tutti i nodi internet ad accedere in FTP ad un server autorizzato access-list 103 permit tcp any host <ftp-server1-ip> eq 20 access-list 103 permit tcp any host <ftp-server1-ip> eq 21 Esempio (AT e ICMP) • Permesso di tutti i nodi internet ad accedere al tunnel Appletalk (gre/ip) access-list 103 permit gre any host <tunnel-interface-ip> • Permesso di tutti i nodi internet all’utilizzo dell’ICMP, riservandoci di implementare le funzionalita’ CAR (Committed Access Rate) per limitare la banda destinata all’ICMP access-list 103 permit icmp any any Aumentare la Security disabilitando funzionalita’ globali non necessarie • • • • • • service password-encryption no service finger no service pad no service udp-small-server no service tcp-small-server no ip bootp server Aumentare la Security disabilitando funzionalita’ sulle interfacce non necessarie • no ip redirects • no ip directed-broadcast • no ip proxy-arp Principali tipi di attacchi • TCP SYN-flooding – E’ un tipo di denial-of-service che colpisce un server con grandi richieste di connessioni TCP • Packet Filtering – Assicurarsi che i pacchetti che entrano in LAN sono validi ed hanno un source address che coincide effettivamente con il mittente • Rate Limiting – Limitare il livello di traffici (come ICMP) che non hanno una valida ragione di consumare banda. TCP Intercept • Questa funzionalita’ disponibile sui Router CISCO dalla versione di IOS 11.2 F, permette di proteggere server da “denial of service” e “distributed denial of service” tipo: – TCP SYN-flooding attacks TCP SYN flooding attacks • Questo attacco si verifica quando un hacker “sommerge” un server di richieste di connessioni. Quest’ultime hanno la caratteristica di avere un unreachable return address e quindi la connessione non viene mai stabilita. • Il risultato e’ che queste fallite richieste di connessioni bloccano le richieste valide verso i servizi offerti dal server TCP Intercept Software • Il software (IOS) intercetta i TCP synchronization (SYN) packets dal Client ai server interni alla LAN specificati in una apposita access-list estesa. Server WEB INTERNET Client TCP Intercept Software • Il software (IOS) stabilisce una connessione con il client per conto del server di destinazione. • Se successivamente la connessione ha successo il software stabilisce la connessione con il Server. • In questo modo tentativi di connessioni da unreachable host non raggiungeranno mai i server • Inoltre se nell’ultimo minuto le richieste di connessioni incomplete superano le 1100 vengono cancellate le piu’ vecchie e dimezzati i time out di ritrasmissione Sintassi TCP Intercept • access-list <access-list-number> {deny | permit} tcp any destination destination-wildcard • ip tcp intercept list <access-list-number> Esempio Access-List per TCP Intercept access-list 104 permit tcp any host <ssh-server1-ip> eq 22 access-list 104 permit tcp any host <ssh-server2-ip> eq 22 access-list 104 permit tcp any host <ssh-server3-ip> eq 22 access-list 104 permit tcp any host <dns-server1-ip> eq domain access-list 104 permit tcp any host <smtp-server1-ip> eq smtp access-list 104 permit tcp any host <dns-server2-ip> eq domain access-list 104 permit tcp any host <smtp-server2-ip> eq smtp access-list 104 permit tcp any host <http-server1-ip> eq www access-list 104 permit tcp any host <http-server2-ip> eq www access-list 104 permit tcp any host <webmail-ip> eq 443 access-list 104 permit tcp any host <http-server3-ip> eq www Etc …. Esempio di configurazione di TCP Intercept ip tcp intercept list 104 ip tcp intercept drop-mode random Server WEB INTERNET Client ICMP Rate Limit • Per evitare un denial of service di tipo ICMP (ping flood) si puo’ usare il CAR (Committed Access Rate) come comando per limitare questo traffico indesiderato access-list 105 permit icmp any any echo access-list 105 permit icmp any any echo-reply Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#interface atm1/0.5 point-to-point Router(config-subif)# rate-limit input access-group 105 256000 8000 8000 conform-action trasmit exceed-action drop Attenzione: ICMP Rate Limit non testato Domande?