dimanche 16 août 2015

Squid - Mise en place d'un serveur Proxy sous Linux


Nous nous étions écartés de Windows dans le précédent billet, et nous allons aller encore plus loin puisque cette fois-ci, il va s'agir d'un article sur Linux. Avant de commencer, je tiens à préciser que mes connaissances avec ces systèmes sont rudimentaires. L'aide que l'on trouve sur le net est abondante, mais pour ma part, ne résout que très rarement les soucis auxquels je peux être confronté. Je m'en sors donc en cherchant et en réfléchissant, et il faut bien dire ce qui est, ce n'est pas aussi convivial que Windows. Pour cette mise en place de proxy, j'ai donc tâtonné durant plusieurs heures, alors que quarante-cinq minutes suffisent a priori pour obtenir ses premiers résultats.






Qu'est-ce qu'un serveur Proxy ?

Il existe différents types de proxies. Le serveur Proxy que nous allons configurer est une machine qui vient s'intercaler entre les ordinateurs d'un réseau local et le modem qui sert à accéder au net. Cette machine peut faire office de cache, et conserver les éléments de certaines pages pour qu'elles n'aient pas à être retéléchargées si l'on se rend plusieurs fois sur le même site. La navigation s'en trouve donc accélérée. Le serveur Proxy sert également à gérer les permissions et les interdictions pour accéder au net. Dans un réseau local domestique, cela peut donc très bien jouer le rôle de filtre parental (il est possible de définir une liste noire ou une liste blanche de sites, des autorisations et des interdictions pour certaines machines du réseau, définir des heures d'accès au net...). Si vous cherchez un proxy qui vous permet de contourner certaines restrictions mises en place par certains sites, celui que nous allons mettre en place ne fera pas l'affaire. En effet, puisque le proxy est à l'intérieur du réseau local, il ne fait pas par définition passer notre trafic internet par d'autres pays à partir desquels il serait possible, par exemple, d'accéder à certains contenus. Il reste toutefois possible de gagner un peu en terme de sécurité, puisque le proxy va masquer (et je dis bien masquer, et non changer) votre adresse IP publique.

Comme le titre de l'article le laisse supposer, tout cela va se passer sous Linux. Et j'ai choisi une distribution Debian Wheezy, dont j'ai téléchargé une image *.ISO netinstall. J'insiste lourdement sur le fait que les manipulations que je vais évoquer ci-dessous fonctionnent avec Debian Wheezy, mais elles peuvent différer légèrement avec d'autres distributions, ou même une autre version de Debian. La machine utilisée n'est plus considérée aujourd'hui comme un foudre de guerre, mais sera amplement suffisante pour ce que l'on lui réserve (Pentium M 1.4 GHz, 2 Go de RAM, SSD de 64 Go). Après avoir gravé ma galette, je l'ai insérée dans le lecteur optique, en m'assurant que le périphérique de démarrage principal était bien ledit lecteur. Je me suis également assuré que la machine était reliée au net en RJ45 (que serait une netinstall si l'on était pas raccordé à internet ?! :) ). J'ai choisi une installation en mode graphique.

Mais ce n'est pas pour autant qu'une fois l'installation terminée, et après un redémarrage de la machine, j'arrive sur un bureau. Que nenni ! Le premier redémarrage me fait accéder à une interface en ligne de commande. Comme je débute sous Linux, je préfère travailler sur un bureau, et il faut donc que j'en installe un. La première chose à faire consiste à s'identifier. Nous avons, durant le processus d'installation, renseigné un mot de passe administrateur, et nous avons créé un compte utilisateur (associé à un mot de passe lui aussi). Ce sont donc les identifiants du compte utilisateur que nous allons renseigner à l'invite de commande.

J'ai choisi d'installer un bureau léger, qui s'appelle LXDE. La commande pour l'installer est celle-ci :
  • sudo apt-get install lxde
Puisque nous installons un bureau complet, cela prend un peu de temps, et le processus demande quelques confirmations pour être mené à bien. Une fois le bureau installé, il s'agit de redémarrer l'ordinateur. La prochaine identification se fera en mode graphique. Hourra ! :)

Pour ce que nous avons à faire, trois paquets sont encore nécessaires : IceWeasel (le navigateur internet), GEdit (un bloc-notes) et bien entendu Squid (notre serveur Proxy). Les manipulations sont similaires à celle qui nous a permis d'installer LXDE. Sauf que cette fois-ci, nous allons lancer notre Terminal depuis le bureau). Il faut pour cela cliquer sur le bouton LXDE en bas à gauche, puis aller dans Accessoires et cliquer sur Terminal Administrateur. Son utilisation requiert une élévation des privilèges et vous allez devoir renseigner le mot de passe Administrateur. Une fois dans la console, on installe Iceweasel :
  • apt-get install iceweasel
On installe ensuite GEdit :
  • apt-get install gedit
Et enfin Squid (la version qui va s'installer est la 2.7.STABLE9) :
  • apt-get install Squid



La configuration de Squid :

Ce qui est pratique, c'est que Squid est quasiment utilisable sans aucune configuration. Quelques ajustement doivent être faits, mais cela reste assez léger. Tout se passe dans un gros fichier texte nommé squid.conf. Ce fichier est dans le répertoire /etc/squid. Il ne s'agit pas ici de configurer très finement Squid (je n'ai pas encore les connaissances pour le faire, et ce n'est pas le but de ce billet), il s'agit juste de le mettre en place. Nous allons donc en rester aux bases.

La première chose à faire est de déterminer l'adresse IP de votre machine. Cela se passe très simplement dans le terminal où il faut saisir la commande suivante :
  • ifconfig
Après avoir validé, nous obtenons les informations associées à chaque interface réseau présente sur l'ordinateur. L'adresse IP de notre carte (eth0) est notée à la deuxième ligne (inet adr:). Gardons cela en mémoire, car nous allons utiliser cette information pour configurer plus tard nos navigateurs sur les postes clients.

Avant cela nous allons éditer le fichier de configuration de Squid. Les modifications seront peu nombreuses dans un premier temps. Nous allons intervenir sur trois paramètres :
  • Dire à Squid quelles sont les machines qu'il devra gérer ;
  • Autoriser l'accès au net de ces machines ;
  • Empêcher l'affichage de notre adresse IP publique.
Squid fonctionne avec des listes de contrôle (ACL - Access Control List). acl est une commande que l'on retrouve dans squid.conf. Pour accéder au fichier :
  • Appuyer sur le bouton LXDE en bas à gauche ;
  • Cliquer sur Exécuter, et dans la boîte de dialogue qui s'affiche, taper gksu gedit /etc/squid/squid.conf ;
  • Cliquer sur Valider.
Il est possible de rechercher une chaîne de caractères dans GEdit en appuyant sur <Ctrl>+<F>. Pour faciliter les choses, il est aussi intéressant d'aller dans les préférences de l'éditeur (Edition puis Préférences), et cocher Afficher les numéros de ligne dans l'onglet Affichage).
Dans mon fichier, à la ligne 600 il est noté #Recommended minimum configuration puis, dessous acl all src all. Sous cette ligne, j'insère la commande :
  • acl mynetwork src 192.168.0.0-192.168.0.255
Les valeurs peuvent bien sûr varier en fonction de votre installation, mais il faut retenir que mynetwork est le nom que j'ai souhaité donner aux ordinateurs de mon réseau, src signifie source, et les adresses IP sont également celles de mon réseau. Il s'agit ici d'une plage d'adresse : on autorise les ordinateurs dotés d'une IP allant de 192.168.0.0 à 192.168.0.255 à se connecter à Squid.

A cette commande est associée une commande nommée http_access. Grâce à celle-ci, nous pouvons autoriser l'accès (allow) ou l'interdire (deny). Un peu plus bas dans notre fichier, nous avons une ligne de commentaire (ligne 670 et suivantes) #INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS, puis un peu plus bas, une autre ligne où il est noté #And finally deny all other access to this proxy. Juste avant cette ligne, nous allons insérer la commande suivante :
  • http_access allow mynetwork
Et juste après nous allons décommenter la ligne #http_access deny all (il suffit de supprimer le dièse en début de ligne).

La dernière chose à modifier concerne l'affichage de l'adresse IP publique. Cela se fait par le biais d'une instruction nommée forwarded_for. Dans mon fichier, elle est à la ligne 4701. Si l'on choisit forwarded_for on, l'adresse IP du poste client sera visible. Si l'on choisit forwarded_for off, alors l'adresse sera masquée.

Les modifications de base sont faites, il ne reste plus qu'à enregistrer et quitter GEdit.

Squid étant un service, une fois qu'il a été installé, il s'est lancé en tâche de fond. Si nous sommes intervenus sur le fichier de configuration, il est nécessaire d'arrêter puis de redémarrer le service. Nous allons faire cela dans un Terminal :
  • service squid stop
  • service squid start
Pour "initialiser" Squid, il est aussi recommandé de lancer la commande suivante :
  • squid -k reconfigure


La configuration des clients :

Nous avons fait ce que nous voulions du côté serveur, il reste désormais à configurer les postes à partir desquels nous allons accéder au proxy, puis au net. Pour les machines sous Windows, le plus simple est d'ouvrir Internet Explorer :
  • Se rendre dans les Options Internet puis cliquer sur l'onglet Connexion puis sur le bouton Paramètres réseau ;
  • Dans la nouvelle fenêtre, décocher l'option Détecter automatiquement les paramètres de connexion, puis cocher Utiliser un serveur proxy pour votre réseau local (ces paramètres ne s'appliquent pas aux connexions d'accès à distance ou VPN) ;
  • Renseigner l'adresse IP (celle que nous avions trouvée avec la commande ifconfig) ainsi que le port (par défaut, c'est le 3128) ;
  • Valider en cliquant sur OK, puis quitter les Options Internet en cliquant sur Appliquer puis sur OK.
Des manipulations similaires peuvent être réalisées dans d'autres navigateurs.

De ce que j'ai pu lire, la configuration de Squid peut être très poussée et cela semble à première vue être un outil vraiment extraordinaire. Il existe de nombreuses ressources sur le net pour une modification avancée de squid.conf. N'hésitez pas à creuser si vous le souhaitez.


Sources : Linux France.org, et bien d'autres sites

Aucun commentaire:

Enregistrer un commentaire