Squid, Dansguardian, Report

Squid

configurazione

Modificare in /etc/squid/squid.conf

visible_hostname srv-scuolax

auth_param basic program /usr/lib/squid/ldap_auth -v 3 -b ou=People,dc=isi,dc=lan srv-scuolax

external_acl_type ldap_group %LOGIN  /usr/lib/squid/squid_ldap_group \
-v 3 -b ou=Groups,dc=isi,dc=lan -B ou=People,dc=isi,dc=lan  -f \
"(&(memberUid=%v)(objectClass=posixGroup)(cn=%g))"  srv-scuolax

Il nome del server con cui si sostituirà srv-scuolax dovrà essere risolvibile, ci si assicuri pertanto che sia inserito in /etc/hosts.

Si accerti anche che le seguenti direttive siano presenti:

http_port 3128
access_log /var/log/squid/access.log
cache_dir ufs /var/spool/squid 3000 16 256
  • cache_dir limita la dimensione della cache a 3 Gb
  • access_log definisce dove verranno scritti i log. E` indispensabile se si intende utilizzare Sarg.

Recentemente abbiamo modificato alcuni percorsi di sistema relativi a squid e alle directory contenenti i report. Di seguito ci limiteremo a fornire le istruzioni per aggiornare la configurazione di squid alla nuova versione. Vi suggeriamo di leggere l’approfondimento relativo disponibile qui.

mkdir -p /home/var/log/squid && chown proxy.proxy /home/var/log/squid
mkdir -p /home/var/spool/squid && chown proxy.proxy /home/var/spool/squid

/etc/init.d/squid stop

rm -rf /var/spool/squid
ln -s /home/var/spool/squid /var/spool/squid

mv /var/log/squid/* /home/var/log/squid/ && rm -r /var/log/squid
ln -s /home/var/log/squid /var/log/squid

/etc/init.d/squid start
/etc/init.d/sysklogd restart

Rotazione dei log

Esigenze di legge ci portano a conservare i log per un periodo di almeno cinque anni. Per questa ragione sostituiamo al contenuto di /etc/logrotate.d/squid quanto segue

#
#       Logrotate fragment for squid.
#
/var/log/squid/*.log {
        monthly
        compress
        delaycompress
        rotate 60
        missingok
        nocreate
        sharedscripts
        prerotate
                test ! -x /usr/sbin/sarg-reports || /usr/sbin/sarg-reports monthly
        endscript
        postrotate
                test ! -e /var/run/squid.pid || /usr/sbin/squid -k rotate
        endscript
}

Dansguardian

Potete vedere alcuni esercizi nel laboratorio su DansGuardian.

Le modifiche da apportare al fine di configurazione /etc/dansguardian/dansguardian.conf sono modeste:

language = 'italian'
# the port that DansGuardian listens to.
filterport = 8128

# the ip of the proxy (default is the loopback - i.e. this server)
proxyip = 127.0.0.1

# the port DansGuardian connects to proxy on
proxyport = 3128

# accessdeniedaddress is the address of your web server to which the cgi
# dansguardian reporting script was copied
# Do NOT change from the default if you are not using the cgi.
#
accessdeniedaddress = 'http://localhost/cgi-bin/dansguardian.pl'

è inoltre possibile, non indispensabile, attivare il filtro antivirus. Nella distribuzione si troverà già incluso il supporto per ClamAV.

virusscan = on

# OPTION: virusengine
# Set the embedded virus scan engine to be used
virusengine = 'clamav'

Si può dunque scegliere di disattivare la feature impostando la direttiva

virusscan = off

Prima di attivare DansGuardian, come si evince dal suo contenuto, è indispensabile rimuovere la seguente riga (localizzata di solito ad inizio file):

UNCONFIGURED - Please remove this line after configuration

Chi volesse modificare le varie tipologie di filtraggio, troverà indispensabile il file /etc/dansguardian/dansguardianf1.conf

Per ulteriori informazioni su dansguardian e le tipologie di filtraggio: http://dansguardian.org/

SARG

Per utilizzare SARG, utile strumento di interpretazione dei logs di accesso di squid, è necessario assicurarsi che squid sia configurato per scrivere i propri log in /var/log/squid/access.log. Ci si accerti quindi che in /etc/squid/squid.conf sia presente la direttiva seguente ed in caso contrario la si aggiunga

access_log /var/log/squid/access.log

Grazie a SARG è possibile generare report in formato html parteno dai log di squid.

Configurazione

** Lingua **

La lingua usata di default nei log generati è inglese. Se si desiderasse sostituirla quella italiana, basterà sostituire in /etc/squid/sarg.conf la direttiva language English con language Italian.

** Destinazione Report **

Dato che i file di configurazione di default prevedono che i report vengano generati in /var/www/squid-reports/, per rispettare la nuova struttura ISI <path_home_var>, che posiziona i report in /home/var/reports/, modifichiamo i file /etc/squid/sarg.conf e /etc/squid/sarg-reports.conf impostando nel primo

output_dir /home/var/reports/squid-reports

e nel secondo

HTMLOUT=/home/var/reports/squid-reports

Generazione dei report schedulata tramite crontab

Di default, la creazione schedulata dei report( giornalieri, settimanali, mensili) viene garantita dalle seguenti script aggiunte da sarg

/etc/cron.daily/sarg
/etc/cron.weekly/sarg
/etc/cron.monthly/sarg

Il cui codice, molto elementare, altro non fa che avviare “sarg-reports” e passargli il periodo di tempo di cui generare i log

/usr/sbin/sarg-reports monthly

Per semplificarne ulteriormente la configurazione, abbiamo preferito rimuovere le script aggiunte da sarg schedulando i processi di generazione dei report nel file di cron ISI /etc/cron.d/isi

rm /etc/cron.*/sarg

Il contenuto del file /etc/cron.d/isi risultante è il seguente

#### Sarg reports
00 08-18/1 * * * /usr/sbin/sarg-reports today
00 00 * * * /usr/sbin/sarg-reports daily
00 01 * * 1 /usr/sbin/sarg-reports weekly
30 02 1 * * /usr/sbin/sarg-reports monthly

#### create nautilus links
00 04 * * *    root /usr/sbin/isi-gnome-menu -a &>/dev/null

#### start daily backup
00 23 * * *    root /usr/sbin/isi-backup &>/dev/null

Dglog

cos’è

dglog è un utilissimo perl-script che permette di analizzare comodamente i logs generati da dansguardian. Con questo utile strumento sarà possibile, ad esempio, elencare tutti i contenuti web negati/permessi ad un particolare utente. Una volta configurato, dglog sarà raggiungibile direttamente dall’interfaccia web, nella sezione navigazione/log. Se dglog viene configurato sul firewall che non ha installato isi-web, dglog sarà raggiungibile puntando a

http://<IP SERVER>/cgi-bin/dglog/dglog.pl

Configurazione dglog

Creare il file di configurazione

cd /etc/isi
cp dglog.conf.pl.sample dglog.conf.pl

Rendere eseguibile il cgi-script dglog.pl

chmod +x /usr/lib/cgi-bin/dglog/dglog.pl

Verifica

Per una rapida verifica basterà puntare con il proprio browser al seguente URL:

http://<IP SERVER>/cgi-bin/dglog/dglog.pl

MRTG

Grazie a MRTG potremo tenere sempre sotto controllo il traffico di rete dei nostri server.

installazione

apt-get -y install mrtg mrtg-contrib librrds-perl snmpd snmp

Configurazione

Modifichiamo /etc/snmp/snmpd.conf lanciando

sed -i 's|com2sec paranoid   default         public|#com2sec paranoid  default         public|g' /etc/snmp/snmpd.conf
sed -i 's|com2sec paranoid  default         public|#com2sec paranoid  default         public|g' /etc/snmp/snmpd.conf
sed -i 's|#com2sec readonly  default         public|com2sec readonly  127.0.0.1        public|g' /etc/snmp/snmpd.conf

e restartiamo il servizio snmpd

/etc/init.d/snmpd restart

Creiamo quindi la directory in cui verranno generati i nostri log

mkdir -p /home/var/reports/mrtg

Generiamo il file di configurazione /etc/mrtg.cfg

cfgmaker --global "WorkDir: /home/var/reports/mrtg" --global "Options[_]: growright,bits" --ifref=name public@localhost --output=/etc/mrtg.cfg

creiamo l’index

indexmaker --clicktext --title="Statistiche $(hostname)" --output=/home/var/reports/mrtg/index.html /etc/mrtg.cfg

E lanciamo la generazione dei report

# Generate report
if [ -d /var/lock/mrtg ]; then
    if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then
    env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1
    fi
else
    mkdir /var/lock/mrtg
fi

ACL di default

Di recente è stata apportata qualche modifica al file acl.conf di default. Tra le modifiche effettuate, sono state aggiunte le impostazioni dei permessi anche per il nuovo percorso dei report /home/var/reports. Se non ancora fatto, è possibile applicare alla propria /home/var/reports lo schema di acl ISI con

isi-perms reports

Configurare i clientXP per passare da squid

Affinchè le macchine XP vengano correttamente configurate, in fase di logon, per passare attraverso dansguardian, modificare /etc/isi/logon.conf impostando le seguenti direttive di logon

### WinSet sezione 'proxy'
ProxyServer          = 192.168.1.222:8128    # DansGuardian
ProxyServer[admins]  = 192.168.1.222:3128    # Squid (FW permettendo)
#ProxyOverride        = www.XXX.XXX,<local>

Configurare apt dei client per passare da squid

Affinchè le macchine debian/ubuntu possano passare il firewall occorre creare un account apposito ed istruire apt di usare quello per evitare di essere bloccato dal firewall che blocca appunto la porta 80.

Apt-get legge un file di configurazione,

  1. /etc/apt/apt.conf o un qualunque file della directory
  2. etc/apt/apt.conf.d/

E` sufficiente mettere in questo file la istruzione:

Acquire::http::Proxy "http://user:pwd@ip_squid_box:3128";

ed aggiungere un utente allo scopo con il comando (sostituire xxx):

isi-adduser -s 'apt;squid;proxy;admins;;;xxx'

Configurare Gnome per usare un proxy

La configurazione di gnome per l’utilizzo del proxy avviene tramite la configurazione di gconf di cui si può trovare una introduzione qui

In buona sostanza questi comandi lanciati come root dovrebbero bastare:

gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
    --type bool --set /system/http_proxy/use_http_proxy false
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
    --type string --set /system/http_proxy/host "http://newproxy.mydomain.org/"
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory \
    --type string --set /system/http_proxy/port 3128
echo "http_proxy="http://ip_of_my_proxy:3128/" >> /etc/environment

Queste righe scrivono il valore obbligatorio che deve avere il proxy. Questo funziona automaticamnete per il browser di deafult di gnome (epiphany) non per firefox che va ancora impostato di usare il default di sistema. Per questo scopo la cosa forse più efficace è di creare un profilo di default (~/.mozilla/firefox) e di copiarlo in /etc/skel.

PAC e WPAD

Un modo forse più interessante di risolvere il problema sarebbe usando il protocollo WPAD su DNS, in tal caso la configurazione del browser viene fatta da una configurazione javascript che potrebbe essere generata da interfaccia web... cercasi sponsor!