Comment installer le serveur proxy Squid sur Ubuntu 20.04
Squid est une application proxy complète basée sur Linux, principalement utilisée pour le filtrage du trafic, la sécurité et les recherches DNS. Il est également utilisé pour améliorer les performances du serveur Web en mettant les ressources en cache. En termes simples, un serveur Squid est un ordinateur qui sert d’intermédiaire entre un ordinateur de bureau et Internet et qui redirige les demandes des clients entrants vers un serveur où les données sont stockées pour être plus facilement récupérées. Il prend en charge plusieurs protocoles, notamment HTTP, FTP, TLS, SSL, Internet Gopher et HTTPS.
Dans ce tutoriel, nous allons te montrer comment installer et configurer le serveur proxy Squid sur le serveur Ubuntu 20.04.
Conditions préalables
- Un serveur fonctionnant sous Ubuntu 20.04.
- Un mot de passe root est configuré sur le serveur.
Démarrage
Avant de commencer, tu dois mettre à jour tes paquets système à la dernière version. Tu peux les mettre à jour avec la commande suivante :
apt-get update -y
Une fois que tous les paquets sont mis à jour, redémarre ton système pour appliquer les changements.
Installe le Proxy Squid
Par défaut, le paquet Squid est disponible dans le dépôt par défaut d’Ubuntu 20.04. Tu peux l’installer à l’aide de la commande suivante :
apt-get install squid -y
Une fois que le Squid est installé, tu peux vérifier l’état du service Squid à l’aide de la commande suivante :
systemctl status squid
Tu devrais obtenir la sortie suivante :
? squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-08-23 12:00:24 UTC; 11s ago Docs: man:squid(8) Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS) Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS) Main PID: 49283 (squid) Tasks: 4 (limit: 2353) Memory: 16.4M CGroup: /system.slice/squid.service ??49283 /usr/sbin/squid -sYC ??49285 (squid-1) --kid squid-1 -sYC ??49287 (logfile-daemon) /var/log/squid/access.log ??49288 (pinger) Aug 23 12:00:24 ubuntu2004 squid[49285]: Max Swap size: 0 KB Aug 23 12:00:24 ubuntu2004 squid[49285]: Using Least Load store dir selection Aug 23 12:00:24 ubuntu2004 squid[49285]: Set Current Directory to /var/spool/squid Aug 23 12:00:24 ubuntu2004 squid[49285]: Finished loading MIME types and icons. Aug 23 12:00:24 ubuntu2004 squid[49285]: HTCP Disabled. Aug 23 12:00:24 ubuntu2004 squid[49285]: Pinger socket opened on FD 14 Aug 23 12:00:24 ubuntu2004 squid[49285]: Squid plugin modules loaded: 0 Aug 23 12:00:24 ubuntu2004 squid[49285]: Adaptation support is off. Aug 23 12:00:24 ubuntu2004 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9 Aug 23 12:00:25 ubuntu2004 squid[49285]: storeLateRelease: released 0 objects
Par défaut, Squid écoute sur le port 3128. Tu peux le vérifier avec la commande suivante :
netstat -plunt | grep 3128
Tu devrais voir la sortie suivante :
tcp6 0 0 :::3128 :::* LISTEN 50017/(squid-1)
Une fois que tu as terminé, tu peux passer à l’étape suivante.
Configurer l’authentification basée sur l’IP
Il existe plusieurs façons de restreindre l’accès du client à Internet. Dans cette section, nous allons configurer Squid pour qu’il s’authentifie en fonction de l’adresse IP du client.
Tu peux le faire en modifiant le fichier de configuration par défaut de Squid :
nano /etc/squid/squid.conf
Ajoute la ligne suivante au début du fichier :
acl client1 src 192.168.10.10 acl client2 src 192.168.10.11 http_access allow client1 client2
Sauvegarde et ferme le fichier lorsque tu as terminé. Puis redémarre le service Squid pour appliquer les modifications :
systemctl restart squid
Où :
- client1 et client2 est le nom qui a identifié les ordinateurs clients.
- 192.168.10.10 et 192.168.10.11 est l’adresse IP de l’ordinateur client.
Maintenant, seuls les ordinateurs configurés avec les adresses IP 192.168.10.10 et 192.168.10.11 peuvent accéder à Internet.
Configurer l’authentification basée sur l’utilisateur
Tu peux aussi configurer Squid pour qu’il s’authentifie en fonction de l’utilisateur et du mot de passe. Pour ce faire, tu dois installer le paquet Apache utils dans ton système.
Exécute la commande suivante pour installer le paquet Apache utils :
apt install apache2-utils -y
Une fois installé, crée un premier utilisateur avec la commande suivante :
htpasswd /etc/squid/passwd client1
Il te sera demandé de définir un mot de passe comme indiqué ci-dessous :
New password: Re-type new password: Adding password for user client1
Ensuite, crée un deuxième utilisateur avec la commande suivante :
htpasswd /etc/squid/passwd client2
Définis ton mot de passe comme indiqué ci-dessous :
New password: Re-type new password: Adding password for user client2
Ensuite, tu peux vérifier les deux utilisateurs à l’aide de la commande suivante :
cat /etc/squid/passwd
Tu devrais obtenir la sortie suivante :
client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/ client2:$apr1$XYxQ2npc$IW0Nqjp15O5WYCo/wCFlB0
Ensuite, ouvre le fichier de configuration par défaut de Squid :
nano /etc/squid/squid.conf
Supprime les trois premières lignes que tu as ajoutées dans la section précédente et ajoute les lignes suivantes au début du fichier :
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd acl ncsa_users proxy_auth REQUIRED http_access allow ncsa_users
Enregistre et ferme le fichier. Ensuite, redémarre le service proxy Squid pour appliquer les modifications :
systemctl restart squid
Maintenant, tu devras fournir un nom d’utilisateur et un mot de passe pour pouvoir accéder à Internet.
Configurer l’authentification combinée
Tu peux aussi configurer Squid pour authentifier un client sur la base de l’adresse IP et du nom d’utilisateur / mot de passe.
Ouvre le fichier de configuration par défaut de Squid :
nano /etc/squid/squid.conf
Trouve les lignes suivantes que tu as ajoutées dans la section précédente :
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd acl ncsa_users proxy_auth REQUIRED http_access allow ncsa_users
Et, remplace-les par les lignes suivantes :
acl client1 src 192.168.10.10 acl client2 src 192.168.10.11 auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd acl ncsa_users proxy_auth REQUIRED http_access allow client1 client2 ncsa_users
Sauvegarde et ferme le fichier lorsque tu as terminé puis redémarre le service Squid pour appliquer les modifications :
systemctl restart squid
Configurer Squid pour rendre le trafic anonyme
Ensuite, tu devras ajouter quelques règles pour masquer les adresses IP des clients des serveurs qui reçoivent le trafic de ton proxy HTTP Squid.
Tu peux le faire en modifiant le fichier de configuration par défaut de Squid :
nano /etc/squid/squid.conf
Ajoute les lignes suivantes au début du fichier :
forwarded_for off request_header_access Allow allow all request_header_access Authorization allow all request_header_access WWW-Authenticate allow all request_header_access Proxy-Authorization allow all request_header_access Proxy-Authenticate allow all request_header_access Cache-Control allow all request_header_access Content-Encoding allow all request_header_access Content-Length allow all request_header_access Content-Type allow all request_header_access Date allow all request_header_access Expires allow all request_header_access Host allow all request_header_access If-Modified-Since allow all request_header_access Last-Modified allow all request_header_access Location allow all request_header_access Pragma allow all request_header_access Accept allow all request_header_access Accept-Charset allow all request_header_access Accept-Encoding allow all request_header_access Accept-Language allow all request_header_access Content-Language allow all request_header_access Mime-Version allow all request_header_access Retry-After allow all request_header_access Title allow all request_header_access Connection allow all request_header_access Proxy-Connection allow all request_header_access User-Agent allow all request_header_access Cookie allow all request_header_access All deny all
Enregistre et ferme le fichier lorsque tu as terminé puis redémarre le service Squid pour appliquer les modifications :
systemctl restart squid
Vérifier le proxy Squid
Ensuite, tu devras définir ton serveur Proxy dans ton navigateur Web Mozilla.
Va sur le système client, ouvre le navigateur Web Mozilla, et clique sur le bouton Édition => Préférences comme indiqué ci-dessous :
Clique sur la section Paramètres réseau et clique sur les Paramètres. Tu devrais voir la page suivante :
Sélectionne le bouton radio Configuration manuelle du proxy, entre l’adresse IP de ton serveur Squid dans le champ Hôte HTTP et 3128 dans le champ Port et coche la case Utiliser ce serveur proxy pour tous les protocoles et clique sur le bouton OK pour enregistrer les paramètres.
Maintenant, ton navigateur est configuré pour naviguer sur Internet via le proxy Squid.
Pour le vérifier, tape l’URL https://www.whatismyip.com/. Il te sera demandé de fournir un nom d’utilisateur et un mot de passe comme indiqué ci-dessous :
Indique le nom d’utilisateur et le mot de passe du serveur proxy Squid que tu as créés précédemment et clique sur le bouton OK. Tu devrais voir la page suivante :
Sur la page ci-dessus, tu devrais voir l’adresse IP de ton serveur Squid au lieu de l’adresse IP de ton ordinateur client.
Conclusion
Félicitations ! Tu as réussi à installer et à configurer le serveur proxy Squid sur le serveur Ubuntu 20.04. Tu peux aussi configurer le proxy Squid pour restreindre le site Web spécifique en fonction du mot, du domaine et des IP. Pour plus d’informations, consulte la documentation officielle de Squid.