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 :

Vérifie le proxy de Squid

Clique sur la section Paramètres réseau et clique sur les Paramètres. Tu devrais voir la page suivante :

Configuration du serveur proxy

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 :

Authentifie-toi auprès du serveur proxy

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 :

Site Web d'Axxess via un proxy Squid

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.

Vous aimerez aussi...