Archives

CentOS 7 : Installer et configurer le proxy Squid

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

squid_logo







Introduction





Squid est un serveur mandataire (proxy), entièrement libre et très performant. Il est généralement utilisé dans certaines entreprises et universités pour des fonctions de filtrage d'URL ou en tant que tampon. Les pages Internet sont stockées localement ce qui évite d'aller les recharger plusieurs fois et permet d'économiser la bande passante Internet...





Installation





Dans un premier temps, s'assurer que le système est à jour :



Code BASH :
yum update




Puis on installe squid :



Code BASH :
yum install squid




Et voila :D





Configuration







Fichier de configuration





Le fichier de configuration de squid est le suivant /etc/squid/squid.conf.



Pour l'éditer :



Code BASH :
vi /etc/squid/squid.conf




Quelques lignes intéressantes du fichier :



ACL pour définir des réseaux :

Code BASH :
acl monreseau src 10.21.27.0/24




Autoriser monreseau à utiliser le proxy :

Code BASH :
http_access allow monreseau




Interdire reseaupirate à utiliser le proxy :

Code BASH :
http_access deny monreseau




Port d'écoute de squid :

Code BASH :
http_port 3128




Configurer un cache de 2Go :

Code BASH :
cache_dir ufs /var/spool/squid 2048 16 256




Utiliser 256Mo de mémoire vive pour stocker le cache :

Code BASH :
cache_mem 256 MB




Afficher les erreurs en français :

Code BASH :
error_directory /usr/share/squid/errors/fr




Après chaque modification du fichier de configuration, il faut évidemment recharger le service :



Code BASH :
systemctl reload squid






Le pare-feu





Il faut bien entendu autoriser le port 3128 ouvert dans le pare-feu :



On repère la zone utilisée :



Code BASH :
firewall-cmd --get-active-zones




Et on ouvre le port : (chez moi, la zone était public)



Code BASH :
firewall-cmd --zone=public --add-port=3128/tcp --permanent




Si on utilise iptables :



Code BASH :
 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT




Rendre Squid transparent





Pour rendre squid transparent, dans le squid.conf modifier la ligne http_port ainsi :

Code BASH :
http_port 3128 transparent




Dans mon exemple, le serveur a une interface sur le LAN (enp4s0) et une interface sur le WAN (enp64s0)



On repère la zone de notre interface côté LAN :



Code BASH :
firewall-cmd --get-active-zones


Chez moi enp4s0 = internal et enp64s0 = external



Donc j'ajoute les règles :

Code BASH :
firewall-cmd --zone=internal --add-service=http --permanent
firewall-cmd --zone=internal --add-service=https --permanent
firewall-cmd --zone=internal --add-port=3128/tcp --permanent




Pour la redirection, on créé le fichier /etc/firewalld/direct.xml :



Code XML :
<?xml version="1.0" encoding="utf-8"?>
<direct>
    <rule ipv="ipv4" table="nat" chain="PREROUTING" priority="0">-i enp4s0 -p tcp --dport 80 -j REDIRECT --to-ports 3128</rule>
</direct>




Sans oublier la règle MASQUERADE



Code BASH :
firewall-cmd --permanent --zone=external --add-masquerade








Pour iptables :

Code BASH :
iptables -t nat -A POSTROUTING -o enp64s0 -j MASQUERADE
iptables -t nat -A PREROUTING -i enp4s0 -p tcp --dport 80 -j REDIRECT --to-port 3128




Le serveur doit effectuer le routage. Crée le fichier /usr/lib/sysctl.d/routage.conf :



Code BASH :
vi /usr/lib/sysctl.d/routage.conf




Y ajouter



Code BASH :
net.ipv4.ip_forward = 1




Appliquer les modifications :



Code BASH :
sysctl -p /usr/lib/sysctl.d/routage.conf






Configurer le service





On active squid au démarrage :



Code BASH :
systemctl enable squid




Et on lance squid :

Code BASH :
 systemctl start squid




Si squid n'est pas transparent, configurer les navigateurs Internet pour utiliser un proxy.



firefox_squid





Quelques infos





Pour voir si les requêtes passent par squid, il suffit en root de taper



Code BASH :
tailf /var/log/squid/access.log




Et les accès passant par squid s'afficheront :

Code BASH :
1443102226.620    145 10.21.27.100 TCP_MISS/200 6164 GET http://www.linuxtricks.fr/pages/bienvenue-sur-linuxtricks - HIER_DIRECT/212.227.108.142 text/html
1443102226.867     55 10.21.27.100 TCP_MISS/304 339 GET http://www.linuxtricks.fr/templates/default/theme/default.css - HIER_DIRECT/212.227.108.142 -
1443102227.279     57 10.21.27.100 TCP_MISS/304 303 GET http://marjo21.linuxtricks.fr/marjo21_mini.png - HIER_DIRECT/212.227.108.142 -
1443102227.347     58 10.21.27.100 TCP_MISS/304 339 GET http://www.linuxtricks.fr/upload/icone_blogue.png - HIER_DIRECT/212.227.108.142 -
1443102227.347     54 10.21.27.100 TCP_MISS/304 339 GET http://www.linuxtricks.fr/upload/icone_wiki.png - HIER_DIRECT/212.227.108.142 -
1443102227.351     55 10.21.27.100 TCP_MISS/304 339 GET http://www.linuxtricks.fr/images/smileys/64.gif - HIER_DIRECT/212.227.108.142 -
1443102227.430     60 10.21.27.100 TCP_MISS/304 339 GET http://www.linuxtricks.fr/images/console_min.png - HIER_DIRECT/212.227.108.142 -