Mise en place d’un serveur proxy squid sous CentOS

Publié le 04 juillet 2011 par Lolokai @lolokai

Définition

Un proxy est une machine qui va faire l’intermédiaire lors d’une communication sur le réseau. Il peut être utilisé de différentes façons :

  • Anonymiser sa véritable adresse IP
  • Faire du cache
  • Chiffrer des communications
  • Faire du coverred-channel
  • Authentification

Dans ce billet, nous verrons comment configurer le serveur proxy : squid.

Présentation & Installation

Le serveur squid a été étudié pour être installé uniquement sur les systèmes Unix, cependant il peut aussi fonctionner sur les serveurs Windows actuels. Il est gratuit et est distribué sous licence GNU GPL.

Installation

L’installation se déroule sur CentOS :

[root@localhost ~]# yum -y install squid

Démarrage/Arrêt du service :

[root@localhost ~]# service squid [start|stop|restart]

Configuration

Maintenant, nous allons pouvoir configurer notre serveur proxy, ouvrons le fichier de configuration de squid :

[root@localhost ~]# vim /etc/squid/squid.conf

Trouvez la directive : http_port, cette directive contient le port par défaut sur lequel écoute squid (le port 3128) :

http_port 3128

Les ACLs

Squid fonctionne avec des ACLs, ces ACLs sont chargées de définir chaque élément d’une communication, par exemple : adresse ip, ports de communication, jour de la communication, adresses MAC etc… les ACLs fonctionnent aussi avec des expressions régulières pour permettre de gérer le plus de cas possibles. Par défaut, les ACLs se présentent de la façon suivante :

acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
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

Nous devons par conséquent ajouter une ACL qui prend en charge notre réseau local avec la commande suivante :

acl mon_reseau src [adresse_reseau]/[masque_reseau]

Appliquer ces ACLs

Maintenant que nous avons créé les ACLs, il va falloir les appliquer pour cela, nous devons utiliser la directive http_access. Un exemple de la configuration par défaut :

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#Vos règles sont à insérer ici
http_access allow localhost
http_access deny all

Cela signifie que :

  • L’ACL manager a le droit d’accéder à localhost uniquement.
  • La connexion est interdite vers d’autres ports que ceux définis dans l’ACL Safe_ports
  • La directive CONNECT peut être utilisée uniquement via le port SSL
  • On autorise l’accès vers l’adresse de notre proxy
  • On bloque tout autre type d’accès (à laisser de préférence)

Pour permettre à notre réseau local de communiquer, rajoutez :

http_access allow mon_reseau

Terminer la configuration

Pour appliquer les changements, nous devons redémarrer le service :

[root@localhost ~]# service squid restart

Maintenant il ne reste plus qu’à configurer vos applications pour utiliser ce proxy.

Conclusion

Nous avons vu comment mettre en place un serveur proxy squid. Rapide à installer, puissant et fiable il vous permettra de mettre en place un proxy digne de ce nom (à condition que vous le configuriez bien ). Cependant les quelques fonctionnalités présentées ci-dessous ne sont pas les seules de squid, il en existe une multitude : possibilités de bloquer des sites internet, possibilités de mettre en place un système d’authentification … Ces prochaines fonctionnalités feront peut être l’objet d’un autre billet .

Et vous que pensez-vous de squid ? L’avez-vous déjà utilisé ? Préférez-vous un de ses « concurrents » ?