CentOS 7 : Installer et configurer le proxy Squid
Table des matières
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...
Dans un premier temps, s'assurer que le système est à jour :
Puis on installe squid :
Et voila
Le fichier de configuration de squid est le suivant /etc/squid/squid.conf.
Pour l'éditer :
Quelques lignes intéressantes du fichier :
ACL pour définir des réseaux :
Autoriser monreseau à utiliser le proxy :
Interdire reseaupirate à utiliser le proxy :
Port d'écoute de squid :
Configurer un cache de 2Go :
Utiliser 256Mo de mémoire vive pour stocker le cache :
Afficher les erreurs en français :
Il faut bien entendu autoriser le port 3128 ouvert dans le pare-feu :
On repère la zone utilisée :
Et on ouvre le port : (chez moi, la zone était public)
Si on utilise iptables :
Pour rendre squid transparent, dans le squid.conf modifier la ligne http_port ainsi :
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 :
Chez moi enp4s0 = internal et enp64s0 = external
Donc j'ajoute les règles :
Pour la redirection, on créé le fichier /etc/firewalld/direct.xml :
Sans oublier la règle MASQUERADE
Pour iptables :
Le serveur doit effectuer le routage. Crée le fichier /usr/lib/sysctl.d/routage.conf :
Y ajouter
Appliquer les modifications :
On active squid au démarrage :
Et on lance squid :
Si squid n'est pas transparent, configurer les navigateurs Internet pour utiliser un proxy.
Pour voir si les requêtes passent par squid, il suffit en root de taper
Et les accès passant par squid s'afficheront :
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
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
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.
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 -