DNS e DHCP#

NethSecurity può fornire servizi DNS e DHCP a tutte le reti locali. Questa sezione è suddivisa in 5 schede:

  • DHCP e MAC bindining

  • Lease statiche

  • Lease dinamici

  • DNS

  • Record DNS

  • Scansione rete

DHCP e MAC bindining#

Questa sezione consente di abilitare e gestire un server DHCP per ogni rete locale configurata nel proprio NethSecurity. Ogni interfaccia locale è dotata di una scheda in cui è possibile abilitare il servizio facendo clic sul pulsante Modifica.

Campi disponibili:

  • MAC binding

    • Stato: abilita/disabilita la funzione di binding MAC-IP per questa interfaccia

    • Tipo: è possibile scegliere tra due tipi di binding MAC-IP:

      • Soft binding: consente agli host senza una reservation, blocca IP/MAC non corrispondenti

        Esempio: Una rete aziendale in cui i dipendenti portano frequentemente i propri dispositivi (BYOD). In questo caso, il Soft binding consente ai dispositivi senza una reservation di accedere alla rete, ma garantisce che qualsiasi dispositivo con un indirizzo IP/MAC non corrispondente venga bloccato. Questo offre flessibilità ai dipendenti mantenendo comunque un certo livello di sicurezza.

      • Strict binding: Solo gli host con una prenotazione sono consentiti, gli altri vengono bloccati

        Esempio: Una rete aziendale con politiche di sicurezza rigorose. In questo caso, il hard binding garantisce che solo i dispositivi con una reservation preconfigurata possano accedere alla rete. Questo impedisce che i dipendenti rubino un IP con autorizzazioni superiori.

  • DHCP:

    • Abilita DHCP : abilita/disabilita il servizio

    • Inizio intervallo IP : primo indirizzo IP dell’intervallo DHCP

    • Fine intervallo IP : ultimo indirizzo IP dell’intervallo DHCP

    • Tempo di lease : tempo di lease (predefinito 1 ora)

Impostazioni avanzate DHCP

Forza l'avvio del server DHCP

All’avvio, il server DHCP verifica se sono presenti altri server DHCP sulla rete. Con questa opzione disabilitata, il server DHCP non verrà attivato se ne viene rilevato un altro sulla rete. Se l’opzione di forzatura è abilitata, il server DHCP verrà avviato anche se sono presenti altri server DHCP all’interno della rete.

Opzione DHCP

È possibile dichiarare opzioni DHCP molto specifiche, cercando il campo da configurare (ad esempio, DNS passato ai client, indirizzo IP tftp e così via) e quindi specificando il valore. Il valore può anche essere un elenco di valori separati da una virgola.

Esempio per sovrascrivere il DNS passato ai client con 2 server:

  • opzione selezionata: dns-server

  • valore: 1.1.1.1,8.8.8.8

Vedere anche Opzioni personalizzate non standard per ulteriori informazioni sulle opzioni non standard.

Lease statici#

I lease statici assegnano indirizzi IP stabili e nomi host simbolici ai client DHCP. L’host viene identificato tramite il suo indirizzo MAC, gli viene assegnato un indirizzo IP fisso e viene fornito un nome host simbolico per un facile riconoscimento.

Fare clic sul pulsante Aggiungi reservation per aggiungere una nuova reservation per un dispositivo.

Campi disponibili:

  • Nome host : Nome host associato all’indirizzo IP

  • Indirizzo IP : Indirizzo IP da assegnare al MAC Address specificato. L’indirizzo IP deve essere compreso nell’intervallo DHCP.

  • Indirizzo MAC : Indirizzo MAC del dispositivo per cui si desidera effettuare la reservation

  • Nome reservation : Facoltativo, campo configurabile liberamente

Lease dinamici#

I lease dinamici rappresentano gli indirizzi IP attualmente in uso e assegnati ai dispositivi sulla rete. Questa scheda mostra tutti i lease attualmente attivi.

Configurazione predefinita#

Per impostazione predefinita, il server DHCP ha un limite di 1000 lease simultanei per prevenire attacchi DoS. Impostare l’opzione dhcpleasemax di dnsmasq per modificare il limite.

Eseguire questi comandi:

uci set dhcp.@dnsmasq[0].dhcpleasemax='2500'
uci commit dhcp
reload_config

Opzioni personalizzate non standard#

Oltre alle opzioni DHCP standard, NethSecurity consente di configurare opzioni personalizzate non standard, come l’opzione 82 (DHCP Relay Agent Information). Queste opzioni possono essere utili per configurazioni avanzate o requisiti di rete specifici.

Per impostare un’opzione personalizzata dalla riga di comando, utilizzare i seguenti comandi:

uci add_list dhcp.lan.dhcp_option='82,myvalue'
uci commit dhcp
reload_config

Le opzioni personalizzate configurate tramite la riga di comando vengono mantenute anche quando vengono apportate modifiche tramite l’interfaccia utente. Le opzioni personalizzate possono essere rimosse in modo sicuro dall’interfaccia utente.

Tuttavia, si consiglia di evitare di modificare queste opzioni personalizzate direttamente dall’interfaccia utente per prevenire comportamenti imprevisti.

DNS#

Il sistema utilizza Dnsmasq come server DNS cache downstream. Dnsmasq funziona come un nameserver locale con cache, che per impostazione predefinita inoltra le query DNS ai server DNS a monte forniti dal server DHCP delle interfacce WAN. Tuttavia, questo comportamento può essere personalizzato utilizzando le seguenti opzioni di configurazione:

  • Server di DNS forwarding: Fare clic sul pulsante Aggiungi server DNS per specificare il DNS upstream desiderato; è possibile aggiungere più server, ognuno dei quali viene gestito individualmente.

  • DNS Domain : Inserire il dominio DNS locale, assicurandosi che le query per questo dominio vengano sempre risolte localmente.

  • Log query DNS: abilitarlo se si desidera che tutte le query DNS vengano registrate dal sistema.

Server di forwarding#

È necessario configurare i forwarder solo se le interfacce WAN sono impostate con indirizzi IP statici. Se le interfacce WAN sono configurate tramite DHCP, solitamente fornito dal proprio ISP, il sistema utilizzerà automaticamente i server DNS forniti dalle interfacce WAN. I server DNS upstream configurati automaticamente possono essere trovati nel file /tmp/resolv.conf.d/resolv.conf.auto.

È possibile configurare quanto segue:

  • Specificare un singolo server DNS upstream: inserire l’indirizzo IP del server DNS desiderato nel campo designato.

  • Configurare server DNS specifici per dominio: questo consente di instradare le query per domini specifici verso server diversi.

Per una configurazione DNS orientata alla privacy utilizzando connessioni crittografate, consultare DNS over HTTPS con filtraggio per la configurazione di DNS over HTTPS (DoH).

Server DNS specifici per dominio#

Per utilizzare un server DNS personalizzato per un dominio specifico, utilizzare la seguente sintassi:

/DOMAIN/IP_ADDRESS#PORT

dove:

  • IP_ADDRESS: specificare l’indirizzo IP del server desiderato

  • PORTA: aggiungere la porta desiderata (dopo l’indirizzo IP utilizzando il carattere #).

Il valore PORT è opzionale, quindi di solito la configurazione appare semplicemente così:

/DOMAIN/IP_ADDRESS

Queste sono le principali opzioni supportate:

  • Dominio vuoto (//): corrisponde a nomi non qualificati (senza punti).

  • Dominio specifico (/google.com/): corrisponde esattamente al dominio indicato e a tutti i suoi sottodomini (ad esempio, google.com, www.google.com, drive.google.com…).

  • Dominio wildcard (*google.com/): corrisponde a qualsiasi dominio contenente «google.com» (ad esempio, google.com, www.google.com, supergoogle.com).

Esempi:

  • Inviare tutte le query per «google.com» e i suoi sottodomini a 1.2.3.4: /google.com/1.2.3.4

  • Inviare tutti i nomi non qualificati (ad esempio, «localhost») a 10.0.0.1 e tutto il resto ai server standard: //10.0.0.1

  • Inviare le query per il dominio «ad.nethserver.org» e i suoi sottodomini a 192.168.1.1 e tutto il resto ai server standard: /ad.nethserver.org/192.168.1.1

I domini più specifici hanno la precedenza su quelli meno specifici, quindi per una configurazione come questa:

  • /google.com/1.2.3.4

  • /www.google.com/2.3.4.5

NethSecurity invierà le richieste per google.com e gmail.google.com a 1.2.3.4, ma www.google.com verrà indirizzato a 2.3.4.5

Questo vale anche per i caratteri jolly: se sono definiti sia domini specifici che domini con caratteri jolly per lo stesso pattern, quello specifico ha la precedenza (ad esempio, avendo /google.com/ e /*google.com/ : il primo gestirà google.com e www.google.com, mentre il carattere jolly gestirà supergoogle.com).

Numero massimo di query DNS simultanee#

Per impostazione predefinita, dnsmasq ha un limite di 150 query DNS concorrenti per prevenire attacchi DoS. Se questo limite viene raggiunto, dnsmasq registrerà un errore e interromperà l’elaborazione di nuove query DNS fino al completamento di alcune di quelle già in corso.

In questo caso, dnsmasq registrerà un errore simile a:

May 12 09:27:23 fw1 dnsmasq[1]: Maximum number of concurrent DNS queries reached (max: 150)

Per aumentare il limite dalla CLI, eseguire i seguenti comandi:

uci set dhcp.@dnsmasq[0].dnsforwardmax=5000
uci commit dhcp
reload_config

Questa opzione non è esposta nell’interfaccia utente, ma la modifica persisterà attraverso gli aggiornamenti e non verrà sovrascritta dall’interfaccia utente.

Tempistica di aggiornamento del set di domini#

Le voci del Domain set vengono aggiornate quando dnsmasq esegue una nuova ricerca per il dominio. Quando le risposte vengono servite dalla cache locale invece di eseguire una nuova ricerca, gli indirizzi IP non vengono riaggiunti al set. Questo può causare delle interruzioni intermittenti se l’ipset scade prima che scada il TTL del DNS, oppure se la cache impedisce a dnsmasq di effettuare nuove ricerche. Si noti che Adblock può modificare il comportamento di dnsmasq e influire sull’aggiornamento del domain set.

Un job cron viene eseguito ogni 10 minuti per aggiornare tutti i set di domini, ma dipende anche dal fatto che dnsmasq esegua effettivamente le interrogazioni invece di fornire risultati memorizzati nella cache.

Per risolvere i problemi di aggiornamento del set di domini, regolare le impostazioni del TTL della cache DNS:

uci set dhcp.@dnsmasq[0].max_cache_ttl=300
uci set dhcp.@dnsmasq[0].max_ttl=300
uci commit dhcp
reload_config

Queste impostazioni garantiscono che le voci memorizzate nella cache scadano rapidamente, consentendo a dnsmasq di eseguire nuove ricerche e aggiornare correttamente i set di domini. Si noti che questa impostazione sovrascriverà il TTL predefinito fornito dai server DNS a monte. Un TTL così basso può aumentare il numero di query inviate ai server DNS a monte, il che può comportare un aumento del traffico di rete e potenziali problemi di prestazioni se i server a monte hanno limiti di frequenza o se ci sono molti client che effettuano richieste DNS frequenti. Utilizzare questa configurazione con cautela e monitorare le prestazioni del sistema dopo averla applicata.

Protezione contro il DNS Rebind#

La protezione contro il DNS Rebind è una funzionalità di sicurezza che protegge dagli attacchi di DNS rebinding. Blocca l’utilizzo di intervalli di indirizzi IP privati da parte di domini pubblici, impedendo ai siti web dannosi di manipolare i browser per effettuare richieste non autorizzate ai dispositivi della rete locale.

La protezione contro il DNS Rebind è abilitata di default su NethSecurity e solitamente non comporta ripercussioni operative. In presenza di split DNS, ovvero quando si risolvono domini pubblici con risorse interne, la protezione contro il rebind può causare problemi di risoluzione. In tali scenari, eventuali problemi possono essere individuati nel log (/var/log/messages), dove potrebbero comparire righe simili alle seguenti:

Sep 21 13:09:36 fw1 dnsmasq[1]: possible DNS-rebind attack detected: ad.nethesis.it

Nota

Per garantire la massima compatibilità e prevenire malfunzionamenti nelle installazioni migrate utilizzando lo strumento dedicato di NethServer 7.9, la Protezione DNS Rebind è disabilitata, assicurando lo stesso comportamento della versione precedente.

Come risolvere i problemi di protezione DNS rebind#

È possibile risolvere facilmente qualsiasi di questi problemi dalla CLI.

Soluzione 1: Inserire il dominio nella whitelist

Inserire il dominio specifico in una whitelist (consigliato):

uci add_list dhcp.@dnsmasq[0].rebind_domain="nethesis.it"

quindi eseguire il commit e riavviare:

uci commit dhcp
/etc/init.d/dnsmasq restart

Soluzione 2: disabilitare la protezione DNS

Disabilitare completamente la protezione contro il DNS rebind utilizzando questi comandi:

uci set dhcp.@dnsmasq[0].rebind_protection='0'
uci commit dhcp
/etc/init.d/dnsmasq restart

Come abilitare la protezione contro il DNS rebind#

Se in precedenza è stata disabilitata la protezione contro il rebind o se la configurazione deriva da una migrazione e si desidera abilitare la protezione contro il rebind, si consiglia di attivare anche il parametro rebind_localhost. Questa impostazione ha effetto esclusivamente quando la protezione contro il rebind è abilitata e consente risposte upstream da 127.0.0.0/8, essenziale per i servizi di blacklist basati su DNS. Eseguire questi comandi:

uci set dhcp.@dnsmasq[0].rebind_protection='1'
uci set dhcp.@dnsmasq[0].rebind_localhost='1'
uci commit dhcp
/etc/init.d/dnsmasq restart

Record DNS#

Il sistema può gestire record DNS locali. Quando il server esegue una ricerca DNS, prima cercherà all’interno dei record DNS locali. Se non viene trovato alcun record locale, verrà effettuata una query DNS esterna.

Nota

I record DNS locali avranno sempre la precedenza sui record provenienti dai server DNS esterni.

Fare clic sul pulsante Aggiungi record DNS per aggiungere un nuovo hostname DNS.

Campi disponibili:

  • Nome host : Nome host DNS

  • Indirizzo IP : Indirizzo IP associato al nome host

  • Nome : campo facoltativo

  • Record DNS wildcard: abilitarlo se si desidera questa risposta per qualsiasi sottodominio non già definito

Scansione rete#

Questa sezione descrive la funzionalità di scansione della rete locale. La pagina consente di eseguire la scansione di tutte le reti locali disponibili, escludendo le reti WAN. La pagina visualizza un elenco delle reti locali rilevate; ogni rete include un pulsante Scan network, la selezione di questo pulsante avvia una scansione completa della rete scelta.

Risultati della scansione#

Al termine dell’operazione, la pagina mostra una tabella con tutti gli host rilevati. Per ciascun host vengono fornite le seguenti informazioni:

  • Indirizzo IP

  • Indirizzo MAC

  • Nome host (se rilevato)

  • Descrizione

È possibile selezionare qualsiasi host dalla tabella e creare una voce di record DNS o una prenotazione DHCP utilizzando il relativo menu a tre puntini.

Nota

Il sistema supporta la scansione solo su reti con una netmask massima di 255.255.240.0 (CIDR /20), che corrisponde a un massimo di 4094 host. Le scansioni su reti più grandi non sono supportate.

DHCP Relay#

Il relay DHCP consente al firewall di inoltrare le richieste DHCP dai client a un server DHCP esterno. Il relay DHCP non è disponibile dall’interfaccia utente, ma è possibile configurarlo dal terminale utilizzando uci.

  • Sostituire <INTERFACE_NAME> con il nome dell’interfaccia su cui il relay DHCP deve ascoltare.

  • Sostituire <LOCAL_ADDR> con l’indirizzo IP del firewall su quella interfaccia.

  • Sostituire <SERVER_ADDR> con l’indirizzo IP del server DHCP upstream.

1.Create a new DHCP relay entry

uci add dhcp relay

2.Set the interface:

uci set dhcp.@relay[-1].interface='<INTERFACE_NAME>'

3.Set the local address of the firewall:

uci set dhcp.@relay[-1].local_addr='<LOCAL_ADDR>'

4.Set the upstream DHCP server address:

uci set dhcp.@relay[-1].server_addr='<SERVER_ADDR>'

5.Commit the configuration:

uci commit dhcp

6.Reload the system configuration:

reload_config

Esempio#

uci add dhcp relay
uci set dhcp.@relay[-1].interface='LAN'
uci set dhcp.@relay[-1].local_addr='192.168.1.1'
uci set dhcp.@relay[-1].server_addr='192.168.10.100'
uci commit dhcp
reload_config

Riferimenti esterni#