Recherche de site Web

Comment créer un proxy HTTP à l’aide de Squid sur CentOS 7/8


Les proxys Web existent depuis un certain temps maintenant et ont été utilisés par des millions d’utilisateurs dans le monde entier. Ils ont un large éventail d’objectifs, le plus populaire étant l’anonymat en ligne, mais il existe d’autres façons de tirer parti des proxys Web. Voici quelques idées :

  • Anonymat en ligne
  • Améliorer la sécurité en ligne
  • Améliorer les temps de chargement
  • Bloquer le trafic malveillant
  • Enregistrez votre activité en ligne
  • Pour contourner les restrictions régionales
  • Dans certains cas, cela peut réduire l’utilisation de la bande passante

Comment fonctionne le serveur proxy

Le serveur proxy est un ordinateur qui sert d’intermédiaire entre le client et d’autres serveurs à partir desquels le client peut demander des ressources. Un exemple simple est que lorsqu’un client effectue des requêtes en ligne (par exemple pour ouvrir une page Web), il se connecte d’abord au serveur proxy.

Le serveur proxy vérifie ensuite son cache de disque local et si les données s’y trouvent, il renverra les données au client, s’il n’est pas mis en cache, il effectuera la demande au nom du client en utilisant l’adresse IP du proxy (différente de celle des clients), puis renverra les données au client. Le serveur proxy essaiera de mettre en cache les nouvelles données et les utilisera pour les futures requêtes effectuées sur le même serveur.

Qu’est-ce que Squid Proxy ?

Squid est un proxy web qui a utilisé mon large éventail d’organisations. Il est souvent utilisé comme proxy de mise en cache et améliore les temps de réponse et réduit l’utilisation de la bande passante.

Pour les besoins de cet article, je vais installer Squid sur un VPS Linode CentOS 7 et l’utiliser comme serveur proxy HTTP.

Comment installer Squid sur CentOS 7/8

Avant de commencer, vous devez savoir que Squid n’a pas de configuration minimale requise, mais la quantité d’utilisation de la RAM peut varier en fonction des clients naviguant sur Internet via le serveur proxy.

Squid est inclus dans le référentiel de base et l’installation est donc simple et directe. Avant de l’installer, assurez-vous toutefois que vos paquets sont à jour en cours d’exécution.

# yum -y update

Procédez à l’installation de squid, démarrez-le et activez-le au démarrage du système à l’aide des commandes suivantes.

# yum -y install squid
systemctl start squid
systemctl  enable squid

À ce stade, votre proxy web Squid doit déjà être en cours d’exécution et vous pouvez vérifier l’état du service.

# systemctl status squid
Exemple de sortie
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

Voici quelques emplacements de fichiers importants que vous devez connaître :

  • Fichier de configuration de Squid : /etc/squid/squid.conf
  • Journal d’accès à Squid : /var/log/squid/access.log
  • Journal du cache Squid : /var/log/squid/cache.log

Un fichier de configuration squid.conf minimum (sans commentaires) ressemble à ceci :

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Configuration de Squid en tant que proxy HTTP

Ici, nous allons vous montrer comment configurer squid en tant que proxy HTTP en utilisant uniquement l’adresse IP du client pour l’authentification.

Ajouter des listes de contrôle d’accès Squid

Si vous souhaitez autoriser l’adresse IP à accéder au Web via votre nouveau serveur proxy, vous devrez ajouter une nouvelle ligne ACL (liste de contrôle d’accès) dans le fichier de configuration.

# vim /etc/squid/squid.conf

La ligne que vous devez ajouter est la suivante :

acl localnet src XX.XX.XX.XX

Où XX.XX.XX.XX est l’adresse IP réelle du client que vous souhaitez ajouter. La ligne doit être ajoutée au début du fichier où les ACL sont définies. Il est recommandé d’ajouter un commentaire à côté de l’ACL qui décrira qui utilise cette adresse IP.

Il est important de noter que si Squid est situé en dehors de votre réseau local, vous devez ajouter l’adresse IP publique du client.

Vous devrez redémarrer Squid pour que les nouvelles modifications puissent prendre effet.

# systemctl  restart squid

Ouvrir les ports proxy Squid

Comme vous l’avez peut-être vu dans le fichier de configuration, seuls certains ports sont autorisés pour la connexion. Vous pouvez en ajouter d’autres en modifiant le fichier de configuration.

acl Safe_ports port XXX

Où XXX est le port réel que vous souhaitez charger. Encore une fois, c’est une bonne idée de laisser un commentaire à côté qui décrira à quoi va servir le port.

Pour que les modifications prennent effet, vous devrez redémarrer squid une fois de plus.

# systemctl  restart squid

Authentification du client proxy Squid

Vous voudrez probablement que vos utilisateurs s’authentifient avant d’utiliser le proxy. À cette fin, vous pouvez activer l’authentification HTTP de base. Il est facile et rapide à configurer.

Tout d’abord, vous aurez besoin d’installer httpd-tools.

# yum -y install httpd-tools

Créons maintenant un fichier qui stockera plus tard le nom d’utilisateur pour l’authentification. Squid s’exécute avec l’utilisateur « squid », le fichier doit donc appartenir à cet utilisateur.

# touch /etc/squid/passwd
chown squid: /etc/squid/passwd

Nous allons maintenant créer un nouvel utilisateur appelé « proxyclient » et configurer son mot de passe.

# htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

Maintenant, pour configurer l’authentification, ouvrez le fichier de configuration.

# vim /etc/squid/squid.conf

Après les listes de contrôle d’accès des ports, ajoutez les lignes suivantes :

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Enregistrez le fichier et redémarrez squid afin que les nouvelles modifications puissent prendre effet :

# systemctl restart squid

Bloquer des sites Web sur Squid Proxy

Enfin, nous allons créer une dernière ACL qui nous aidera à bloquer les sites Web indésirables. Tout d’abord, créez le fichier qui stockera les sites sur liste noire.

# touch /etc/squid/blacklisted_sites.acl

Vous pouvez ajouter certains domaines que vous souhaitez bloquer. Par exemple:

.badsite1.com
.badsite2.com

Le point suivant indique à squid de bloquer toutes les références à ces sites, y compris www.badsite1, subsite.badsite1.com, etc.

Ouvrez maintenant le fichier de configuration de Squid.

# vim /etc/squid/squid.conf

Juste après les ACL des ports, ajoutez les deux lignes suivantes :

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

Enregistrez maintenant le fichier et redémarrez squid :

# systemctl restart squid

Une fois que tout est configuré correctement, vous pouvez maintenant configurer les paramètres réseau de votre navigateur client local ou de votre système d’exploitation pour utiliser votre proxy HTTP squid.

Conclusion

Dans ce tutoriel, vous avez appris à installer, sécuriser et configurer vous-même un serveur proxy HTTP Squid. Avec les informations que vous venez d’obtenir, vous pouvez maintenant ajouter un filtrage de base pour le trafic entrant et sortant via Squid.

Si vous souhaitez aller plus loin, vous pouvez même configurer squid pour bloquer certains sites Web pendant les heures de travail afin d’éviter les distractions. Si vous avez des questions ou des commentaires, n’hésitez pas à les poster dans la section des commentaires ci-dessous.

Articles connexes: