Come installare e configurare Dansguardian con filtraggio multi-gruppo e Squid con autenticazione NTLM su Debian Etch
Obiettivo e scenari d’uso
Questa procedura crea un gateway per reti piccole o medie che richiedono:
- filtraggio dei contenuti per gruppi diversi;
- proxy trasparente con autenticazione NTLM legata al dominio Active Directory;
- risoluzione DNS e DHCP locali affidabili con dnsmasq;
- gestione delle modifiche DNS dinamiche tramite resolvconf.
Requisiti minimi: una macchina Debian Etch con due schede di rete (NIC). eth0 collegata alla rete esterna (statico o dinamico) ed eth1 impostata su 192.168.1.1/24 per la rete interna.
Importante: eseguire un backup dei file di configurazione prima di ogni modifica (ad esempio cp /etc/samba/smb.conf /etc/samba/smb.conf.bak).
Prerequisiti e installazione base
- Installa Debian Etch con il sistema base.
- Installa SSH se non presente:
apt-get install ssh openssh-serverDopo aver attivato SSH puoi continuare la configurazione da remoto.
ClamAV in Etch presenta un bug che rallenta l’avvio di Dansguardian. Per aggirarlo prendiamo la versione aggiornata da backports.
Aggiungi queste righe a /etc/apt/sources.lst:
deb http://download.webmin.com/download/repository sarge contrib
deb http://www.backports.org/debian etch-backports main contrib non-freePer forzare Apt a prendere solo ClamAV da backports, crea/modifica /etc/apt/preferences con:
Package: clamav
Pin: release a=etch-backports
Pin-Priority: 999
Package: clamav-base
Pin: release a=etch-backports
Pin-Priority: 999
Package: clamav-freshclam
Pin: release a=etch-backports
Pin-Priority: 999
Package: libclamav2
Pin: release a=etch-backports
Pin-Priority: 999Aggiorna apt e installa i pacchetti necessari:
apt-get update
apt-get install debian-backports-keyring
apt-get install dnsmasq webmin squid dansguardian samba winbind krb5-user libcompress-zlib-perl resolvconf ntp ntpdateDurante l’installazione di krb5-user e samba ti verranno poste domande: le risposte sono case-sensitive. Esempi forniti in questo how-to (sostituisci EXAMPLEDOMAIN con il tuo dominio):
- Workgroup: EXAMPLEDOMAIN
- Modifica smb.conf per usare WINS da DHCP? No
- Kerberos servers for your realm: domaincontroller.EXAMPLEDOMAIN.LOCAL
- Administrative server for your Kerberos realm: domaincontroller.EXAMPLEDOMAIN.LOCAL
Per riconfigurare Kerberos dopo l’installazione:
dpkg-reconfigure krb5-configEsempi di risposte addizionali:
- Default Kerberos version 5 realm: EXAMPLEDOMAIN.LOCAL
- Does DNS contain pointers to your realm’s Kerberos Servers? Yes
Configurare resolvconf e dnsmasq
Molte connessioni Internet modificano dinamicamente i DNS (pppd, dhcp), causando problemi a Kerberos. resolvconf aiuta a mantenere coerenti i nameserver.
- Modifica /etc/resolvconf/resolv.conf.d/head e aggiungi la linea di ricerca:
search exampledomain.local- Controlla che /var/run/dnsmasq/resolv.conf contenga i nameserver corretti (sostituisci con gli IP reali):
nameserver
nameserver
nameserver - Modifica /etc/dnsmasq.conf per ottimizzare sicurezza e prestazioni:
nano -c /etc/dnsmasq.conf- Scommenta le righe 14 e 16.
- Scommenta la riga 71 e aggiungi eth0 alla fine della linea.
Nota: la funzionalità DHCP di dnsmasq è disabilitata per default; se desideri usarla, vedi le opzioni a partire dalla linea 100. Le opzioni DNS avanzate iniziano intorno alla linea 307.
Impostare il controller di dominio come server orario
Modifica /etc/ntp.conf:
nano -c /etc/ntp.confCommenta le righe da 19 a 22 e aggiungi:
server domaincontroller.exampledomain.local iburstPoi sincronizza l’orologio con il controller di dominio più avanti nella sezione Samba.
Configurare Samba e unirsi al dominio
- Esegui il backup di smb.conf e aprilo:
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
nano -c /etc/samba/smb.conf- Apporta le modifiche seguenti:
- Inserisci su linea 53: interfaces = 192.168.1.1/255.255.255.0
- Scommenta la linea 59
- Scommenta la linea 91 e modifica in: security = ads
- Scommenta le linee 204 e 205
- Prima della linea 217 aggiungi:
winbind trusted domains only = yes
realm = EXAMPLEDOMAIN.LOCAL
winbind cache time = 3600- Riavvia i servizi e sincronizza l’orario:
net time set -S domaincontroller
/etc/init.d/samba restart
/etc/init.d/winbind restart- Unisciti al dominio:
net ads join -U Administrator- Verifiche utili:
wbinfo -tOutput atteso: checking the trust secret via RPC calls succeeded
wbinfo -uElenca gli utenti del dominio.
wbinfo -gElenca i gruppi del dominio.
Configurare Dansguardian e Squid (sintesi)
Questa guida non riscrive ogni opzione di Dansguardian/Squid, ma fornisce i passi principali:
- Dansguardian tipicamente ascolta su 8080 e passa le richieste a Squid (es. 3128). Verifica le direttive negli esempi di config di Dansguardian.
- Configura Squid per il proxy trasparente e la porta che preferisci (default 3128). Assicurati che iptables NAT rediriga il traffico HTTP verso Squid.
- Per l’autenticazione NTLM con Squid, usa winbind e il helper ntlm_auth (fornito da Samba). Controlla che Squid sia compilato con il supporto per l’autenticazione negoziata.
- Configura Dansguardian per più gruppi di filtraggio creando file di regole distinti e mappando gli utenti ai gruppi di AD tramite winbind/LDAP o script di lookup.
Importante: i dettagli di configurazione variano in base alle versioni dei pacchetti. Testa ogni modifica in ambiente controllato prima di passare in produzione.
Esempi di comandi iptables per proxy trasparente (schema)
Esempio generico per redirigere traffico HTTP (porta 80) verso Squid (3128):
# Abilita forwarding
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128Personalizza le regole in base alla topologia e alle policy di sicurezza.
Criteri di accettazione
- Il server risponde ai client interni sulla rete 192.168.1.0/24.
- Gli utenti di dominio possono effettuare il login via NTLM e vengono autenticati dal proxy.
- Dansguardian applica regole di contenuto distinte per ciascun gruppo.
- DNS e orario sono sincronizzati col domain controller.
Troubleshooting e runbook rapido
Problema: wbinfo -t fallisce
- Verifica che smb.conf abbia realm e security = ads.
- Controlla /var/log/samba/log.* per errori di autenticazione.
- Assicurati che l’orologio sia sincronizzato con il domain controller.
Problema: join al dominio fallisce
- Controlla la risoluzione DNS verso il controller di dominio (nslookup/host).
- Controlla la porta 389/636 (LDAP) e 88 (Kerberos) tra server e DC.
Problema: Dansguardian impiega molto ad avviarsi
- Conferma che stai usando la versione ClamAV dai backports come indicato nella sezione Apt preferences.
Problema: autenticazione NTLM non funziona in Squid
- Assicurati che ntlm_auth sia raggiungibile e che Squid sia configurato per usare negotiate/ntlm helpers.
- Controlla i permessi del helper e l’utente con cui Squid è in esecuzione.
Quando questa soluzione non è adatta
- Reti molto grandi (centinaia di migliaia di utenti): soluzione scalabile e distribuita con appliance dedicate è preferibile.
- Requisiti di compliance molto stringenti che richiedono logging separato e conservazione a lungo termine: valutare soluzioni enterprise.
Approcci alternativi
- Filtraggio cloud-based (proxy remoto) per ridurre la complessità locale.
- Proxy autenticati via Kerberos (SPNEGO) senza NTLM se l’infrastruttura client/AD lo supporta.
- Soluzioni UTM commerciali che integrano firewall, proxy e filtraggio in un appliance.
Modelli mentali e consigli pratici
- Separazione dei ruoli: una macchina per gateway/proxy e un’altra per servizi directory evita conflitti.
- Test iterativi: applica una modifica alla volta e verifica il comportamento.
- Rollback rapido: conserva backup delle configurazioni e script per ripristino.
Checklist per ruolo
Amministratore di rete:
- Verificare configurazioni IP di eth0/eth1.
- Applicare le modifiche a smb.conf, dnsmasq.conf e ntp.conf.
- Eseguire net ads join e testare wbinfo.
Helpdesk:
- Controllare che i client ottengano DHCP/DNS corretti.
- Segnalare errori di autenticazione al team di rete con log e timestamp.
Fattobox - numeri e porte chiave
- Porta Squid (di default): 3128
- Porta HTTP: 80
- Kerberos: 88
- LDAP: 389 (LDAPS 636)
- NB: Sostituire numeri se la tua installazione usa porte non standard.
Piccola metodologia di test (mini-playbook)
- Verifica risolvibilità DNS del domain controller: ping/domaincontroller.exampledomain.local
- Sincronizza orologio: net time set -S domaincontroller
- Prova join dominio: net ads join -U Administrator
- Test autenticazione proxy con un client e verifica i log su /var/log/squid/ e /var/log/dansguardian/
Decisione rapida (flowchart)
default
flowchart TD
A[Inizio: client non naviga] --> B{DNS risolve?}
B -- No --> C[Controlla /var/run/dnsmasq/resolv.conf e resolvconf]
B -- Sì --> D{Traffico HTTP raggiunge proxy?}
D -- No --> E[Controlla iptables PREROUTING e port forwarding]
D -- Sì --> F{Autenticazione richiesta?}
F -- Sì --> G[Verifica wbinfo, ntlm_auth, winbind]
F -- No --> H[Controlla regole Dansguardian e liste di blocco]
C --> I[Applica correzioni e retest]
E --> I
G --> I
H --> I
I --> Z[Fine]1-line glossary
- Dansguardian: filtro contenuti per HTTP/HTTPS basato su regole e liste.
- Squid: proxy caching HTTP con supporto per autenticazione e ACL.
- NTLM: protocollo di autenticazione Microsoft usato in ambienti Windows.
- dnsmasq: resolver DNS e server DHCP leggero per reti locali.
- resolvconf: gestore dinamico dei file resolv.conf.
- winbind: servizio Samba che integra utenti/gruppi AD sul sistema Linux.
Riepilogo finale
Questa guida fornisce i passi principali per installare e integrare Dansguardian, Squid con NTLM, dnsmasq e Samba/winbind su Debian Etch. Applica le modifiche gradualmente, testa ogni componente e mantieni backup delle configurazioni. Per ambienti più grandi o requisiti enterprise, considera soluzioni dedicate o commerciali.
Note:
- Sostituisci tutti i placeholder di dominio e indirizzi IP con i valori della tua rete.
- Mantieni aggiornate le password e verifica i permessi dei file di configurazione.