Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Configurer un serveur proxy sous Squid

Par David AMADOU Publié le 24/10/2015 à 13:11:41 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Squid est un serveur proxy disponible sous Linux. En plus d'être très performant, il est aussi capable de gérer les protocoles FTP, HTTP, HTTPS et Gopher.

Il est généralement utilisé dans certaines entreprises et universités pour des fonctions de filtrage d'URL ou comme serveur cache. Les pages Internet sont stockées localement ce qui évite d'aller les recharger plusieurs fois et permet d'économiser la bande passante Internet.

Nous allons dans ce tutoriel configurer ce proxy de manière avancée afin que vous puissiez voir la majorité des fonctionnalités qui nous sont offertes.

Notez qu'il vous faudra une machine sous Linux et de préférence Ubuntu ou Debian pour une meilleure cohérence avec les commandes qui seront exécutées ici.

Configuration de base

Sur la machine cliente, on paramètre le proxy du navigateur internet avec l'adresse IP du serveur proxy installé et le port 3128.


Si on tente d'accéder à une page internet, l'accès nous est refusé : « access denied » .

On consulte le fichier de log /var/log/squid3/access.log et on observe la ligne qui interdit l'accès à une page web :

192,168,0,34 TCP-DENIED/403 2487 GET http://www.google.fr /-NONE/ -text/html 

Le fichier de configuration de Squid comportant plus de 5000 lignes, autant vous dire que nous n'allons pas tout afficher.

On va donc créer un fichier de conf sans les lignes commentées pour une meilleure visualisation. Pour cela, on tape les commendes suivantes :

cp squid.conf squid.confbackup

cat squid.confbackup |grep -v ^# |grep -v ^$ >squid.conf

La dernière commande permet de prendre toutes les lignes non-commentées du fichier squid.confbackup et les met dans le fichier squid.conf.

On rajoute ensuite les 2 lignes suivantes à la fin du fichier squid.conf :

cache_effective_user proxy cache_effective_group proxy 
cache_mem 16MB
cache_dir ufs /var/sqool/squid3/squid3 120 16 128 

La dernière ligne signifie que l'on crée un répertoire de mémoire cache situé dans /var/spool/squid3. Ce répertoire est de type ufs, sa taille maximum est de 120Mo. Dans ce répertoire il y a 16 répertoire de niveau 1 qui contiennent chacun 128 répertoire de niveau 2.

Le contrôle des accès

On vérifie que le noyau de la distribution Debian supporte les ACL au niveau du système de fichier avec la commande :

cat /boot/config-2,6,26-2-686 | grep ACL 

On installe le paquet acl pour avoir accès aux commandes setfacl et getfacl.

Autoriser l'utilisation du proxy pour le réseau local

La première ligne ajoute une acl avec notre local, puis on l'autorise avec la 2ème ligne à accéder à internet. 
On autorise d'abord le réseau local à accéder puis on interdit tout le reste Squid gère les priorités dans l'ordre de lecture.

acl lan src 192.168.0.0/255.255.255.0

http_access allow lan


On relance maintenant Squid avec la commande :

/etc/init.d/squid3 restart 

On tente d'accéder à internet sur le client et on peut que cette fois cela fonctionne. 
En regardant le fichier access.log du serveur, nous pouvons observer que l'accès a été autorisé.

Contrôle d'accès horaires

Squid permet de restreindre l'accès de certains postes clients suivant des plages horaires.

On ajoute alors les lignes suivantes dans le fichier de configuration de Squid :

//définit les hôtes autorisés 
acl allowed_hosts src 192.168.0.34 

//définition de la plage horaire sur laquelle les postes sont autorisés
acl limithour time 12:00-14:00

//autorise l'accès http aux hôtes qui ont une plage horaire d'accès

http_access allow-allowed_hosts limithour  

On teste alors sur le client et on observe que l'accès est bien restreint. C'est à dire que l'on peut accéder seulement de 12:00 à 14:00.

Authentification des utilisateurs

Dans cette partie, on va montrer comment s'authentifier avec Squid.
On commence par installer le paquet apache2 pour avoir accès aux commandes nécessaires comme htaccess.


On créé ensuite 2 utilisateurs tintin et milou à l'aide des commandes suivantes :

touch /etc/squid3/squidusers
#htpasswd -b /etc/squid3/squidusers tintin reporteur 

htpasswd -b /etc/squid3/squidusers milou chien 

On modifie ensuite le fichier de configuration de Squid en rajoutant les lignes données dans l'annexe, à savoir :

//On configure ncsa_auth pour une authentification depuis le fichier squidusers
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/squidusers 

//On définit le nombre d'authentifications simultanées pour un même utilisateur
auth_param basic children 5 

//«Squid» sera affiché dans la fenêtre de connexion 
auth_param basic realm Squid 

//L'utilisateur aura accès pendant 1 heure avant d'avoir de se ré-authentifier
authenticate_ttl 1 hour 
 
//Une authentification est requise pour «utilisateurs» 
authenticate_ip_ttl 60 seconds 
acl utilisateurs proxy_auth REQUIRED 

//On autorise l'accès à Internet pour les IP de «utilisateurs» 
http_access allow utilisateurs 

La commande chmod permet de changer les droits du fichier ncsa_auth qui est le fichier permettant l'authentification de Squid.

On relance ensuite le service squid afin de vérifier que l'authentification mise en place fonctionne correctement.
On tape service squid3 restart pour redémarrer.

Conclusion

Une fois tout cela réalisé, on a donc un serveur proxy fonctionnel apportant un contrôle d'accès efficace pour les utilisateurs et assez souple pour pouvoir l'adapter facilement en fonction des besoins.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels