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 déjà et sont utilisés par des millions d'utilisateurs à travers le monde. Ils ont un large éventail d’objectifs, le plus populaire étant l’anonymat en ligne, mais il existe d’autres moyens 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, peut réduire l'utilisation de la bande passante

Comment fonctionne le serveur proxy

Le serveur proxy est un ordinateur utilisé comme intermédiaire entre le client et d'autres serveurs auprès desquels le client peut demander des ressources. Un exemple simple est lorsqu'un client fait des requêtes en ligne (par exemple souhaite ouvrir une page Web), il se connecte d'abord au serveur proxy.

Le serveur proxy vérifie ensuite son cache disque local et si les données peuvent y être trouvées, il les renverra au client. Si elles ne sont pas mises en cache, il fera la demande au nom du client en utilisant l'adresse IP du proxy (différente de l'adresse IP du proxy). clients) puis renvoient les données au client. Le serveur proxy tentera de mettre en cache les nouvelles données et les utilisera pour les futures requêtes adressées au même serveur.

Qu'est-ce que le proxy Squid

Squid est un proxy Web utilisé par un large éventail d'organisations. Il est souvent utilisé comme proxy de mise en cache, améliorant les temps de réponse et réduisant 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é de RAM utilisée 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. Cependant, avant de l'installer, assurez-vous que vos packages sont à jour en les exécutant.

yum -y update

Continuez par installer 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 devrait déjà être en cours d'exécution et vous pouvez vérifier l'état du service avec.

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 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 minimum squid.conf (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 ACL 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 :

acl localnet src XX.XX.XX.XX

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. C'est une bonne pratique 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 à se connecter. Vous pouvez en ajouter davantage en modifiant le fichier de configuration.

acl Safe_ports port XXX

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 le port va être utilisé.

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

systemctl  restart squid

Authentification du client proxy Squid

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

Tout d’abord, vous devrez installer httpd-tools.

yum -y install httpd-tools

Créons maintenant un fichier qui stockera ultérieurement 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é « client proxy » 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 ACL 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 pour que les nouvelles modifications prennent effet :

systemctl restart squid

Bloquer des sites Web sur Squid Proxy

Enfin, nous créerons 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, notamment 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 votre navigateur client local ou les paramètres réseau de votre système d'exploitation pour utiliser votre proxy HTTP Squid.

Conclusion

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

Si vous souhaitez faire un effort supplémentaire, 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, veuillez les publier dans la section commentaires ci-dessous.