Mise en place et configuration d’un Proxy avec Squid
Sommaire
- I. Présentation
- II. Schéma
- III. Pré-requis
- IV. Configuration des deux interfaces réseaux du serveur
- V. Redémarrer le service réseau
- VI. Installation de Squid
- VII. Sauvegarde du fichier de configuration de Squid
- VIII. Créer fichier de configuration vide
- IX. Configuration du serveur Proxy [/etc/squid/squid.conf ]
- X. Redémarrez le service Squid
- XI. Les logs du serveur
- XII. Compléter la configuration
- XIII. Informations sur « url_regex »
I. Présentation
Ce serveur Proxy permet de filtrer le trafic réseau et de garder en cache les pages internet visitées par les utilisateurs dans le but de rendre la navigation internet plus rapide. Le serveur Proxy sera configuré de manière à autoriser seulement la navigation web (port 80), la navigation web sécurisée (port 443) et le transfert FTP (port 21) pour les postes clients étant uniquement dans le réseau 172.16.0.0/16.
II. Schéma
III. Pré-requis
- Un PC avec deux cartes réseaux
- Ubuntu server
- Un routeur
- Un switch
- Un ou des PC clients [Passerelle : 172.16.255.254 ; Proxy déclaré dans le navigateur]
Note : Utilisez Nano si vous n’avez pas Vim comme éditeur de texte.
IV. Configuration des deux interfaces réseaux du serveur
- Accéder au fichier :
vim /etc/network/interfaces
- Contenu à avoir dans le fichier :
# Interface de loopback auto lo iface lo inet loopback # Interface du Proxy - Coté LAN – Eth0 allow-hotplug eth0 iface eth0 inet static address 172.16.255.254 netmask 255.255.0.0 network 172.16.0.0 broadcast 172.16.255.255 dns-nameservers 8.8.8.8 # DNS Google # Interface du Proxy - Coté Internet – Eth1 allow-hotplug eth1 iface eth1 inet static address 192.168.1.254 netmask 255.255.255.0 gateway 192.168.1.1
V. Redémarrer le service réseau
/etc/init.d/networking restart
VI. Installation de Squid
apt-get install squid
VII. Sauvegarde du fichier de configuration de Squid
cd /etc/squid/squid.conf mv squid.conf squid.conf.defaut
VIII. Créer fichier de configuration vide
vim squid.conf
IX. Configuration du serveur Proxy [/etc/squid/squid.conf ]
Ce fichier est donc vide puisque nous venons de le créer. Saisissez (ou copier) les lignes suivantes en les adaptant à votre réseau.
# Squid a besoin de savoir le nom de la machine, notre machine s’appelle srv-proxy, donc : visible_hostname srv-proxy # Par défaut le proxy écoute sur ses deux interfaces, pour des soucis de sécurité il faut donc le # restreindre à écouter sur l’interface du réseau local (LAN) http_port 172.16.255.254:3128 # Changer la taille du cache de squid, changer la valeur 100 par ce que vous voulez (valeur en Mo) cache_dir ufs /var/spool/squid 100 16 256 #################################### ACL #################################### acl all src all # ACL pour autoriser/refuser tous les réseaux (Source = All) – ACL obligatoire acl lan src 172.16.0.0/16 # ACL pour autoriser/refuser le réseau 172.16.0.0 acl Safe_ports port 80 # Port HTTP = Port 'sure' acl Safe_ports port 443 # Port HTTPS = Port 'sure' acl Safe_ports port 21 # Port FTP = Port 'sure' ############################################################################ # Désactiver tous les protocoles sauf les ports sures http_access deny !Safe_ports # Désactiver l'accès pour tous les réseaux sauf les clients de l'ACL Lan # deny = refuser ; ! = sauf ; lan = nom de l’ACL à laquelle on fait référence. http_access deny !lan # Port utilisé par le Proxy : # Le port indiqué ici, devra être celui qui est précisé dans votre navigateur. http_port 3128
X. Redémarrez le service Squid
service squid restart
XI. Les logs du serveur
En ce qui concerne les logs du serveur Proxy, ils sont enregistrés dans le fichier access.log se trouvant dans /var/log/squid/
XII. Compléter la configuration
Si vous souhaitez compléter la configuration ci-dessous, voici quelques exemples possibles :
A. Bloquer certains noms de domaine
# Déclarer un fichier qui contient les domaines à bloquer acl deny_domain url_regex -i "/etc/squid/denydomain.txt" # Refuser les domaines déclarés dans le fichier définit dans l'ACL deny_domain http_access deny deny_domain
Il ne vous reste plus qu’à créer le fichier denydomain.txt et inscrire les noms de domaine que vous désirez bloquer. Ce fichier doit être rempli de la manière suivante (un par ligne) :
domaine1.fr domaine2.com
B. Demander l’authentification des utilisateurs pour pouvoir accéder au Proxy
Pour mettre en place le système d’authentification, Squid utilise la méthode htpasswd disponible avec le paquet apache2-utils, il faut donc dans un premier temps installer ce paquet :
apt-get install apache2-utils
Ensuite, il faut créer un fichier où seront déclarés les utilisateurs et leur mot de passe :
vim /etc/squid/utilisateurs
Vous pouvez désormais déclarer des utilisateurs dans ce fichier grâce à la commande suivante :
htpasswd –b /etc/squid/utilisateurs nom_utilisateur mot_de_passe # Exemple htpasswd –b /etc/squid/utilisateurs neoflow informatique
Le fichier utilisateurs s’est donc remplit sous la forme : nom_utilisateur:mot_de_passe
A noter que le mot de passe est crypté.
Avant d’indiquer à Squid qu’il doit utiliser ce système d’authentification, nous allons voir si celui fonctionne :
/usr/lib/squid/ncsa_auth /etc/squid/utilisateurs # Sur la ligne tapez le nom de votre utilisateur puis votre mot de passe (séparé par un espace) neoflow informatique
Si vous avez saisi les bonnes informations, le programme devrait vous retourner « OK », sinon « Err »
Il ne reste plus qu’à indiquer à Squid qu’il doit utiliser ce programme d’authentification, complétez le fichier squid.conf :
# On déclare le programme qui gère l'authentification : auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/utilisateurs # Grâce à cette ACL, le Proxy demandera une authentification acl utilisateurs proxy_auth REQUIRED # Refuser l'accès à tous les utilisateurs sauf ceux du fichier Utilisateurs http_access deny !utilisateurs
Pensez à redémarrer le service Squid. Pour finir, il ne vous reste plus qu’à essayer de naviguer sur internet, une fenêtre d’authentification devrait s’ouvrir.
C. Bloquer certaines extensions
Il est possible de déclarer des ACL pour bloquer différents types d’extensions et ainsi alléger le cache et la rapidité de navigation ou tout simplement pour restreindre les utilisateurs. Pour se faire :
# Bloquer les fichiers AVI : acl extension_avi url_regex –i \.avi$ http_access deny extension_avi
XIII. Informations sur « url_regex »
Lorsque l’on met cette option dans une ACL, cela permet de rechercher une chaîne de caractères contenu dans l'URL. A noter que l’url_regex est sensible à la casse (majuscules / minuscules).
Bonsoir x)
j’ai le problème suivant :
J’ai installé Squid sous Debian 7.9, mon PC sous Lubuntu 14.04.3 charge correctement tout.
Quant à mes colocataires sous Windows 10, ils ont les images qui ne chargent pas, et les vidéos n’apparaissent pas… Juste un cadre noir au lieu de la vidéo… :/
Pourriez-vous m’aider ?
Bonjour j’ai bien suivi les étapes du début à la fin sauf que je n’arrive pas à me connecter sur internet sur ma machine client à travers mon serveur proxy autant plus que ce dernier est bien configuré et est reconnu dans ma machine client (cad bien inséré l’adresse et le port de mon proxy sur le navigateur) . j’implore votre aide svp!!!
Tres bon tutoriel mais semble pour ma part incomplet. Comment les paquets seront ils relayés du port ETH1 vers le port ETH0. Voici quelques commandes supplementaires:
NB: ces commandes doivent etre executées par l’utilisateur « root »
#relayer les requêtes locales vers internet
echo 1 > /proc/sys/net/ipv4/ip_forward
#S’assurer que les requêtes du réseau local ne sortent pas avec des IPs privées
iptables -t nat -A POSTROUTING –s 172.16.0.0/16 -o eth1 -j MASQUERADE
#Rediriger les requêtes sur le port 80 vers le port 3128 du proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
merci pour l’amelioration mais comment rendre appliquer ces regles au demarrage
#S’assurer que les requêtes du réseau local ne sortent pas avec des IPs privées
iptables -t nat -A POSTROUTING –s 172.16.0.0/16 -o eth1 -j MASQUERADE
#Rediriger les requêtes sur le port 80 vers le port 3128 du proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128
une petite erreur
cd /etc/squid/squid.conf à remplacer par cd /etc/squid
un grand merci pour votre tuto
pour squid3 remplacer les …/squid/ par squid3
bonjour,
très bon tutoriel ,novice dans le monde UNIX ,je souhaiterais ajouter à mon proxy
lister les @mac des postes connectés avec l’url qui visite
et si possible faire un portail captif, car si j’ai bien compris je serai obligé de le paramétrer dans IE
Merci pour votre aide
Bonjour à tous merci pour ce tutoriel qui est bien fait malheureusement j’ai un souci concernant le HTTPS le proxy fonctionne bien dans mon fichier access.log j’aperçois bien les URL en HTTP mais quand un utilisateur souhaite se connecter sur un site en HTTPS il me dit
« Echec de la connexion sécurisé »
avec le code erreur « SSL_ERROR_RX_RECORD_TOO_LONG »
voila si quelqu’un peut me dire se qu’il se passe merci à tous
« deny » etant une commande cela pose probleme lors de l’utilisation de l’acl deny_domain
a la lecture de la ligne http_access deny deny_domain le deny de deny_domain est considéré comme une commande au lieu d’etre considéré comme le nom de l’acl.
utiliser un autre nom resoudra le probleme…
/usr/lib/squid/ncsa_auth /etc/squid/utilisateurs
# Sur la ligne tapez le nom de votre utilisateur puis votre mot de passe (séparé par un espace)
neoflow informatique
je utilise squid3
impossible de trouver ncsa_auth