Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
PROXY SQUID-SQARD procédure
Squid-SquidGuard Quentin BRY Guide de Procédure Page 1 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
Tableau d’évolution
Version Date Description Rédacteur Approbateur 0.0 08/12/2014 Ecriture du document Quentin BRY Thierry
MARTINS
1.0 05/02/2015 1ère version Quentin BRY Thierry MARTINS
Squid-SquidGuard Quentin BRY Guide de Procédure Page 2 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
Sommaire
Tableau d’évolution ............................................................................................................................ 1
I) PROXY SQUID ................................................................................................................................... 3
a) Mise en place d’une adresse IP statique et iptables: .................................................................. 3
b) Installation de squid3 .................................................................................................................. 4
c) Créer acl : ..................................................................................................................................... 4
d) Fichier squid.conf ........................................................................................................................ 5
e) iptables proxy transparent .......................................................................................................... 7
II) SQUIDGUARD : ................................................................................................................................ 8
a) Ajouter des catégories dans squidguard : ................................................................................... 9
b) Redirection .................................................................................................................................. 9
c) Créer base de données : .............................................................................................................. 9
III) Whitelist .................................................................................................................................... 10
IV) Les Logs ...................................................................................................................................... 11
a) Rotation des logs ....................................................................................................................... 11
V) Automatisation de la mise à jours de la base de données de SquidGuard ................................... 12
VI) Proxy Https ................................................................................................................................ 14
Squid-SquidGuard Quentin BRY Guide de Procédure Page 3 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
I) PROXY SQUID
a) Mise en place d’une adresse IP statique et iptables:
Nano /etc/network/interfaces #eth0
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.2.162
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255
gateway 192.168.2.1
Ajout de la seconde carte (coté LAN) :
#eth1
auto eth1
allow-hotplug eth1
iface eth1 inet static
address 192.168.32.1
netmask 255.255.255.0
network 192.168.32.0
broadcast 192.168.32.255
Mettre les iptables au démarrage:
Update-rc.d network-manager remove => pour supprimer network-manager
Update-rc.d mes_iptables_vides.sh defaults
Squid-SquidGuard Quentin BRY Guide de Procédure Page 4 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
b) Installation de squid3
apt-get update & upgrade
apt-cache search squid3 & squidguard
apt-get install squid3 & squidguard
history => voir l’historique des commandes
Ou history |grep « nom de la commande »
Règles iptables => iptables –L –v
On rajoute la ligne suivante permettant d'autoriser les connexions entrantes à destination du port
3128 pour le réseau 192.168.32.0/24 dans /etc/init.d/mes_iptables_vides.sh
iptables -t filter -A INPUT -p tcp --dport 3128 -s 192.168.32.0/24 -j ACCEPT
Fichier de conf squid => /etc/squid3/squid.conf
Mv /etc/squid3/squid.conf /etc/squid3/squid.conf.origin
Enlever les commentaires du fichier squid.conf.origin =>
cat squid.conf.origin |egrep -v -e ‘^[[:blank :]]*#|^$’ > squid.conf
c) Créer acl :
Acl LAN src 192.168.32.0/24
Acl admin src 192.168.32.10
Acl blockdomain dstdomain .facebook.com .facebook.fr .nba.com
Acl blockregex url_regex jeu
http_access allow admin
http_access deny blockdomain
http_access deny blockregex
http_access allow LAN
Afficher processus :
ps –aux | grep squid
Squid-SquidGuard Quentin BRY Guide de Procédure Page 5 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
Recharger fichier squid :
service squid3 restart ou reload
Afficher fichier de log squid
tail –f /var/log/squid3/access.log
Indiquer serveur proxy mozilla etc.
Option /avancé /réseau indiquez adresse eth1 (32.254) et port 3128
Vider cache = ctrl + maj + supp
Vérifier qu’il n’est pas inscrit rc0.d rc1.d…
Logformat
Modifier fichier squid.conf.origin recherchez 4eme logformat (ctrl + w) => TAG : logformat
Changer format heure fichier de log
logformat squid %tl.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt
d) Fichier squid.conf
acl LAN src 192.168.32.0/24
acl admin src 192.168.32.10
acl blockdomain dstdomain .facebook.com .nba.com
acl blockregex url_regex jeu
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
Squid-SquidGuard Quentin BRY Guide de Procédure Page 6 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
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 CONNECT method CONNECT
http_access allow admin
http_access deny blockdomain
http_access deny blockregex
http_access allow LAN
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern. 0 20% 4320
Squid-SquidGuard Quentin BRY Guide de Procédure Page 7 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
e) iptables proxy transparent
a) iptables
iptables –t nat –A PREROUTING –i $LAN_IF –p tcp --dport 80 -j REDIRECT --to-port 3128
#PROXY
iptables -A OUTPUT -o $WAN_IF -p TCP --sport 3128 -j ACCEPT
iptables -A INPUT -i $WAN_IF -p TCP --dport 3128 -j ACCEPT
iptables -A OUTPUT -o $LAN_IF -p TCP --sport 3128 -j ACCEPT
b) squid
Ajouter transparent à coté 3128
Squid-SquidGuard Quentin BRY Guide de Procédure Page 8 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
II) SQUIDGUARD :
SquidGuard.conf et squidguard.conf.default :
Différencier 2 fichiers :
Commande :
apropos compare
diff « chemin fichier 1 » « chemin fichier 2 »
Enlever les commentaires du fichier (voir commande cat |egrep squid.conf)
Télécharger blacklist:
wget ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
Et le décompresser dans /var/lib/squidguard/db (tar –xzf)
Pour voir les noms des catégories aller dans /var/lib/squidguard/db/blacklists/global_usage
Pour localiser un programme :
Commande : wish « nom du programme »
Modifier le fichier squid.conf pour activer squidguard :
cache_dir ufs /var/spool/squid3 1024 256 256
cache_mem 128 MB
maximum_object_size 15 MB
url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf
Squid-SquidGuard Quentin BRY Guide de Procédure Page 9 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
a) Ajouter des catégories dans squidguard :
dest audio-video {
domainlist blacklists/audio-video/domains
urllist blacklists/audio-video/urls
}
En début de fichier :
Src admin {
Ip 192.168.32.20
Src LAN {
Ip 192.168.32.0/24
b) Redirection
Créer dans acl (squidguard):
LAN {
Pass !audio-video any
Redirect http://google.fr
}
Donner les droits à l’utilisateur proxy
Chown –R proxy:proxy blacklists en étant dans le chemin /var/lib/squidguard/db
c) Créer base de données :
su proxy
squidGuard –C all –d => -d pour voir les erreurs
Squid-SquidGuard Quentin BRY Guide de Procédure Page 10 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
III) Whitelist
Si je veux autoriser seulement certains sites dans un domaine bloqué, comme par exemple
youtube.com et deezer.com, vous devez créer un fichier « domains.diff dans le dossier du domaine
bloqué (ici var/lib/squidguard/db/audio-video).
Ensuite, modifier ce fichier et ajoutez-y les 2 sites à débloquer en ajoutant un tiret devant eux.
Ex : -youtube.com
-deezer.com
Ensuite, il suffit de taper la commande « squidGuard –u » pour mettre à jour les bases de données
sans toucher aux fichiers contenant les domaines.
Enfin, tapez la commande « squid3 –k reconfigure ».
Squid-SquidGuard Quentin BRY Guide de Procédure Page 11 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
IV) Les Logs
Pour squid3 : /var/log/squid3 il y a le fichier access.log qui contient les connexions des utilisateurs et
le fichier cache.log qui liste le fonctionnement du mode cache.
Pour squidGuard : /var/log/squid/ il y a le fichier SquidGuard.log qui suit les états de fonctionnement
de squidGuard et ses bases de données.
a) Rotation des logs
D’un point de vue légal, il faut stocker les fichiers de logs pendant un an.
Nous allons donc mettre en place une rotation des logs sur 366 jours (années bissextiles).
Pour cela, il faut modifier le fichier squid.conf et y ajouter la ligne suivante :
logfile_rotate 366
Ensuite, il faut effectuer une rotation des logs tous les jours, pour cela il faut créer un script dans
/root/cron.daily/ (pour tous les jours) que l’on nommera rotate.sh.
Mais pour nos tests nous allons le mettre dans /etc/init.d/ pour une rotation des logs toutes les 30
minutes.
Dans ce fichier, écrivez ceci :
squid3 –k rotate (cela permet la rotation des logs)
Il nous faut maintenant rendre ce script exécutable avec la commande « chmod 770 rotate.sh »(à
exécuter dans le dossier contenant le script).
Nous allons maintenant mettre en place la tâche planifiée dans le fichier etc/crontab/ Ajoutez la
ligne suivante :
/30 * * * * root /etc/init.d/rotate.sh
Votre rotation des logs est opérationnelle.
Squid-SquidGuard Quentin BRY Guide de Procédure Page 12 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
V) Automatisation de la mise à jours de la base de
données de SquidGuard
Pour automatiser la mise à jour des blacklists SquidGuard, il faut mettre en place le script suivant :
#!/bin/sh
# INITIALISATION DES VARIABLES
blacklisturl1=ftp://ftp.univ-
tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz
blacklistfile1=blacklists.tar.gz
blacklistdir=/var/lib/squidguard/db/
result=1
detail=""
# TELECHARGEMENT DES BLACKLISTS
cd $blacklistdir
rm $blacklistfile1
wget $blacklisturl1
# SI TELECHARGEMENT OK
if [ -f "$blacklistfile1" ]
then
# ARRET DE SQUID
/etc/init.d/squid3 stop
sleep 10
nbre_deamon=`ps aux|grep -e squid3|wc -l`
if [ $nbre_deamon -eq 1 ]
then
detail="$detail Arrêt deamon Squid3 OK.\n"
else
detail="$detail Erreur arrêt deamon Squid3.\n"
result=0
fi
# MISE EN PLACE 1ERE BLACKLIST
if [ -f "$blacklistfile1" ]
then
rm -R ./blacklists_old
mv ./blacklists ./blacklists_old
tar xvzf $blacklistfile1
detail="$detail Téléchargement fichier $blacklistfile1 OK.\n"
else
result=0
detail="$detail Erreur téléchargement fichier $blacklistfile1.\n"
fi
# GENERATION DES FICHIERS DB
/usr/bin/squidGuard -C all -d
# RECHERCHE DU NOMBRE DE FICHIER DB GENERE
find /var/lib/squidguard/db/blacklists/ -name "*.db" -print > db.txt
find /var/lib/squidguard/db/BL/ -name "*.db" -print >> db.txt
find /var/lib/squidguard/db/mylists/ -name "*.db" -print >> db.txt
nbre_DB=`cat db.txt|wc -l`
Squid-SquidGuard Quentin BRY Guide de Procédure Page 13 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
list_DB=`cat db.txt`
# RECHERCHE DU NOMBRE DE FICHIERS DB A GENERER STIPULE DANS SQUIDGUARD.CONF
nbre_DB_conf=`cat /etc/squidguard/squidGuard.conf |grep -E
"^[^#](domainlist|urllist)"
|wc -l`
# TEST ERREUR DE GENERATION FICHIERS DB
if [ $nbre_DB_conf -eq $nbre_DB ]
then
detail="$detail Génération des fichiers DB OK.\n"
else
detail="$detail Erreur de génération des fichiers DB.\n"
fi
# DROITS SUR LES FICHIERS DE BLACKLISTS
chown -R proxy:proxy $blacklistdir
# REDEMERRAGE DE SQUID
/etc/init.d/squid3 start
sleep 10
nbre_deamon=`ps aux|grep -e squid3|wc -l`
if [ $nbre_deamon -gt 1 ]
then
detail="$detail Démarrage deamon Squid3 OK.\n"
else
detail="$detail Erreur démarrage deamon Squid3.\n"
result=0
fi
nbre_deamon=`ps aux|grep -e squidGuard|wc -l`
if [ $nbre_deamon -gt 1 ]
then
detail="$detail Démarrage module SquidGuard OK.\n"
else
detail="$detail Erreur démarrage module SquidGuard.\n"
result=0
fi
Ensuite, placer ce script dans le dossier /etc/cron.daily/ pour qu’il s’exécute tous les jours.
Squid-SquidGuard Quentin BRY Guide de Procédure Page 14 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
VI) Proxy Https
Pour mettre en place le proxy HTTPS Transparent il faut recompiler squid3 en y ajoutant une
directive :
- On commence par installer les outils de compilation :
apt-get install devscripts build-essential fakeroot libssl-dev
- On télécharge ensuite les sources de squid3 :
apt-get source squid3
- On installe ensuite les dépendances pour la compilation :
apt-get build-rep squid3
- On édite les règles de compilation :
nano /debian/rules
- On rajoute la directive --enable-ssl \
- On compile ensuite squid3 : ./configure puis debuild –us –uc –b
- On installe ensuite les paquets avec dpkg -i squid3_*.deb squid3-common_*.deb
- Il nous faut ensuite générer les certificats auto-signés obligatoire pour l’utilisation de HTTPS :
On crée le dossier accueillant les certificats dans /etc/squid3 avec mkdir ssl
On se place dans le dossier /etc/squid3/ssl
On crée d’abord la clé privée : openssl genrsa -des3 -out privkey.pem 2048
On crée ensuite notre certificat CA privé :
openssl req -new -x509 -days 3650 -key privkey.pem -out cacert.pem
- Il nous faut maintenant définir les paramètres d’écoutes pour le protocole HTTPS dans
squid3, pour cela il faut rajouter, dans le fichier /etc/squid3/squid.conf la ligne :
https_port 3139 transparent cert=/etc/squid3/ssl/cacert.pem
key=/etc/squid3/ssl/privkey_noPwd.pem (tout sur la même ligne)
On redémarre ensuite squid3 : /etc/init.d/squid3 restart
Squid-SquidGuard Quentin BRY Guide de Procédure Page 15 sur 15 CFSA-AFTEC Version 1.0 – 05/02/2015 Mairie de Saint Jean de la Ruelle
Test :
Sur notre poste client, nous vérifions qu’aucun paramètre proxy n’est renseigné.
Nous essayons ensuite de nous rendre sur un site web devant étre bloqué par squidguard , par
exemple https://deezer.com.
Il faut obligatoirement accepter les erreurs de certificat puisque nous disposons seulement d’un
certificat auto-signé qui n’est donc pas légitime.
Nous constatons que nous sommes bien redirigés vers https://google.fr
Nous essayons ensuite de se rendre sur un site non bloqué par squidguard , par exemple
https://secure.fnac.com
Nous constatons que des erreurs de chargement du style CSS existent.
Pour corriger ces erreurs il faut se rendre dans les paramètres d’IE –-> Onglet avancé, puis dans le
bandeau déroulant se rendre dans la section sécurité puis décocher : Signaler les incohérences
d’adresses de certificats*
Les sites non bloqués seront donc désormais chargés correctement.