Monter un serveur proxy avec Squid

Posted by

I) Introduction :

Le serveur proxy que nous allons apprendre à configurer s’appelle squid. C’est un logiciel largement répandu sous Linux pour les proxy et tout naturellement c’est un logiciel sous licence GPL. Pour rappel, un serveur proxy sert à mettre en cache les pages que vous avez déjà visitées pour éviter de les télécharger à nouveau si vous allez une nouvelle fois les consulter. Cette fonction est donc équivalente au cache de votre navigateur mais le grand avantage est qu’elle permet d’en faire profiter l’ensemble de votre réseau. Pour l’installer, rien de plus simple si vous utilisez une distribution qui gère les dépendances entre paquets comme apt-get sous Debian, sinon utilisez les sources.

II) Configuration :

La configuration est assez simple, tout est réuni dans le fichier /etc/squid.conf. Alors ouvrez-le avec votre éditeur de texte favori nous allons maintenant voir les lignes à configurer.

# Port sur lequel le proxy va écouter les requêtes http.
 http_port 8080
 # Listes d'accès du proxy :
 acl localhost src 127.0.0.1/255.255.255.255
 acl mon_reseau src 192.168.0.0/255.255.255.0
 acl SSL_ports port 443 563
# Ports définis comme authorisés, certaines ne sont pas listées ici pour plus de clarté.
 acl Safe_ports port 80          # http
 acl Safe_ports port 21          # ftp
 acl Safe_ports port 443 563     # https, snews
 acl purge method PURGE
 acl CONNECT method CONNECT
# Voyons maintenant les règles d'accès
 http_access allow localhost
 # On authorise l'accès au proxy par les machines de notre réseau.
 http_access allow mon_reseau
 http_access allow purge localhost
 http_access deny purge
 # Les accès sont refusés sur tous les ports sauf sur ceux connus comme sûrs.
 http_access deny !Safe_ports
 http_access deny CONNECT !SSL_ports
 # Et enfin tout le reste est interdit.
 http_access deny all
A la place du réseau 192.168.0.0 vous pouvez tout aussi bien définir des règles pour une seule IP :
 acl machine_1 src 192.168.0.6/255.255.255.0
 http_access allow machine_1
Autre chose d'importance, squid effectue un OU logique entre les lignes du fichier de configuration. Par conséquent :
 http_access allow mon_reseau
 http_access deny all
 Est différent de :
 http_access deny all
 http_access allow mon_reseau
 

Relancez maintenant le proxy :

 # /etc/init.d/squid restart

Pour terminer, il ne vous reste plus qu’à paramétrer votre navigateur internet avec l’adresse IP de votre passerelle ou bien si vous avez un DNS, vous pouvez la nommer par un nom comme par exemple proxy.domain.com. Chez moi avec galeon ca donne :

squid_galeon

III) Authentification des utilisateurs du proxy :

Il nous faut éditer quelques lignes du fichier de configuration /etc/squid.conf de Squid :

 # Cette ligne donne le chemin d'acces du programme d'authentification ainsi que le nom du fichier qui contiendra les mots de passe.
 authenticate_program /usr/lib/squid/ncsa_auth /usr/lib/squid/passwd
 # Nombre de processus enfants :
 authenticate_children 5 

Ensuite, on ajoute une règle obligeant les utilisateurs du proxy à s’authentifier :

 acl authentification proxy_auth REQUIRED

Si vous avez des lignes de ce type :

 acl monreseau src 192.168.0.0/255.255.255.0
 http_access allow mon reseau

pour indiquer quels utilisateurs de votre réseau peuvent passer par le proxy, commentez-les à l’aide du symbole dièse car sinon l’authentification ne sera pas demandée.

Pour terminer on accorde l’utilisation du proxy aux utilisateurs autorisés :

 http_access allow authentification

Ajout des utilisateurs et test :
On commence par se placer dans le bon répertoire :

 # cd /usr/lib/squid

Ensuite, la commande utilisée est htpasswd. Le paramètre -c doit être utilise la première fois afin de créer le fichier de password mais surtout pas ensuite!

Sa syntaxe est : # htpasswd -bc fichier_password nom_utilisateur mot_de_passe

Un exemple de ligne du fichier de mot de passe :

 toto:1yobQffUXOZ6c

On redémmare le proxy par la commande : /etc/init.d/squid restart
Et enfin testons pour voir si tout c’est bien passé :

squid_auth

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *