Proxy Server con filtraggio dei contenuti della navigazione: differenze tra le versioni
m (rimossa dalle guide da controllare) |
|||
(8 versioni intermedie di 4 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Squeeze}} | |||
== Introduzione == | == Introduzione == | ||
In diversi contesti di rete, si pensi ad esempio ad una rete LAN aziendale o ai laboratori informatici di scuole medie inferiori, può essere importante implementare un sistema il più possibile automatico per il controllo e il filtraggio di alcuni contenuti web considerati dall'amministratore inappropriati al contesto. Si considerino a titolo di esempio le seguenti necessità: | In diversi contesti di rete, si pensi ad esempio ad una rete LAN aziendale o ai laboratori informatici di scuole medie inferiori, può essere importante implementare un sistema il più possibile automatico per il controllo e il filtraggio di alcuni contenuti web considerati dall'amministratore inappropriati al contesto. Si considerino a titolo di esempio le seguenti necessità: | ||
Riga 57: | Riga 58: | ||
Iptables si configura generalmente costruendo degli script di regole da attivare all'avvio della macchina gateway. Le regole logiche definite al paragrafo precedente conducono alla stesura di uno script simile al seguente. | Iptables si configura generalmente costruendo degli script di regole da attivare all'avvio della macchina gateway. Le regole logiche definite al paragrafo precedente conducono alla stesura di uno script simile al seguente. | ||
<br/> | <br/> | ||
Lo script, chiamato < | Lo script, chiamato <code>firebox.sh</code>, servirà quindi per gestire il firewall tramite iptables, con funzionalità di nat (masquerade) e di forwarding. Può ovviamente essere modificato e espanso per specifiche esigenze. Creeremo e salveremo il file nella directory <code>/etc/init.d/</code>. | ||
<pre> | <pre> | ||
# nano /etc/init.d/firebox.sh | # nano /etc/init.d/firebox.sh | ||
Riga 111: | Riga 112: | ||
La nostra macchina Debian è ora un gateway per tutta la rete LAN. | La nostra macchina Debian è ora un gateway per tutta la rete LAN. | ||
<br/> | <br/> | ||
Come ultima cosa modifichiamo il file < | Come ultima cosa modifichiamo il file <code>/etc/hosts</code>, aggiungendo: | ||
<pre> | <pre> | ||
127.0.0.1 localhost | 127.0.0.1 localhost | ||
Riga 127: | Riga 128: | ||
# apt-get install clamav-daemon clamav-freshclam | # apt-get install clamav-daemon clamav-freshclam | ||
</pre> | </pre> | ||
La configurazione di ClamAV è contenuta nella directory < | La configurazione di ClamAV è contenuta nella directory <code>/etc/clamav</code>, ma per i nostri scopi sono più che sufficienti le impostazioni di default. FreshClam aggiornerà le definizioni dei virus su base oraria; se vogliamo modificare questo comportamento dobbiamo agire sul file: | ||
<pre> | <pre> | ||
# nano /etc/clamav/freshclam.conf | # nano /etc/clamav/freshclam.conf | ||
Riga 151: | Riga 152: | ||
# apt-get install squid3 squidclient | # apt-get install squid3 squidclient | ||
</pre> | </pre> | ||
Il proxy Squid si configura attraverso il suo file di configurazione < | Il proxy Squid si configura attraverso il suo file di configurazione <code>/etc/squid3/squid.conf</code>, che ora creeremo in base alle nostre esigenze: | ||
<pre> | <pre> | ||
mv /etc/squid3/squid.conf /etc/squid3/squid.conf.original | mv /etc/squid3/squid.conf /etc/squid3/squid.conf.original | ||
Riga 229: | Riga 230: | ||
# apt-get install squidguard | # apt-get install squidguard | ||
</pre> | </pre> | ||
Quindi recuperiamo i files delle blackist, le scompattiamo in < | Quindi recuperiamo i files delle blackist, le scompattiamo in <code>/var/lib/squidguard/db/…</code> e generiamo il database delle liste: | ||
<pre> | <pre> | ||
# cd /var/lib/squidguard/db/ | # cd /var/lib/squidguard/db/ | ||
# wget | # wget http://www.shallalist.de/Downloads/shallalist.tar.gz | ||
# tar xzf | # tar xzf shallalist.tar.gz | ||
# chown -R proxy:proxy blacklists | # chown -R proxy:proxy blacklists | ||
# ln -s /etc/squidguard/squidGuard.conf /etc/squid3/squidGuard.conf | # ln -s /etc/squidguard/squidGuard.conf /etc/squid3/squidGuard.conf | ||
# squidGuard -d -c /etc/squid3/squidGuard.conf -C all | # squidGuard -d -c /etc/squid3/squidGuard.conf -C all | ||
</pre> | </pre> | ||
Riga 382: | Riga 382: | ||
# chmod +x /usr/lib/cgi-bin/squidGuard.cgi | # chmod +x /usr/lib/cgi-bin/squidGuard.cgi | ||
</pre> | </pre> | ||
e infine decommentiamo la riga per attivare il proxy trasparente nel nostro script < | e infine decommentiamo la riga per attivare il proxy trasparente nel nostro script <code>firebox.sh</code>: | ||
<pre> | <pre> | ||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | ||
Riga 413: | Riga 413: | ||
# apt-get install dansguardian | # apt-get install dansguardian | ||
</pre> | </pre> | ||
Il file principale di configurazione è < | Il file principale di configurazione è <code>/etc/dansguardian/dansguardian.conf</code>. Apportiamovi alcune modifiche: | ||
<pre> | <pre> | ||
# mv /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.original | # mv /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.original | ||
Riga 477: | Riga 477: | ||
maxagechildren = 500 | maxagechildren = 500 | ||
</pre> | </pre> | ||
Da notare la riga: < | Da notare la riga: <code>contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'</code>, che dice a DansGuardian di effettuare una scansione dei files attraverso l'antivirus ClamAV, installato in precedenza. | ||
<br/> | <br/> | ||
Infine modifichiamo la riga in < | Infine modifichiamo la riga in <code>firebox.sh</code> da | ||
<pre> | <pre> | ||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | ||
Riga 496: | Riga 496: | ||
# chown -R root:root /etc/dansguardian/lists | # chown -R root:root /etc/dansguardian/lists | ||
</pre> | </pre> | ||
Così facendo abbiamo scompattato il file scaricato dentro la directory < | Così facendo abbiamo scompattato il file scaricato dentro la directory <code>/etc/dansguardian/lists</code>; verrà creata una sottodirectory chiamata blacklists contenente tutte le liste, immediatamente utilizzabili. | ||
<br/> | <br/> | ||
Per rendere attive le blacklist scaricate dobbiamo aprire i files bannedsitelist e bannedurllist e decommentare le categorie di siti che intendiamo filtrare. | Per rendere attive le blacklist scaricate dobbiamo aprire i files bannedsitelist e bannedurllist e decommentare le categorie di siti che intendiamo filtrare. | ||
Riga 507: | Riga 507: | ||
=== I filtri di DansGuardian === | === I filtri di DansGuardian === | ||
I files che permettono di agire sui filtri di DansGuardian, che in questo articolo descriveremo solo brevemente, si trovano tutti nella directory < | I files che permettono di agire sui filtri di DansGuardian, che in questo articolo descriveremo solo brevemente, si trovano tutti nella directory <code>/etc/dansguardian</code> e seguono questa convenzione: | ||
* i file che cominciano per banned si riferiscono all'azione di "negare l'accesso"; | * i file che cominciano per banned si riferiscono all'azione di "negare l'accesso"; | ||
* i file che iniziano per exception si riferiscono all'azione di "consentire l'accesso". | * i file che iniziano per exception si riferiscono all'azione di "consentire l'accesso". | ||
Riga 541: | Riga 541: | ||
Quindi installiamo il modulo DG Webmin dal [http://dgwebminmodule.sourceforge.net/ sito ufficiale]. | Quindi installiamo il modulo DG Webmin dal [http://dgwebminmodule.sourceforge.net/ sito ufficiale]. | ||
<br/> | <br/> | ||
Una volta scaricato, andiamo in ''Webmin - Webmin configuration'' e installiamo il modulo; quindi configuriamo il modulo installato, cambiando il path dell'eseguibile DansGuardian da < | Una volta scaricato, andiamo in ''Webmin - Webmin configuration'' e installiamo il modulo; quindi configuriamo il modulo installato, cambiando il path dell'eseguibile DansGuardian da <code>/sbin/dansguardian</code> a <code>/usr/sbin/dansguardian</code>. | ||
== Calamaris, il generatore di report per Squid == | |||
Analizzare i file di log di un proxy risulta essere un'operazione piuttosto tediosa; è molto più conveniente utilizzare dei software in grado di generare i report degli accessi in modo automatico, come Calamaris. L'installazione e la configurazione di tale applicativo è piuttosto semplice: | |||
<pre> | |||
# apt-get install calamaris | |||
</pre> | |||
Ad installazione completata possiamo passare alla configurazione. Per prima cosa creiamo la directory calamaris in <code>/var/www</code> e le sottodirectory daily, weekly e monthly, in cui andranno salvati rispettivamente i report giornalieri, settimanali e mensili: | |||
<pre> | |||
# mkdir -p /var/www/calamaris | |||
# mkdir -p /var/www/calamaris/daily | |||
# mkdir -p /var/www/calamaris/weekly | |||
# mkdir -p /var/www/calamaris/monthly | |||
</pre> | |||
Assegniamo i giusti permessi alle directory appena create: | |||
<pre> | |||
# cd /var/www | |||
# chown www-data:www-data -R calamaris | |||
</pre> | |||
A questo punto possiamo creare il primo report, digitando: | |||
<pre> | |||
# calamaris -a -F html /var/log/squid3/access.log > /var/www/calamaris/index.html | |||
</pre> | |||
Il report sarà visualizzabile mediante browser alla seguente URL: | |||
<pre> | |||
http://192.168.10.254/calamaris | |||
</pre> | |||
Per ricevere i report direttamente via email (oltre ad ottenere il loro salvataggio nelle dir precedentemente create), possiamo modificare come segue il file cron.conf posizionato in <code>/etc/calamaris</code>: | |||
<pre> | |||
daily:vostro.indirizzo@email.it:/var/www/calamaris/daily/index.html:both:'Squid giornaliero' | |||
weekly:vostro.indirizzo@email.it:/var/www/calamaris/weekly/index.html:both:'Squid settimanale' | |||
monthly:vostro.indirizzo@email.it:/var/www/calamaris/monthly/index.html:both:'Squid mensile' | |||
</pre> | |||
== Conclusioni == | |||
Abbiamo visto in questo articolo un sistema abbastanza completo per implementare un proxy server che funzioni anche come filtro dei contenuti web da veicolare agli utenti di una LAN. | |||
<br/> | |||
Senza addentrarci in dettagli legali, vi ricordo che è necessario che una struttura che intenda installare un sistema di controllo della navigazione si doti anche di un regolamento per la navigazione internet, affisso nella bacheca degli annunci aziendali, allegato ad ogni contratto di assunzione e preventivamente discusso con gli organi sindacali della struttura stessa. | |||
<br/> | |||
A tale scopo può essere utile considerare le linee guida del Garante per lutilizzo di posta elettronica e internet, che possiamo così riasssumere: | |||
* I datori di lavoro pubblici e privati non possono controllare la posta elettronica e la navigazione in Internet dei dipendenti, se non in casi eccezionali. Spetta al datore di lavoro definire le modalità d'uso di tali strumenti, tenendo conto dei diritti dei lavoratori e della disciplina in tema di relazioni sindacali. | |||
* Il Garante privacy, con un provvedimento generale che sarà pubblicato sulla "Gazzetta Ufficiale", fornisce concrete indicazioni in ordine all'uso dei computer sul luogo di lavoro. "La questione è particolarmente delicata - afferma il relatore Mauro Paissan - perché dall'analisi dei siti web visitati si possono trarre informazioni anche sensibili sui dipendenti e i messaggi di posta elettronica possono avere contenuti a carattere privato. Occorre prevenire usi arbitrari degli strumenti informatici aziendali e la lesione della riservatezza dei lavoratori". | |||
* L'Autorità prescrive innanzitutto ai datori di lavoro di informare con chiarezza e in modo dettagliato i lavoratori sulle modalità di utilizzo di Internet e della posta elettronica e sulla possibilità che vengano effettuati controlli. Il Garante vieta poi la lettura e la registrazione sistematica delle e-mail così come il monitoraggio sistematico delle pagine web visualizzate dal lavoratore, perché ciò realizzerebbe un controllo a distanza dell'attività lavorativa vietato dallo Statuto dei lavoratori. Viene inoltre indicata tutta una serie di misure tecnologiche e organizzative per prevenire la possibilità, prevista solo in casi limitatissimi, dell'analisi del contenuto della navigazione in Internet e dell'apertura di alcuni messaggi di posta elettronica contenenti dati necessari all'azienda. | |||
* Il provvedimento raccomanda l'adozione da parte delle aziende di un disciplinare interno, definito coinvolgendo anche le rappresentanze sindacali, nel quale siano chiaramente indicate le regole per l'uso di Internet e della posta elettronica. | |||
* Il datore di lavoro è inoltre chiamato ad adottare ogni misura in grado di prevenire il rischio di utilizzi impropri, così da ridurre controlli successivi sui lavoratori. Per quanto riguarda Internet è opportuno ad esempio: | |||
** individuare preventivamente i siti considerati correlati o meno con la prestazione lavorativa; | |||
** utilizzare filtri che prevengano determinate operazioni, quali l'accesso a siti inseriti in una sorta di black list o il download di file musicali o multimediali. | |||
{{Autori | |||
|Autore = [[Utente:Ferdybassi|Ferdybassi]] 11:22, 2 set 2012 (CEST) | |||
}} | |||
[[Categoria:Monitoraggio]] | |||
[[Categoria:Altri servizi di rete]] | |||
[[Categoria:Network tools]] | |||
[[Categoria: Proxy]] |
Versione attuale delle 07:44, 17 giu 2017
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 6 "squeeze" |
Introduzione
In diversi contesti di rete, si pensi ad esempio ad una rete LAN aziendale o ai laboratori informatici di scuole medie inferiori, può essere importante implementare un sistema il più possibile automatico per il controllo e il filtraggio di alcuni contenuti web considerati dall'amministratore inappropriati al contesto. Si considerino a titolo di esempio le seguenti necessità:
- proteggere i minori dal rischio di imbattersi in siti dedicati alla pornografia, alla violenza, al gioco d'azzardo e altro (il cosiddetto parental control);
- impedire al personale di un'azienda o di un ente di perdere tempo frequentando siti non connessi con l'attività lavorativa;
- migliorare l'utilizzo della banda disponibile, bloccando l'accesso a siti non connessi con l'attività lavorativa o la visione di filmati in streaming
Gli ingredienti che permettono di raggiungere gli obiettivi sopra elencati in una macchina Debian sono:
- un insieme di blacklist che elenchino sia i siti e le URL da bloccare o meno, sia frasi che, trovate in una pagina, facciano sì che essa sia bloccata;
- un software di filtraggio, o url rewriter, che, servendosi delle blacklist, possa dirottare una richiesta verso una pagina prestabilita, oppure lasciarla passare;
- un software proxy, che si occupi essenzialmente di ricevere le richieste dal url rewriter e ad inoltrarle verso l'esterno;
- le utility iptables, utilizzate per definire le regole che, in maniera trasparente, dirottano tutto il traffico web attraverso il proxy o il software di filtraggio, indipendentemente dalla volontà degli utenti;
- il supporto Netfilter nel kernel, necessario alle utility iptables.
Per raggiungere tutti questi obiettivi è anche necessario che la macchina Debian che configureremo sia impostata come gateway predefinito della rete LAN che vogliamo sottoporre a filtraggio. Lo schema logico di questa struttura di rete sarà quindi come il seguente:
Rete Default URL Proxy locale <--> Gateway <--> Rewriter <--> Server <--> Internet LAN Debian DansGuardian Squid \ / \___________________________________/ | Tutti questi servizi risiederanno su una singola macchina Debian
Nei capitoli seguenti analizzeremo uno per uno tutti i punti della struttura da implementare.
Prerequisiti
- Il PC che utilizzeremo come proxy dovrà avere due schede di rete installate e configurate
- Un ambiente LAMP: Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5
- Un server DNS e un server DHCP attivi: Un server DNS e DHCP su Debian
Nel resto della guida supporremo che le due schede di rete siano così configurate:
# ETHO - Connessa a LAN allow-hotplug eth0 iface eth0 inet static address 192.168.10.254 netmask 255.255.255.0 network 192.168.10.0 broadcast 192.168.10.255 dns-nameservers 8.8.4.4 8.8.8.8 # ETH1 - Connessa a INTERNET allow-hotplug eth1 iface eth1 inet dhcp
In questa configurazione, la scheda di rete collegata ad internet è impostata con il DHCP, ma ovviamente può essere utilizzato un IP statico a seconda delle esigenze. Per modificare la configurazione di rete di Debian si segua ad esempio questa guida: Come impostare indirizzi IP fissi su Debian
Installazione e configurazione di iptables
Perché la nostra Debian funzioni come gateway e instradi correttamente i pacchetti dalla nostra LAN verso internet e viceversa, abbiamo bisogno che siano abilitate le funzionalità di IP forwarding e che siano stabilite alcune regole di instradamento. Tutto questo può essere fatto grazie a iptables, il programma che consente la configurazione di netfilter, il componente del kernel Linux che permette il filtraggio (con e senza stati) dei pacchetti, la traduzione degli indirizzi di rete e di porta e altre forme di manipolazione dei pacchetti IP.
Iptables dovrebbe già essere stato installato nell'installazione base di Debian, ma per scrupolo effettuiamo un controllo:
# apt-get install iptables
Abbiamo inoltre bisogno di stabilire un insieme di regole da dettare a iptables:
- disabilitare le connessioni entranti da internet sulla scheda eth1;
- permettere l'instradamento dei pacchetti in uscita dalla LAN (scheda eth0) verso internet;
- permettere alle connessioni stabilite di ricevere i pacchetti di ritorno.
Iptables si configura generalmente costruendo degli script di regole da attivare all'avvio della macchina gateway. Le regole logiche definite al paragrafo precedente conducono alla stesura di uno script simile al seguente.
Lo script, chiamato firebox.sh
, servirà quindi per gestire il firewall tramite iptables, con funzionalità di nat (masquerade) e di forwarding. Può ovviamente essere modificato e espanso per specifiche esigenze. Creeremo e salveremo il file nella directory /etc/init.d/
.
# nano /etc/init.d/firebox.sh
#!/bin/bash ### BEGIN INIT INFO # Provides: firebox # Required-Start: $network $remote_fs $syslog # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 6 # Short-Description: firewall and routing initscript ### END INIT INFO # Pulisco eventuali catene esistenti iptables -F iptables -t nat -F # Abilito le connessioni di loopback iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i eth1 -p icmp -j ACCEPT # Accesso libero a SSH iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i eth1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth1 -m conntrack --ctstate NEW -j DROP # Regola per il proxy trasparente #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 # Abilito il forward iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # Abilito il NAT iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE iptables -A FORWARD -i eth1 -o eth1 -j REJECT # Abilito le funzioni di IP Forward echo 1 > /proc/sys/net/ipv4/ip_forward
Il mascheramento IP di Linux utilizzato nello script è un metodo per eseguire una traduzione dell'Indirizzo di Rete (in breve NAT, Network Address Translation) affinché anche macchine alle quali non è stato assegnato un indirizzo internet possano utilizzare tutti i servizi disponibili in rete, grazie ad una workstation Linux che funzioni come gateway. Tutta internet vedrà le richieste dell'intera LAN come se provenissero dalla sola macchina gateway poiché gli indirizzi IP originari dei vari client saranno stati mascherati da iptables. A questo punto non resta che salvare il file , renderlo eseguibile con il comando:
# chmod +x /etc/init.d/firebox.sh
e automatizzarlo:
# update-rc.d firebox.sh start 20 2 3 4 5 . stop 0 6
La nostra macchina Debian è ora un gateway per tutta la rete LAN.
Come ultima cosa modifichiamo il file /etc/hosts
, aggiungendo:
127.0.0.1 localhost 127.0.1.1 firewall 192.168.10.254 firewall gateway proxy
dove al posto di “firewall” occorre mettere il nome della macchina che abbiamo scelto durante l’installazione di Debian.
Riavviamo la macchina prestando attenzione ai messaggi durante il boot e testiamo la configurazione.
Scansione antivirus attraverso ClamAV
Dato che intendiamo proteggere la nostra LAN il più possibile, installeremo un antivirus, che configureremo per effettuare una scansione degli allegati scaricati dai client. L'antivirus scelto è ClamAV.
# apt-get install clamav-daemon clamav-freshclam
La configurazione di ClamAV è contenuta nella directory /etc/clamav
, ma per i nostri scopi sono più che sufficienti le impostazioni di default. FreshClam aggiornerà le definizioni dei virus su base oraria; se vogliamo modificare questo comportamento dobbiamo agire sul file:
# nano /etc/clamav/freshclam.conf
cambiando la sezione:
# Check for new database 24 times a day Checks 24
Il proxy server Squid
Un caching proxy server come Squid è un software che si interpone tra un client ed un server web, inoltrando le richieste e le risposte dall'uno all'altro:
- il client si collega al proxy invece che al server web, e gli invia delle richieste;
- il proxy a sua volta si collega al server web e inoltra la richiesta del client;
- il proxy riceve poi la risposta e la inoltra al client.
In altre parole il proxy agisce come mediatore tra un qualunque pc della rete locale e internet. Questa funzione comporta alcuni vantaggi, tra cui:
- possibilità di tenere traccia di tutte le operazioni effettuate (ad esempio di tutte le pagine web visitate), consentendo statistiche ed osservazioni dell'utilizzo della rete. Non ci si dimentichi però di operare in conformità alle norme in vigore riguardanti la privacy;
- possibilità di velocizzare la navigazione dei client, poiché il proxy server mantiene nella sua memoria cache le pagine visitate più di frequente, potendole così servire ai client in maniera più rapida.
Faremo inoltre in modo che il proxy si comporti in maniera trasparente, sollevando l'amministratore di rete da qualsiasi configurazione sulle macchine client.
Il proxy server più utilizzato nel mondo Linux è Squid, che andremo adesso ad installare sulla nostra macchina gateway:
# apt-get install squid3 squidclient
Il proxy Squid si configura attraverso il suo file di configurazione /etc/squid3/squid.conf
, che ora creeremo in base alle nostre esigenze:
mv /etc/squid3/squid.conf /etc/squid3/squid.conf.original touch /etc/squid3/squid.conf nano /etc/squid3/squid.conf
con contenuto:
# La porta di Squid http_port 3128 transparent # Se si modifica la linea seguente occorre lanciare: # squid3 -f /etc/squid3/squid.conf -z # per ricostruire la cache cache_dir ufs /var/spool/squid3 1024 256 256 # I Log cache_mgr info@miodominio.org cache_access_log /var/log/squid3/access.log common cache_log /var/log/squid3/cache.log cache_store_log /var/log/squid3/store.log cache_swap_log /var/log/squid3/cache_swap.log emulate_httpd_log on # Configuro l'autenticazione su OpenLDAP # Abilitare le righe seguenti solo se si intende utilizzare # un server LDAP per l'autenticazione degli utenti #auth_param basic program /usr/lib/squid3/squid_ldap_auth -b "ou=Users,dc=dominio,dc=local" -f "uid=%s" -h 127.0.0.1 #auth_param basic children 25 #auth_param basic realm Squid proxy Server #auth_param basic credentialsttl 2 hours # Configurazione minima raccomandata #acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 22 # SSH acl CONNECT method CONNECT # Richiedo l'autenticazione LDAP per proseguire nella navigazione #acl ldapauth proxy_auth REQUIRED #acl authenticated proxy_auth REQUIRED # Definizione delle reti acl lan_eth src 192.168.10.0/255.255.255.0 acl lan_wifi src 192.168.1.0/255.255.255.0 # Autorizzo o no la navigazione http_access allow localhost http_access allow lan_eth http_access allow lan_wifi http_access deny all # Attivo Squidguard redirect_program /usr/bin/squidGuard -c /etc/squid3/squidGuard.conf redirect_children 5 # Imposto l'hostname del Proxy server visible_hostname firewall
Il proxy così configurato non fa altro che controllare le classi degli indirizzi autorizzati alla navigazione, ma a noi serve qualcosa in più...
Il filtro SquidGuard
Cominciamo con installare SquidGuard, un programma che ci permette di filtrare i tipi di siti web autorizzati e di impostare la navigazione in funzione delle fasce orarie stabilite.
# apt-get install squidguard
Quindi recuperiamo i files delle blackist, le scompattiamo in /var/lib/squidguard/db/…
e generiamo il database delle liste:
# cd /var/lib/squidguard/db/ # wget http://www.shallalist.de/Downloads/shallalist.tar.gz # tar xzf shallalist.tar.gz # chown -R proxy:proxy blacklists # ln -s /etc/squidguard/squidGuard.conf /etc/squid3/squidGuard.conf # squidGuard -d -c /etc/squid3/squidGuard.conf -C all
A questo punto possiamo crearci il nostro file di configurazione personalizzato per SquidGuard:
# mv /etc/squid3/squidGuard.conf /etc/squid3/squidGuard.conf.original # touch /etc/squid3/squidGuard.conf # nano /etc/squid3/squidGuard.conf
con contenuto:
# # CONFIG FILE FOR SQUIDGUARD # dbhome /var/lib/squidguard/db/blacklists logdir /var/log/squid3 # # TIME RULES: # abbrev for weekdays: # s = sun, m = mon, t =tue, w = wed, h = thu, f = fri, a = sat # Definisco alcuni giorni speciali time SpecialsDays { date *.12.24 21:00 - 00:00 date *.12.25 00:00 - 05:00 date *.08.15 00:00 - 23:59 date *.01.01 00:00 - 23:59 } # Le ore lavorative time workhours { weekly mtwhf 08:30 - 19:00 } # IP dell'amministratore di rete src admin { ip 192.168.10.1 } # IP del capo src notadminbutbigboss { ip 192.168.10.253 } # Range IP dell'ufficio src workers { ip 192.168.10.0/16 } # Il resto del mondo src all { ip 172.30.0.0/16 } # Definisco le destinazioni di navigazione # appoggiandomi alle blacklist scaricate dest adults { urllist adult/urls domainlist adult/domains expressionlist adult/very_restrictive_expression } dest drogues { urllist drugs/urls domainlist drugs/domains } est phishing { urllist phishing/urls domainlist phishing/domains } dest guns { urllist marketingware/urls domainlist marketingware/domains } dest danger { urllist dangerous_material/urls domainlist dangerous_material/domains } dest gambling { urllist gambling/urls domainlist gambling/domains } dest hacking { urllist hacking/urls domainlist hacking/domains } dest lingerie { urllist lingerie/urls domainlist lingerie/domains } dest malware { urllist malware/urls domainlist malware/domains } dest sexual_education { urllist sexual_education/urls domainlist sexual_education/domains } dest social_networks { urllist social_networks/urls domainlist social_networks/domains } dest warez { urllist warez/urls domainlist warez/domains } rewrite test { s@fuck@ooops@ir s@blonde@ooops@ir s@Hot@ooops@ir s@sex@ooops@ir s@porns@ooops@ir s@bikini@ooops@ir } # Definisco le regole di navigazione # L'amministratore e il capo navigano dove vogliono # Gli uffici navigano solo in orario di lavoro, ma # non nei siti inclusi nelle blackist utilizzate # per definire le regole acl { admin { pass any } notadminbutbigboss { pass any } workers within workhours { pass !adults !drogues !phishing !guns !hacking !danger !gambling !lingerie !malware !sexual_education !social_networks !warez any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u #redirect http://192.168.10.254/stop.html } all { pass !adults !drogues !phishing !guns !hacking !danger !gambling !lingerie !malware !sexual_education !social_networks !warez any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u #redirect http://192.168.10.254/stop.html } all within SpecialsDays { pass any redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u #redirect http://192.168.10.254/stop.html } default { pass none redirect http://127.0.0.1/cgi-bin/squidGuard.cgi?clientaddr=%a&clientname=%n&clientident=%i&srcclass=%s&targetclass=%t&url=%u #redirect http://192.168.10.254/stop.html } }
Impostiamo la pagina di redirect quando viene visitato un sito bloccato:
# gunzip /usr/share/doc/squidguard/examples/squidGuard-simple.cgi.gz # mv /usr/share/doc/squidguard/examples/squidGuard-simple.cgi /usr/lib/cgi-bin/squidGuard.cgi # chmod +x /usr/lib/cgi-bin/squidGuard.cgi
e infine decommentiamo la riga per attivare il proxy trasparente nel nostro script firebox.sh
:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Riavviamo il nostro script e prepariamoci a verificarne il funzionamento. Se da un client della rete proviamo a navigare su internet, agendo sulla console del nostro gateway dovremmo vederne i log:
# tail -f /var/log/squid/access.log 1104854410.086 159 192.168.10.50 TCP_MISS/302 469 GET \ http://www.google.com/ - DIRECT/216.239.59.104 text/html 1104854410.217 128 192.168.10.50 TCP_MISS/200 1459 GET \ http://www.google.it/ - DIRECT/216.239.59.99 text/html 1104854410.397 180 192.168.10.50 TCP_MISS/200 9022 GET \ http://www.google.it/intl/it/images/logo.gif - DIRECT/216.239.59.99 image/gif 1104854415.196 200 192.168.10.50 TCP_MISS/200 1459 GET \ http://www.google.it/ - DIRECT/216.239.59.99 text/html 1104854415.271 74 192.168.10.50 TCP_REFRESH_HIT/304 235 GET \ http://www.google.it/intl/it/images/logo.gif - DIRECT/216.239.59.99 text/html
Perfetto! Il nostro proxy server è entrato correttamente in funzione.
Prime conclusioni
Abbiamo fino ad ora impostato una macchina Debian per funzionare come gateway di una rete LAN e per far girare un proxy server che sveltisca la navigazione dei client e ne registri i log. Pur essendo questa una configurazione funzionante e completa, in alcune situazioni potrebbe essere conveniente espanderla e installare anche un sistema per filtrare i contenuti della navigazione, andando oltre ai blocchi impostabili con SquidGuard. È in questi casi che torna utile una categoria di programmi chiamata URL rewriter.
DansGuardian: l'URL rewriter
Un URL rewriter è un software che si occupa di riscrivere un URL, sostituendolo con un'altro ritenuto più opportuno sulla base delle regole e dei filtri impostati. Il risultato è il dirottamento di certe richieste verso una o più pagine predefinite. Un caso tipico è quello in cui l'utente viene deviato su una pagina recante un messaggio standard del tipo "Spiacente, il sito che volevi raggiungere non sembra collegato agli interessi dell'Azienda" o qualcosa del genere.
Installiamo DansGuardian:
# apt-get install dansguardian
Il file principale di configurazione è /etc/dansguardian/dansguardian.conf
. Apportiamovi alcune modifiche:
# mv /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.original # touch /etc/dansguardian/dansguardian.conf # nano /etc/dansguardian/dansguardian.conf
e diamogli questo contenuto:
reportinglevel = 3 languagedir = '/etc/dansguardian/languages' language = 'italian' loglevel = 3 logexceptionhits = 2 logfileformat = 1 filterip = filterport = 8080 proxyip = 192.168.10.254 proxyport = 3128 accessdeniedaddress = 'http://192.168.10.254/cgi-bin/dansguardian.pl' nonstandarddelimiter = on usecustombannedimage = on custombannedimagefile = '/usr/share/dansguardian/transparent1x1.gif' filtergroups = 1 filtergroupslist = '/etc/dansguardian/lists/filtergroupslist' bannediplist = '/etc/dansguardian/lists/bannediplist' exceptioniplist = '/etc/dansguardian/lists/exceptioniplist' showweightedfound = on weightedphrasemode = 2 urlcachenumber = 1000 urlcacheage = 900 scancleancache = on phrasefiltermode = 2 preservecase = 0 hexdecodecontent = off forcequicksearch = off reverseaddresslookups = off reverseclientiplookups = off logclienthostnames = off createlistcachefiles = on maxuploadsize = -1 maxcontentfiltersize = 256 maxcontentramcachescansize = 2000 maxcontentfilecachescansize = 20000 filecachedir = '/tmp' deletedownloadedtempfiles = on initialtrickledelay = 20 trickledelay = 10 downloadmanager = '/etc/dansguardian/downloadmanagers/fancy.conf' downloadmanager = '/etc/dansguardian/downloadmanagers/default.conf' contentscanner = '/etc/dansguardian/contentscanners/clamav.conf' contentscannertimeout = 60 contentscanexceptions = off recheckreplacedurls = off forwardedfor = off usexforwardedfor = off logconnectionhandlingerrors = on logchildprocesshandling = off maxchildren = 120 minchildren = 8 minsparechildren = 4 preforkchildren = 6 maxsparechildren = 32 maxagechildren = 500
Da notare la riga: contentscanner = '/etc/dansguardian/contentscanners/clamav.conf'
, che dice a DansGuardian di effettuare una scansione dei files attraverso l'antivirus ClamAV, installato in precedenza.
Infine modifichiamo la riga in firebox.sh
da
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
a
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Lo scopo di questa modifica è fare in modo che la regola di iptables impostata all'inizio dell'articolo indirizzi ora i pacchetti verso il nostro url rewriter DansGuardian (che abbiamo infatti posto in ascolto sulla porta 8080), lasciando poi a quest'ultimo il compito di reindirizzare i pacchetti filtrati verso il proxy server.
Le blacklist
Per far funzionare al meglio il nostro DansGuardian abbiamo bisogno ancora di una cosa: un insieme di blacklist preconfezionato e diviso in categorie. Il migliore (e anche quello consigliato dagli autori di DansGuardian) è l'elenco scaricabile da URL Blacklist. Si noti che il download non è gratuito e che, prima di sottoscrivere un abbonamento, abbiamo diritto ad un solo download di prova. Purtroppo non sono a conoscenza di altre backlist compatibili con DansGuardian e altrettanto valide. Scarichiamo delle blacklists aggiornate dal sito: URL Blacklist:
# tar -xzf bigblacklist.tar.gz # mv blacklists /etc/dansguardian/lists # chown -R root:root /etc/dansguardian/lists
Così facendo abbiamo scompattato il file scaricato dentro la directory /etc/dansguardian/lists
; verrà creata una sottodirectory chiamata blacklists contenente tutte le liste, immediatamente utilizzabili.
Per rendere attive le blacklist scaricate dobbiamo aprire i files bannedsitelist e bannedurllist e decommentare le categorie di siti che intendiamo filtrare.
Già che ci siamo, apportiamo anche alcune altre modifiche ad un paio di altri files, dato che le impostazioni di default potrebbero essere trovate troppo restrittive:
- bannedextensionlist: decidiamo per quali estensioni di files vogliamo consentire il download;
- bannedmimetypelist;
- weightedphraselist: la directory /etc/dansguardian/phraselists/badwords/ contiene le liste di frasi da censurare, divise per idioma.
Adattate ognuno di questi file alle vostre esigenze e, a configurazione ultimata, riavviate DansGuardian per fargli digerire le modifiche.
I filtri di DansGuardian
I files che permettono di agire sui filtri di DansGuardian, che in questo articolo descriveremo solo brevemente, si trovano tutti nella directory /etc/dansguardian
e seguono questa convenzione:
- i file che cominciano per banned si riferiscono all'azione di "negare l'accesso";
- i file che iniziano per exception si riferiscono all'azione di "consentire l'accesso".
L'ordine in cui i file sono esaminati dal programma è il seguente:
- exceptioniplist - contiene l'elenco degli indirizzi IP che devono saltare il controllo dei contenuti (ad.es. gli indirizzi dei PC degli amministratori);
- exceptionuserlist - contiene l'elenco degli utenti che saltano il controllo di dansgardian (ad. es. gli amministratori);
- exceptionsitelist - contiene la parte terminale dei domini le cui pagine non saranno filtrate (ad. es. linux.org);
- exceptionurllist - contiene l'indirizzo di pagine di siti che non sono filtrate;
- blanket block - permette lo sblocco totale o parziale dei siti che sono indicati nei file greysitelist e greyurllist, a differenza dei file exception* il filtro è applicato;
- bannediplist - indirizzi IP dei PC che non devono avere accesso al web;
- banneduserlist - nomi degli utenti che non devono avere accesso al web;
- bannedregexpurllist - elenco delle espressioni regolari negli URL a cui negare l'accesso;
- bannedurllist - indirizzi di pagine web a cui non deve essere consentito l'accesso (serve per non bloccare un sito intero, ma solo parti di esso);
- blanket ip block - consente il blocco degli URL basati su IP;
- bannedsitelist - contiene la lista dei siti (domini) a cui non è consentito l'accesso (ad. es. sex.com);
- postupload - blocco o limite delle operazioni di upload (da impostare nel file /etc/dansguardian/dansguardian.conf);
- bannedmimetypelist - contiene la lista dei tipi MIME che saranno bloccati (è un modo eccellente per bloccare certi tipi di filmati);
- bannedextensionlist - contiene la lista delle estensioni di file da bloccare, può essere utilizzato per impedire lo scaricamento di certi "screen saver" e "hacking tools";
- exceptionphraselist - se in una pagina compare una frase indicata in questo file l'accesso è consentito (prudenza nell'utilizzare questa opzione);
- bannedphraselist - contiene la lista delle frasi negate, se in una pagina è presente una di queste frasi l'accesso è negato;
- weightedphraselist - a ogni frase è assegnato un valore positivo o negativo, nell'analisi di una pagina i valori sono sommati. Frasi che hanno a che vedere con "buoni argomenti" avranno valori negativi, con "cattivi argomenti" valori positivi. Se la somma raggiunge il naughtynesslimit (da impostare nel file di configurazione /etc/dansguardian/dansguardian.conf) l'accesso alla pagina è negato. In generale 50 è per i bambini, 100 i primi anni dell'adolescenza, 160 per i giovani adulti; i valori indicati possono servire da punto di riferimento, la sperimentazione fornirà quelli più indicati allo specifico caso.
Per mezzo del file bannedextensionlist è possibile bloccare lo scaricamento di file eseguibili (ad es. exe, mentre con il file bannedmimetypelist è possibile bloccare filmati indesiderati ad esempio video/mpeg).
Per rendere attive eventuali modifiche è necessario riavviare il servizio:
/etc/init.d/dansguardian restart
Amministrazione per via grafica delle blacklist
Una via alternativa alla modifica manuale dei file di definizione delle blacklist può essere quella di utilizzare un modulo apposito di Webmin.
Installiamo innanzitutto Webmin, ad esempio seguendo questa guida: Webmin: amministrare Debian via web
Quindi installiamo il modulo DG Webmin dal sito ufficiale.
Una volta scaricato, andiamo in Webmin - Webmin configuration e installiamo il modulo; quindi configuriamo il modulo installato, cambiando il path dell'eseguibile DansGuardian da /sbin/dansguardian
a /usr/sbin/dansguardian
.
Calamaris, il generatore di report per Squid
Analizzare i file di log di un proxy risulta essere un'operazione piuttosto tediosa; è molto più conveniente utilizzare dei software in grado di generare i report degli accessi in modo automatico, come Calamaris. L'installazione e la configurazione di tale applicativo è piuttosto semplice:
# apt-get install calamaris
Ad installazione completata possiamo passare alla configurazione. Per prima cosa creiamo la directory calamaris in /var/www
e le sottodirectory daily, weekly e monthly, in cui andranno salvati rispettivamente i report giornalieri, settimanali e mensili:
# mkdir -p /var/www/calamaris # mkdir -p /var/www/calamaris/daily # mkdir -p /var/www/calamaris/weekly # mkdir -p /var/www/calamaris/monthly
Assegniamo i giusti permessi alle directory appena create:
# cd /var/www # chown www-data:www-data -R calamaris
A questo punto possiamo creare il primo report, digitando:
# calamaris -a -F html /var/log/squid3/access.log > /var/www/calamaris/index.html
Il report sarà visualizzabile mediante browser alla seguente URL:
http://192.168.10.254/calamaris
Per ricevere i report direttamente via email (oltre ad ottenere il loro salvataggio nelle dir precedentemente create), possiamo modificare come segue il file cron.conf posizionato in /etc/calamaris
:
daily:vostro.indirizzo@email.it:/var/www/calamaris/daily/index.html:both:'Squid giornaliero' weekly:vostro.indirizzo@email.it:/var/www/calamaris/weekly/index.html:both:'Squid settimanale' monthly:vostro.indirizzo@email.it:/var/www/calamaris/monthly/index.html:both:'Squid mensile'
Conclusioni
Abbiamo visto in questo articolo un sistema abbastanza completo per implementare un proxy server che funzioni anche come filtro dei contenuti web da veicolare agli utenti di una LAN.
Senza addentrarci in dettagli legali, vi ricordo che è necessario che una struttura che intenda installare un sistema di controllo della navigazione si doti anche di un regolamento per la navigazione internet, affisso nella bacheca degli annunci aziendali, allegato ad ogni contratto di assunzione e preventivamente discusso con gli organi sindacali della struttura stessa.
A tale scopo può essere utile considerare le linee guida del Garante per lutilizzo di posta elettronica e internet, che possiamo così riasssumere:
- I datori di lavoro pubblici e privati non possono controllare la posta elettronica e la navigazione in Internet dei dipendenti, se non in casi eccezionali. Spetta al datore di lavoro definire le modalità d'uso di tali strumenti, tenendo conto dei diritti dei lavoratori e della disciplina in tema di relazioni sindacali.
- Il Garante privacy, con un provvedimento generale che sarà pubblicato sulla "Gazzetta Ufficiale", fornisce concrete indicazioni in ordine all'uso dei computer sul luogo di lavoro. "La questione è particolarmente delicata - afferma il relatore Mauro Paissan - perché dall'analisi dei siti web visitati si possono trarre informazioni anche sensibili sui dipendenti e i messaggi di posta elettronica possono avere contenuti a carattere privato. Occorre prevenire usi arbitrari degli strumenti informatici aziendali e la lesione della riservatezza dei lavoratori".
- L'Autorità prescrive innanzitutto ai datori di lavoro di informare con chiarezza e in modo dettagliato i lavoratori sulle modalità di utilizzo di Internet e della posta elettronica e sulla possibilità che vengano effettuati controlli. Il Garante vieta poi la lettura e la registrazione sistematica delle e-mail così come il monitoraggio sistematico delle pagine web visualizzate dal lavoratore, perché ciò realizzerebbe un controllo a distanza dell'attività lavorativa vietato dallo Statuto dei lavoratori. Viene inoltre indicata tutta una serie di misure tecnologiche e organizzative per prevenire la possibilità, prevista solo in casi limitatissimi, dell'analisi del contenuto della navigazione in Internet e dell'apertura di alcuni messaggi di posta elettronica contenenti dati necessari all'azienda.
- Il provvedimento raccomanda l'adozione da parte delle aziende di un disciplinare interno, definito coinvolgendo anche le rappresentanze sindacali, nel quale siano chiaramente indicate le regole per l'uso di Internet e della posta elettronica.
- Il datore di lavoro è inoltre chiamato ad adottare ogni misura in grado di prevenire il rischio di utilizzi impropri, così da ridurre controlli successivi sui lavoratori. Per quanto riguarda Internet è opportuno ad esempio:
- individuare preventivamente i siti considerati correlati o meno con la prestazione lavorativa;
- utilizzare filtri che prevengano determinate operazioni, quali l'accesso a siti inseriti in una sorta di black list o il download di file musicali o multimediali.
Guida scritta da: Ferdybassi 11:22, 2 set 2012 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |