sabato, Marzo 21, 2026

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

Il Club Nazionale Cyberprotection annuncia i corsi di formazione.

Partecipa al sondaggio per definire un calendario formativo personalizzato Il Club Nazionale Cyberprotection potenzia la propria proposta formativa introducendo percorsi specialistici rivolti ai professionisti, con...

Noleggia una Tesla per il tuo evento ICT!

Categorie