martedì, Dicembre 3, 2024

Cisco, ACL, discriminazione pacchetto UDP, interfaccia interna

AreaNetworking.it
AreaNetworking.ithttps://www.areanetworking.it
AreaNetworking.it è tra i principali e più storici media italiani del settore ICT. Nato nel 2003 per opera di Federico Lagni, l'attività del gruppo è sia online - con il portale rivolto a figure professionali ICT (IT Manager, CTO, Security Specialist, Datacenter Engineer, etc) - sia offline con l'organizzazione delle più importanti conferenze italiane su temi tecnologici.
<Marco> Buongiorno a tutti!
<Marco> esiste il modo per discriminare un pachetto UDP che è stato generato dall’interno (esempio: DNS request)
<Marco> senza usare le reflective
<Samuele> vuoi filtrarlo?
<Marco> allora per TCP si usa ESTABLISHED
<Marco> e quindi discrimino le connessioni partite dall’interno
<Marco> ma per UDP
<Marco> come si fa?
<Marco> senza dover ricorrere alla ACL riflesse
<Marco> avete idea?
<Samuele> tu vuoi fare in modo che la richiesta DNS sia possibile solo dall’interno?
<Marckalex> io non ho capito cosa devi o stai tentando di fare
<Marco> allora
<Marco> se si crea una ACL e la si mette in ingresso
<Marco> questa di default droppa tutto
<Marco> quindi se io mando un UDP non avrò mai la risposta
<Marco> giusto?
<Marckalex> si
<Marckalex> ho capito
<Marckalex> la risposta è abbastanza semplice
<Marckalex> basta leggere le feature del corso delle relase degli IOS
<Marckalex> un IOS plus crea l’ACL di ritorno automaticamente
<Marco> sicuro?
<Marco> perche io ho un plus
<Marckalex> lo faccio tutti i giorni
<Marco> ma non lo fa
<Marckalex> che ACL usi?
<Marco> ip access-list extended pippo
<Marckalex> ecco, ext name vanno benissimo
<Marco> si ma non mi fa quello che dici
<Marckalex> questo è un problema differente… io ti dico che in un contesto corretto funziona così
<Marco> System image file is “flash:c837-k9o3sy6-mz.123-11.T8.bin”
<Marckalex> in quella ci sta
<Marco> che strano
<Marco> guarda qua
<Marco> Extended IP access list ipv4in
<Marco> 10 permit tcp any any established (88 matches)
<Marco> 20 permit tcp any any eq 22
<Marco> quasta è posta su dialer 1 in
<Marco> nessuna limitazione in uscita
<Marckalex> sono solo quelle due righe?
<Marco> così il DNS mi dovrebbe funzionare?
<Marco> e per esempio adesso sto provando
<Marco> però così mi dovrebbe funzionare la richiesta DNS
<Samuele> penso di no
<Marco> giusto?
<Samuele> la richiesta DNS è UDP
<Samuele> il trasferimento di zona è TCP
<Marco> la risposta è abbastanza semplice
<Marco> basta leggere le feature del corso delle relase degli IOS
<Marco> un IOS plus crea l’ACL di ritorno automaticamente
<Marco> infatti non mi funziona
<Samuele> con le ACL non lo so, ma netfilter riesce a creare regole dinamiche di ritorno dei pacchetti
<Samuele> anche su particolari protocolli UDP
<Samuele> come ad esempio TFTP e DNS
<Samuele> utilizzando semplicemente established (questo perchè il controllo della ricezione dei pacchetti viene fatto a layer 7)
<Marco> <Samuele>: con iptables funziona
<Samuele> chissà se anche IOS supporta established per i servizi UDP “conosciuti”
<Marco> è per questo che ho ripreso in mano la conf del router
<Marco> #ping www.google.it
<Marco> Translating “www.google.it”…domain server (151.99.125.2) (151.99.125.3)
<Marco> Translating “www.google.it”…domain server (151.99.125.2) (151.99.125.3)
<Marco> Translating “www.google.it”…domain server (151.99.125.2) (151.99.125.3)
<Marco> Marclakex: ci sei ancora ?
<Marckalex> si
<Samuele> ma se a quella ACL aggiungi un 30 permit UDP any any eq 53 ?
<Marco> sì così funziona
<Marco> :)
<Samuele> quindi crea automaticamente la regola di ritorno
<Marco> aggiungi un 30 permit UDP any eq 53 any
<Marckalex> ovvio che se una request che nasce dall’outside deve entrave verso un server interno devi aprire la porta
<Marco> perche il source è primo
<Marco> ma no
<Marco> la richiesta è dall’interno
<Samuele> giusto Catalyst
<Marckalex> che vuol dire?
<Marco> allora il mio router ha l’ACL
<Marco> e dal mio router che ho fatto ping
<Marckalex> se tu chiedi al DNS di risolvere il nome in IP via 53 UDP
<Marckalex> tu non hai bisogno di nulla
<Marco> evidentemente si
<Marco> perche con quella ACL
<Marco> non funziona
<Marco> io esco ma non mi torna indietro niente
<Marco> perchè input droppa
<Marckalex> non so cosa dirti… io ho un’ACL sul router di casa mia composta da 450 entry e manco una del tipo che dici tu
<Marco> sto solo dicutendo del perche il router non riconosce che la richiesta parte dal interno
<Marco> il dubbio mi è venuto smanettando con iptables
<Marco> dove una semplice entry funziona per tutto
<Marckalex> io e l’opensource non siamo amici
<Marco> ok, ci sta
<Marco> ma il punto di vista mio è questo:
<Marco> perchè non riesco a fare in modo che l’ACL riconosca il traffico generato dall’interno
<Marco> e lo fa passare
<Samuele> ma faglielo capire applicando quell’ACL soltanto all’interfaccia interna
<Marco> -A fw_eth0_in -m state –state RELATED,ESTABLISHED -j ACCEPT
<Marco> questa discrimina tutto su iptables
<Marco> scusa Samuele
<Marco> spiegati meglio
<Samuele> crea un’ACL per l’interfaccia interna e una per l’interfaccia esterna
<Marco> l’ACL ipv4in sta sul dialer per il traffico in
<Samuele> magari non è il metodo più pulito
<Samuele> non lavoro molto con le ACL ma cmq se è vero ciò che dice Marckalex
<Marco> Samuele: io il problema l’ho risolto
<Samuele> e sembra vero visto la prova che hai fatto prima
<Samuele> qual è il problema?
<Marco> perche sulla out del dialer ho messo un reflective
<Samuele> non ho capito
<Marco> che creava al volo una entry per il traffico in
<Marco> ma questo è un discorso diverso
<Marco> su Cisco per il traffico TCP si usa ESTABLISHED
<Marco> non riesco a trovare l’equivalente per UDP e ICMP
<Marco> mentre su iptables basta la stringa -m state –state RELATED,ESTABLISHED -j ACCEPT
<Marco> sono riuscito a spiegarmi un po’ meglio?
<Samuele> penso che sia “automatico”
<Samuele> in quanto le ACL estese possono anche controllare lo stato della sessione
<Samuele> ma è un mio pensiero personale
<Samuele> può benissimo non essere così
<Marco> il fatto che con quella ACL
<Marco> non funziona
<Marco> io esco con il pachetto UDP ma non ricevo la risposta
<Samuele> scusa ma aggiungendo la riga che ti ho detto prima, riesci a risolvere i nomi?
<Marco> si si
<Samuele> e allora è automatico.
<Samuele> ovvero automaticamente il pacchetto di risposta viene fatto passare
<Samuele> e non dalle 2 entry che hai messo tu prima di quella che ti ho dato io
<Samuele> perchè quelle riguardano i protocolli TCP
<Marco> ma allora anche tu mi potresti mandare dei pachetti UDP su qualsiasi porta
<Samuele> di conseguenza lo fa qualcun’altro
<Samuele> e quel qualcun’altro non può essere che IOS
<Marco> basta che parti dalla porta 53
<Samuele> “immagino”
<Samuele> no
<Marco> eh si
<Samuele> basta che arrivi alla porta 53
<Samuele> è diverso
<Samuele> vabbè che poi
<Marco> aspetta, solo un secondo
<Samuele> dhcp client ha come prt src 53 anche lui mi pare
<Samuele> toccherebbe guarda l’RFC, aspetta
<Marco> allora se io metto un ACL del tipo: permit UDP any eq 53 any
<Marco> tu se setti nmap che parta dalla porta 53
<Marco> mi entri su tutte le porte in UDP
<Marco> ci sei?
<Samuele> no
<Samuele> 1 perchè non mi ricordo se la porta src di una request DNS è la 53 o se è >1024
<Samuele> 2) non entri su tutte le porte UDP
<Marckalex> bootps è l’unica che serve
<Samuele> ma casomai solo sulla porta 53
<Samuele> bootps = porta dhcp che è 67 o 68?
<Marco> va beh
<Marco> facciamo cosi
<Marco> allora questa regola permit UDP any eq 53 any
<Samuele> devi cercare di capire un attimo meglio porta src e porta dst
<Samuele> sappi che nel 95% dei casi le porte src sono > 1024
<Samuele> e le dest (se non si usa qualcosa tipo rpc portmap etc) sono sempre fisse e scelte dell’admin
<Marco> allora anche se io faccessi
<Marco> permit UDP any eq 53 any lt 1024
<Marco> dove dico permetti l’ingresso dei pachetti UDP con sorgente la porta 53 e destinazione inferiore alla 1024
<Samuele> allora ricapitoliamo Marco
<Marco> tu sei comunque in grado di vedermi le piume 1024 porte
<Samuele> che ci stiamo confondendo qui.
<Marco> :)
<Samuele> la porta src è la porta che il client usa per creare il socket verso di te
<Samuele> un socket è un qualcosa con 2 IP e 2 porte
<Marco> sai cosa
<Marco> aspe
<Samuele> ipsrc, portasrc, ipdest, portadst
<Marco> aspetta
<Marco> io sono il client
<Samuele> questo significa che se 192.168.0.2
<Marco> aspetta
<Samuele> vuole collegarsi al server DNS 192.168.0.4
<Marco> fermati
<Samuele> fammi finire
<Samuele> il client si connette a 192.168.0.4 sulla porta 53 UDP
<Samuele> quindi la porta dst è la porta che tu devi raggiungere.
<Samuele> è chiaro questo?
<Marco> Samuele: so come funziona
<Samuele> allora non ti ho capito prima io
<Marco> ma non era quello il problema
<Marco> allora
<Marco> io sono il client
<Marco> e ho un firewall
<Marco> te sei in server
<Marco> ci sei fino adesso?
<Samuele> si
<Marco> ok
<Samuele> presumo che il firewall sia il tuo default gateway.
<Marco> il mio firewall ha solo una regola posta in ingresso
<Marco> si
<Marco> quindi ho solo una regola da Internet verso di me
<Samuele> di qual è la regola?
<Samuele> affinchè non possa sbagliare a capire.
<Marco> Extended IP access list ipv4in
<Marco> 10 permit tcp any any established (1281 matches)
<Marco> 20 permit tcp any any eq 22
<Marco> qui permetto ingresso dei dati per connessioni TCP create e stabilite
<Marco> e ingresso per ssh
<Samuele> dove permetti ai client come uscire?
<Marco> tutto aperto
<Samuele> non ti funziona il DNS
<Marco> allora, il dialer e quello che si connette a Internet
<Samuele> perchè tu come regola di ritorno hai il protocollo TCP
<Samuele> cmq per DNS la porta src è 53
<Samuele> mmh.. no, non è vero
<Samuele> boh non mi ricordo
<Samuele> e non mi va di far partire Ethereal
<Marco> si, il server ascolta alla 53
<Samuele> se ti va a te, sniffa una request DNS e vedi
<Samuele> se il server ascolta 53
<Samuele> non significa che il client usi la 53
<Marco> esatto
<Samuele> essendo UDP potrebbe benissimo non usarla
<Samuele> e avere 0
<Marco> ok
<Samuele> fai prima a far partire Ethereal
<Samuele> o metti in debug il router
<Samuele> e vedi
<Marco> ma io tutto questo lo so
<Marco> la mia domanda era come faccio a riconoscere il traffico UDP di ritorno da Internet generato da me
<Marco> perchè non esiste una cosa del tipo: permit UDP any any established
<Samuele> scusa, telefono..

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie