Installer et configurer le proxy Squid sous CentOS 7




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 reseaupirate 


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 (adapter l'IP du proxy) :

Code BASH :
firewall-cmd --permanent --zone=internal --add-forward-port=port=80:proto=tcp:toaddr=10.0.0.254:toport=3128


Sans oublier la règle MASQUERADE

Code BASH :
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -I POSTROUTING -o enp64s0 -j 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.



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 -
Cette page a été vue 3564 fois