PROXY SQUID-SQARD procédure
Tableau d évolution Version Date Description Rédacteur Approbateur 0.0 08/12/2014 Ecriture du document Thierry MARTINS 1.0 05/02/2015 1 ère version Thierry MARTINS Guide de Procédure Page 1 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 2 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 3 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 4 sur 15 CFSA-AFTEC
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 acl Safe_ports port 21 acl Safe_ports port 443 # http # ftp # https Guide de Procédure Page 5 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 6 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 7 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 8 sur 15 CFSA-AFTEC
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 Redirect http://google.fr any 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 Guide de Procédure Page 9 sur 15 CFSA-AFTEC
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». Guide de Procédure Page 10 sur 15 CFSA-AFTEC
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. Guide de Procédure Page 11 sur 15 CFSA-AFTEC
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.univtlse1.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` Guide de Procédure Page 12 sur 15 CFSA-AFTEC
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. Guide de Procédure Page 13 sur 15 CFSA-AFTEC
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 Guide de Procédure Page 14 sur 15 CFSA-AFTEC
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. Guide de Procédure Page 15 sur 15 CFSA-AFTEC