3 581
contributi
m (rimossa dalle guide da controllare) |
|||
(34 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> | |||
# nano /etc/init.d/firebox.sh | |||
</pre> | |||
<pre> | |||
#!/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 | |||
</pre> | |||
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: | |||
<pre> | |||
# chmod +x /etc/init.d/firebox.sh | |||
</pre> | |||
e automatizzarlo: | |||
<pre> | |||
# update-rc.d firebox.sh start 20 2 3 4 5 . stop 0 6 | |||
</pre> | |||
La nostra macchina Debian è ora un gateway per tutta la rete LAN. | |||
<br/> | |||
Come ultima cosa modifichiamo il file <code>/etc/hosts</code>, aggiungendo: | |||
<pre> | |||
127.0.0.1 localhost | |||
127.0.1.1 firewall | |||
192.168.10.254 firewall gateway proxy | |||
</pre> | |||
dove al posto di “firewall” occorre mettere il nome della macchina che abbiamo scelto durante l’installazione di Debian. | |||
<br/> | |||
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. | |||
<pre> | |||
# apt-get install clamav-daemon clamav-freshclam | |||
</pre> | |||
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> | |||
# nano /etc/clamav/freshclam.conf | |||
</pre> | |||
cambiando la sezione: | |||
<pre> | |||
# Check for new database 24 times a day | |||
Checks 24 | |||
</pre> | |||
== 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. | |||
<br/><br/> | |||
Il proxy server più utilizzato nel mondo Linux è Squid, che andremo adesso ad installare sulla nostra macchina gateway: | |||
<pre> | |||
# apt-get install squid3 squidclient | |||
</pre> | |||
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> | |||
mv /etc/squid3/squid.conf /etc/squid3/squid.conf.original | |||
touch /etc/squid3/squid.conf | |||
nano /etc/squid3/squid.conf | |||
</pre> | |||
con contenuto: | |||
<pre> | |||
# 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 | |||
</pre> | |||
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. | |||
<pre> | |||
# apt-get install squidguard | |||
</pre> | |||
Quindi recuperiamo i files delle blackist, le scompattiamo in <code>/var/lib/squidguard/db/…</code> e generiamo il database delle liste: | |||
<pre> | |||
# 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 | |||
</pre> | |||
A questo punto possiamo crearci il nostro file di configurazione personalizzato per SquidGuard: | |||
<pre> | |||
# mv /etc/squid3/squidGuard.conf /etc/squid3/squidGuard.conf.original | |||
# touch /etc/squid3/squidGuard.conf | |||
# nano /etc/squid3/squidGuard.conf | |||
</pre> | |||
con contenuto: | |||
<pre> | |||
# | |||
# 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 | |||
} | |||
} | |||
</pre> | |||
Impostiamo la pagina di redirect quando viene visitato un sito bloccato: | |||
<pre> | |||
# 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 | |||
</pre> | |||
e infine decommentiamo la riga per attivare il proxy trasparente nel nostro script <code>firebox.sh</code>: | |||
<pre> | |||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | |||
</pre> | |||
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: | |||
<pre> | |||
# 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 | |||
</pre> | |||
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. | |||
<br/> | |||
Installiamo DansGuardian: | |||
<pre> | |||
# apt-get install dansguardian | |||
</pre> | |||
Il file principale di configurazione è <code>/etc/dansguardian/dansguardian.conf</code>. Apportiamovi alcune modifiche: | |||
<pre> | |||
# mv /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.original | |||
# touch /etc/dansguardian/dansguardian.conf | |||
# nano /etc/dansguardian/dansguardian.conf | |||
</pre> | |||
e diamogli questo contenuto: | |||
<pre> | |||
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 | |||
</pre> | |||
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/> | |||
Infine modifichiamo la riga in <code>firebox.sh</code> da | |||
<pre> | |||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | |||
</pre> | |||
a | |||
<pre> | |||
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080 | |||
</pre> | |||
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: [http://urlblacklist.com/?sec=download URL Blacklist]: | |||
<pre> | |||
# tar -xzf bigblacklist.tar.gz | |||
# mv blacklists /etc/dansguardian/lists | |||
# chown -R root:root /etc/dansguardian/lists | |||
</pre> | |||
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/> | |||
Per rendere attive le blacklist scaricate dobbiamo aprire i files bannedsitelist e bannedurllist e decommentare le categorie di siti che intendiamo filtrare. | |||
<br/> | |||
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 <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 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). | |||
<br/> | |||
Per rendere attive eventuali modifiche è necessario riavviare il servizio: | |||
<pre> | |||
/etc/init.d/dansguardian restart | |||
</pre> | |||
=== 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. | |||
<br/> | |||
Installiamo innanzitutto Webmin, ad esempio seguendo questa guida: [[Webmin: amministrare Debian via web]] | |||
Quindi installiamo il modulo DG Webmin dal [http://dgwebminmodule.sourceforge.net/ sito ufficiale]. | |||
<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 <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]] |
contributi