Vous êtes sur la page 1sur 8

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY Le serveur proxy

23 fvrier 2011

Installer un systme de proxy cache, principalement pour HTTP. Ce proxy cache propose deux fonctions principales : l'optimisation de la bande passante sur le lien Internet, lorsque de nombreux clients sont connects et qu'ils visitent plus ou moins les mmes sites ( la condition, bien sr, que ces sites ne soient pas trop dynamiques, ASP, JSP, PHP... le contrle et le filtrage de l'accs la toile, en se servant des URI et, ventuellement, des noms d'utilisateurs, si l'on fait de l'authentification de ces derniers, autant de choses qu'il est difficile, voire impossible de faire avec du filtrage de paquets. Tout responsable d'un rseau local l'usage de mineurs et connect l'Internet se doit de mettre en place un tel systme de filtrage de manire viter, autant que possible, l'accs des sites que la morale rprouve. Prsentation gnrale. Squid, principal composant de ce systme, assure les fonctions de : cache, pour optimiser la bande passante, authentification des utilisateurs, nous en verrons une simpliste, filtrage d'accs "basique", mais dj intressant. Principe de fonctionnement. Squid tourne en tche de fond (daemon). Il coute sur un port spcifique (3128 par dfaut, mais il est possible d'utiliser 8080, plus habituel pour un proxy). L'ventuel module d'authentification vient se greffer dessus, ce qui fait apparatre un certain nombre de processus fils (5 par dfaut). Au total, une fois Squid configur, il n'y aura qu' dmarrer Squid et les processus d'authentification et de filtrage avanc dmarreront avec.

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 1

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY


Administration du tout.

23 fvrier 2011

Il existe deux modules Webmin suffisamment bien faits pour que l'on puisse ne pas hsiter s'en servir, mme si l'ergonomie gnrale oblige pas mal jongler entre les modules Squid et SquidGuard. Il faut faire trs attention ce que l'on fait et vrifier chaque fois que ncessaire que le but recherch est atteint. SquidGuard rserve pas mal de surprises ce propos. Bien entendu, il reste tout fait possible de n'utiliser qu'un diteur de texte, et a reste probablement la solution la meilleure, si l'on a une configuration trs complexe. Installation. a) De Webmin (administration distance du serveur):

Si vous souhaitez installer ou mettre jour Webmin par APT apt://webmin, commencez par ajouter la cl GPG votre systme :
# cd /root # sudo wget http://www.webmin.com/jcameron-key.asc # sudo apt-key add jcameron-key.asc

Puis ditez le fichier /etc/apt/sources.list et ajoutez la ligne :


# deb http://download.webmin.com/download/repository sarge contrib

Vous pouvez maintenant utiliser les commandes :


# sudo apt-get update # sudo apt-get install webmin

Toutes les dpendances seront galement installes. Pour lancer webmin, on utilisera un navigateur web en tapant ladresse ip du serveur, exemple : https://@ipserveur:10000 (se connecter avec lutilisateur principale) Configurer webmin de faon avoir le langage franais et linterface old webmin theme

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 2

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY


b) De squid (serveur proxy)
# sudo apt-get install squid

23 fvrier 2011

Nous supposons que vous tes sorti victorieux d'une installation, que votre configuration rseau fonctionne, que vous avez install (et mis jour) Webmin et qu'il fonctionne aussi. Nous allons beaucoup l'utiliser, bien que ce ne soit pas absolument indispensable. Pour dmarrer squid utiliser la syntaxe : # service squid
start ,stop ou restart

Effectivement, il tourne. N'y aurait-il rien de plus faire ? Vrifions tout de suite, squid utilise dfaut le port 3128. Configurons donc un navigateur du LAN pour utiliser le proxy et essayons un URI au hasard... google.fr

C'tait trop beau... Il faudra dj mettre les mains dans le cambouis. Notez qu'il vaut mieux une configuration qui interdise trop qu'une configuration qui, par dfaut, autorise trop, comme font certains... Configuration minimale. Comme Webmin est bien install, mis jour et tout, et que le module pour squid est bien prsent, utilisons-le :

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 3

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY

23 fvrier 2011

Les ACL (Access Control Lists) permettent de dfinir des conditions sur les IPs, les ports, le contenu de certains textes, et j'en passe. Si vous voulez tout savoir sur les diverses ACL de Squid, comptez plutt sur la documentation officielle. Les restrictions indiquent quoi faire lorsque ces conditions sont vrifies. On autorise ou on interdit en fonction d'une ACL ou d'un groupe d'ACLs, le sens de "restriction" est donc prendre avec un peu de recul, une restriction pouvant tre une autorisation. La premire "restriction" vrifie est la bonne, d'o l'importance de l'ordre dans lequel elles sont places. Sans faire une analyse dtaille, nous voyons que dans la configuration par dfaut, seul "localhost" peut utiliser le proxy (Allow localhost). Il nous faut donc faire intervenir la notion de rseau local.

Crer une ACL reprsentant le LAN.


Nous slectionnons dans la liste droulante "Client Address" et cliquons sur "Create New ACL" :

restrictions

N'oublions pas de faire un "Apply changes", et refaisons un essai

Ca marche ! Bien entendu, l'ide de faire plutt "Allow all" est une mauvaise ide. Si votre proxy a un pied dans l'Internet (s'il est install sur la passerelle), vous risquez un proxy ouvert, avec tous les usages pervertis que l'on peut en faire... A ce niveau, nous avons une premire configuration qui fonctionne.

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 4

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY


Le fichier squid.conf a cette allure (extrait): Visible_hostname proxy hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl SSL_ports port 443 563 10000 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 acl Safe_ports port 70 acl Safe_ports port 210 acl LocalNet src 192.168.0.0 /255.255.255.0 http_access allow manager localhost.

23 fvrier 2011

Affiner la configuration de squid.


Nous allons voir ici un point important, qu'il peut tre utile d'tudier, et qui correspondent aux deux fonctions principales d'un proxy (identification des utilisateurs et loptimisation du cache).

a) Identifier les utilisateurs.


Attention. Vous aurez des ennuis pour authentifier vos utilisateurs, si vous comptez rendre votre proxy transparent. Les deux fonctionnalits sont incompatibles. Dans la configuration mise en uvre ici, nous ne faisons pas de contrle sur les utilisateurs, seulement sur les IPs des machines clientes. Vous pouvez souhaiter identifier vos utilisateurs lorsqu'ils vont surfer sur le Net. Dans ce cas, il vous faudra mettre en place un systme d'authentification. Il y a plusieurs mthodes disponibles pour authentifier les utilisateurs du proxy. Elles font toutes appel un programme extrieur, diffrent suivant le moyen choisi. ubuntu propose les modules suivants : ncsa_auth, smb_auth, getpwnam_auth, ldap_auth, pam_auth Les plus intressants sont probablement : ldap_auth, qui permet d'authentifier les utilisateurs depuis un annuaire LDAP (si vous matrisez dj LDAP), smb_auth, qui permet d'utiliser un contrleur de domaine Windows NT. ncsa_auth, qui utilise un fichier d'utilisateurs local. Nous allons mettre en uvre ncsa_auth, c'est le plus simple, ce ne sera peut-tre pas le plus utile, surtout si le rseau local est un domaine Microsoft Windows.

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 5

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY


Construire un fichier d'utilisateurs. Nous allons crer un fichier /etc/squid/users # touch /etc/squid/users

23 fvrier 2011

Nous le remplissons ensuite avec la commande htpasswd, normalement fournie dans le paquet apachecommon (normalement vous l'avez puisque ubuntu utilise par dfaut Apache pour faire tourner Webmin): # htpasswd -b /etc/squid/users <nom de l'utilisateur> <mot de passe>

A rpter autant de fois que ncessaire avec des vrais noms d'utilisateurs et des vrais mots de passe... Le fichier se remplit comme suit : chris:bnIuGLzE0Gpcg daniel:SBURpBvExhYPQ michele:6hDQXgAjRdfXg Notez que les mots de passe sont chiffrs. Il aurait t possible d'utiliser le fichier passwd des utilisateurs Linux, mais ce n'est pas forcment une trs bonne ide... Vrifions que a fonctionne, en lanant " la main" le module d'authentification /usr/lib/squid/ncsa_auth. Nous entrerons alors dans une boucle o il faudra entrer sur une ligne un nom d'utilisateur et son mot de passe, spars par un espace : # /usr/lib/squid/ncsa_auth /etc/squid/users chris ******* OK chose truc ERR Le systme rpond par OK ou par ERR suivant que l'authentification russit ou non. Sortez de la boucle avec un "ctrl-c". Si a fonctionne comme a, c'est dj bon signe. Configurer squid pour rclamer l'authentification de vos utilisateurs. On peut le faire avec Webmin, faisons-le donc.

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 6

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY

23 fvrier 2011

Pour Authentification program, indiquez le chemin du module ncsa_auth, suivi du chemin du fichier des utilisateurs, spars par un espace ( /usr/lib/squid/ncsa_auth /etc/squid/users ). Pour Nombre de programme dauthentication :

"Defaults to 5 if an authenticator has been enabled."


Lorsqu'un programme d'authentification a t choisi, le nombre d'instances de ce programme est par dfaut de 5. Si vous avez de nombreux utilisateurs, il sera peut-tre ncessaire d'augmenter ce nombre. Pour authentication cache time:

"How long Squid will cache a successful login for before querying the authentication program again."
Combien de temps Squid va se souvenir d'une authentification russie, avant de demander une nouvelle authentification. On "save", on "apply les changes" et on croit que c'est fini, mais non... Sans ACL pour utiliser l'authentification, squid ne demandera rien vos utilisateurs. Cration de lAcl qui portera le nom users

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 7

NOUS ALLONS METTRE EN PLACE UN SERVEUR PROXY


Mettre jour les restrictions.

23 fvrier 2011

Ici users doit tre plac avant lacalnet ou le nom que vous avez donn votre lan

Application des changements, nous vrifions que maintenant le module d'authentification est bien charg Cette fois-ci, il y est. Ca devrait donc fonctionner :

Big Brother se fait de plus en plus prsent...

b) Optimiser le cache (qui ne sera pas trait).


Un proxy sert a optimiser la bande passante utilise sur le Net, en permettant de garder en cache les pages les plus souvent visites. Si c'est une de vos principales proccupations, il sera probablement ncessaire d'agir sur les diverses options du cache. Passez alors du temps lire la documentation. Vous pourrez agir sur la taille du cache, sa rpartition sur les divers disques durs... Pour raliser correctement une telle opration, il vous faudra installer d'abord des outils d'audit de performance dudit cache. Dtailler ces opration ici nous mnerait trop loin. (Il y a une doc assez complte avec Squid ;-))

STAFF TOUS SUR TOUS.FR

toussurtous.fr Page 8

Vous aimerez peut-être aussi