Blocklist

In fase di sviluppo Leggere le avvertenze In fase di sviluppo

Spesso è necessario negare l'accesso a determinati siti web:

Creare la blocklist

Una blocklist è null'altro che un (lungo...) elenco di domini ed URL che non si vogliono utilizzare. In genere si parte da liste pubbliche, milioni di siti, a cui si aggiungono (piccole) liste personalizzate.

In genere sono presenti in molti file, spesso chiamati domains, contenenti siti classificati per categoria (nota 1):

vv@vv-i7-buster:~/Scaricati/Squidguard/List$ cat domains
1mvtlr31p7rkkwnptynz1hdvsj.com
lr3a94rqrohsi9e5zx5m.mbservicesyorkshire.co.uk
membership.authxkwlr3orasbfol1ypzzq1budnetflix.com
safety.microsoft.com.yrywixr.anjyniqatkcdehiyblr369rgq.science
wap.sklr321.com
[...]

Personalmente preferisco usare più liste, da fonti diverse, scaricate dopo una ricerca con parole chiave tipo "Squid blacklist".

Elimino quindi gli elenchi a mio parere non rilevanti (per esempio: cura della casa, uffici governativi, ricerca di lavoro, traduzioni, webmail...). Questo è il passaggio più lungo e noioso.

La fusione dei file e l'eliminazione dei duplicati richiede su una macchina Linux pochi comandi (nota 2):

vv@vv-i7-buster:~/Scaricati/Squidguard/List$ find . -name domains -exec cat {} >> realy_big_domains \;
vv@vv-i7-buster:~/Scaricati/Squidguard/List$ sort realy_big_domains | uniq > domains

vv@vv-i7-buster:~/Scaricati/Squidguard/List$ lS -lh
[...]
-rw-r--r-- 1 vv vv 84M lug 16 17:12 domains
-rw-r--r-- 1 vv vv 399M lug 16 17:11 realy_big_domains

vv@vv-i7-buster:~/Scaricati/Squidguard/List$ wc -l domains
3935121 domains

A volte potrebbe essere utile eliminare da questi file i soli indiizzi IP

vv@vv-i7-buster:~/Scaricati/Squidguard/List$ grep -v '\([0-9]\+\.\)\{3\}[0-9]\+' domains > newdomain

Attiviamo i filtri

Per filtrare la navigazione web occorre installare squidguard e relative blocklist.

root@proxy:~# apt install squidguard squidguard-doc
root@proxy:~# cp /etc/squidguard/squidGuard.conf /etc/squidguard/squidGuard.conf.originale

Copiamo i file con la blocklist sopra creata:

root@proxy:~# cp domains /var/lib/squidguard/db

A volte aggiungo liste personalizzate con la stessa struttura sopra vista, da modificare manualmente alla bisogna:

 root@proxy:~# ll /var/lib/squidguard/db/
totale 193000
-rw-r--r-- 1 proxy proxy 61436837 ott 16 10:23 domains
-rw-r--r-- 1 proxy proxy 8205     ott 16 11:10 GreppiBAD
-rw-r--r-- 1 proxy proxy 1058     ott 16 10:26 GreppiGOOD
-rw-r--r-- 1 proxy proxy 1885     ott 16 10:26 MsGOOD

Configuriamo squidGuard:

root@proxy:~# nano /etc/squidguard/squidGuard.conf

dbhome /var/lib/squidguard/db
logdir /var/log/squidguard
dest good1 { domainlist GreppiGOOD }
# log verbose pass.log }

dest good2 { domainlist MsGOOD }
# log verbose pass.log }

dest bad1 { domainlist domains
            log verbose block.log }

dest bad2 { domainlist GreppiBAD
            log block.log }

acl { default {
                pass good1 good2 !bad1 !bad2 !in-addr all
                redirect http://localhost } }

Creiamo il database, una sorta di compilazione in formato binario, piuttosto lenta:

root@proxy:~# squidGuard -b -C domains -d

root@proxy:~# ll /var/lib/squidguard/db/
totale 193000
-rw-r--r-- 1 proxy proxy  61436837 ott 18 10:23 domains
-rw-r--r-- 1 root  root  136167424 ott 18 10:59 domains.db
-rw-r--r-- 1 proxy proxy      8205 ott 18 11:10 GreppiBAD
-rw-r--r-- 1 proxy proxy      1058 ott 18 10:26 GreppiGOOD
-rw-r--r-- 1 proxy proxy      1885 ott 18 10:26 MsGOOD

Si noti che tutti i file devono appartenere all'utente e al groppo proxy:

root@proxy:/var/lib/squidguard# chown proxy:proxy /var/lib/squidguard/db -R

Attiviamo l'url rewrite, modificando il file squid.conf alla riga 4776 (circa):

root@proxy:~# nano /etc/squid/squid.conf -c

url_rewrite_program /usr/bin/squidGuard

root@proxy:~# systemctl restart squid.service # Nota 3

Leggere con attenzione la parte finale del file di log, per rilevare eventuali errori:

root@proxy:~# tail /var/log/squidguard/squidGuard.log

2020-10-16 11:18:40 [2123] INFO: New setting: dbhome: /var/lib/squidguard/db
2020-10-16 11:18:40 [2123] INFO: New setting: logdir: /var/log/squidguard
2020-10-16 11:18:40 [2123] init domainlist /var/lib/squidguard/db/GreppiGOOD
2020-10-16 11:18:40 [2123] init domainlist /var/lib/squidguard/db/MsGOOD
2020-10-16 11:18:40 [2123] init domainlist /var/lib/squidguard/db/domains
2020-10-16 11:18:40 [2123] INFO: loading dbfile /var/lib/squidguard/db/domains.db
2020-10-16 11:18:40 [2123] init domainlist /var/lib/squidguard/db/GreppiBAD
2020-10-16 11:18:40 [2123] INFO: squidGuard 1.6.0 started (1603012720.145)
2020-10-16 11:18:40 [2123] INFO: squidGuard ready for requests (1603012720.146)

Proviamo a navigare su un sito proibito http e/o http osservando i file di log, in particolare:

root@proxy:~# tail /var/log/squidguard/block.log -f

2020-10-16 11:18:43 [2122] Request(default/bad1/-) googleadservices.com:443 192.168.10.10 - CONNECT REDIRECT
2020-10-16 11:18:44 [2122] Request(default/bad1/-) googlesyndication.com:443 192.168.10.10 - CONNECT REDIRECT
2020-10-16 11:18:44 [2123] Request(default/bad1/-) www.google-analytics.com:443 192.168.10.10 - CONNECT REDIRECT
2020-10-16 11:24:42 [2122] Request(default/bad2/-) adblockplus.org:443 192.168.10.10 - CONNECT REDIRECT

Note

  1. Spesso sono presenti anche file urls e expression, contenenti rispettivamente indirizzi di pagine e frasi chiavi. A causa dell'uso sempre più massiccio di https tali file sono praticamente inutili
  2. Consiglio l'uso di una macchina veloce, in genere si tratta di elenchi di diversi milioni di siti
  3. Se si modificano i soli file domain NON compilati è sufficiente systemctl reload squid.service, molto più veloce


Data di creazione di questa pagina: ottobre 2020
Ultima modifica: 17 ottobre 2020


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima