LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


expert:proxy-squid

Mise en place et configuration d'un proxy Squid

Auteur : lonewolf
Date : 14 octobre 2007

Introduction

Bonjour,

Sur ce tuto, nous allons nous pencher sur l'installation et la configuration d'un proxy du nom de : “Squid”.

1. Définition

Un serveur Squid est un serveur proxy performant, il est capable d'utiliser les protocoles FTP, HTTP, Gopher, et HTTPS.

Contrairement aux serveurs proxy classiques, un serveur Squid gère toutes les requêtes en un seul processus d'entrée/sortie, non bloquant.

Squid garde les meta-données et plus particulièrement les données les plus fréquemment accédées en mémoire. Il conserve aussi en mémoire les requêtes DNS, ainsi que les requêtes ayant échouées. Les requêtes DNS sont non bloquantes.

Les données mémorisées peuvent être rangées en hiérarchies ou en mailles pour utiliser moins de bande passante.

Squid est inspiré du projet Harvest. Il n'est pas compatible avec IPv6. (Définition Wikipedia)

Toutes les commandes d'exemple sont executées sur une distribution Ubuntu Feisty Faw 7.04 mais sont facilement transposables sur d'autres distributions.

Je vous fait confiance pour pouvoir adapter les quelques commandes spécifiques mises en avant… Oh et puis, y en a tellement peu que je peux vous macher un (tout) petit peu le travail.

Alors, la commande debian :

sudo apt-get install

est par exemple equivalente à

urpmi

sous Madriva.

Allez assez d'indice et un peu plus d'information et de formation.

2. Installation du proxy

Les choses sérieuses commencent avec une installation très simple.

En effet, il suffit d'utiliser la commande suivante et le proxy est installé :

sudo apt-get install squid

[u]Detail[/u] : Une erreur va apparaître en fin d'installation faisant référence au nom de serveur. Celle-ci est normale(donc pas d'inquiétude, nous n'avons pas encore fait de bêtise) et va être réglée dans la configuration du proxy.

3. Configuration du proxy

Voilà, le serveur est installé, et il faut maintenant le configurer.

Pour cela, nous allons éditer le fichier [i]squid.conf[/i] qui se trouve : /etc/squid à l'aide d'un éditeur de texte de votre choix. Pour moi, dans l'exemple, c'est “vim” mais vous pouvez utiliser également “gedit”, ou tout autre éditeur de votre choix.

Dans la ligne de commande suivante, il vous suffit de remplacer 'vi' par gedit, etc, etc, etc… et blablabla

sudo vi /etc/squid/squid.conf

Et nous voilà, face à un fichier de configuration très (très )fourni, et il faut bien l'avouer un peu fouillis pour un débutant.

Je vous conseille donc d'utiliser la fonction recherche de votre éditeur pour vous faciliter la tâche.

3. Nommer le proxy

Alors allons-y. Vous vous rappelez l'erreur que je vous ai annoncée en début de tuto ? Oui, Oui celle faisant référence au nom du serveur ?

Non ? Vraiment pas ? Bon, ce n'est pas grave puisque nous allons tout de suite la rectifier en nommant ce serveur.

Pour cela, rechercher la ligne contenant :visible_hostname

et ensuite placer vous en bas du paragraphe et juste en dessous de default

saisissez :

visible_hostname nom_de_votre_pc

Voici un exemple :

#  TAG: visible_hostname
#	If you want to present a special hostname in error messages, etc,
#	define this.  Otherwise, the return value of gethostname()
#	will be used. If you have multiple caches in a cluster and
#	get errors about IP-forwarding you must set them to have individual
#	names with this setting.
#
#Default:
visible_hostname StephLinux

[i]Détail[/i] : Le nom donné n'est pas anodin et ne peut être choisi. Il doit correspondre à celui de votre machine. C'est à dire que si vous ouvrez une console, il apparaît juste après l'@ suivi de votre nom de session comme ceci :

loup@StephLinux

4. Choisir le port

Le serveur proxy étant nommé, nous allons entrer un peu plus dans la configuration de squid en choisissant le port qui sera en écoute.

Par défaut, celui ci est 3128 :

http_port 3128

Vous pouvez choisir celui qui vous convient en remplaçnt 3128 par le port de votre choix (souvent le 8080)

http_port 8080

5. Choisir l'interface

Par défaut le serveur proxy sera en écoute sur toutes les interfaces. Pour des raisons de sécurité, vous pouvez décider de le mettre en écoute que sur votre réseau local.

Par exemple si la carte réseau reliée à votre LAN a l'IP 192.168.1.1, modifiez la ligne:

http_port 192.168.1..1:3128

6. Choisir qui peut se connecter a votre serveur proyx (Définir les droits d'accès)

Par défaut, le serveur proxy refuse toutes les connexions. Il est donc essentiel de définir qui aura le droit de s'y connecter.

Pour cela, il vous faut déclarer une plage ou encore les PC qui peuvent passer par le proxy.

Faites une recherche de la ligne suivante :

acl to_localhost

et juste en dessous (la localisation de cette ligne est importante sinon le proxy ne fonctionnera pas. Donc bien la placer en dessous de 'acl to localhost dst xxx.x.x.x/x) rajouter la ligne suivante adaptée à votre réseau (dans l'exemple classe C) :

acl lanmaison src 192.168.1.0/255.255.255.0

(lanmaison est un nom arbitrairement choisi. Vous pouvez le changer sans difficulté)

Ou encore si vous préférez déclarer un ou plusieurs PC directement, vous pouvez utiliser comme exemple la ligne suivante :

acl host1 src 192.168.1.20

(host1 étant de nouveau un nom arbitrairement choisi)

Exemple :

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 to_localhost dst 127.0.0.0/8
acl host1 src 192.168.1.20
acl SSL_ports port 443		# https
acl SSL_ports port 563		# snews
acl SSL_ports port 873		# rsync
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 Safe_ports port 631		# cups
acl Safe_ports port 873		# rsync
acl Safe_ports port 901		# SWAT
acl purge method PURGE
acl CONNECT method CONNECT

7. Autoriser le groupe

Maintenant que le groupe ou le(s) PC sont définis, nous allons l'autoriser à utiliser le proxy.

Repérez grâce à votre fonction de recherche la ligne http_access allow…et ajoutez en dessous (avant la ligne http_access deny all) la ligne suivante adaptée :

http_access allow lanmaison

pour la plage déclarée en tant que telle. Ou encore :

http_access allow host1

pour le ou les PC.

8. Redémarrer le proxy

Voilà nous arrivons au terme de ce tuto. Il ne nous reste plus qu'à tester le proxy en le redémarrant grâce à la commande :

sudo /etc/init.d/squid restart

9. Configurer les navigateurs

Pour passer par le proxy, il vous faut configurer le navigateur du PC.

Sous Firefox, selon la version :

Outils → Préférences → Avancées → Onglet Réseau → Paramètres → Configuration du proxy →

et là vous entrez l'IP du serveur ainsi que le port choisi.

Édition → etc identique

Sous IE :

Outils → Option Internet → Onglet connexion → Paramètres réseau → Se servir d'un proxy

et là vous entrez également l'IP du serveur ainsi que le port choisi.

[i]Detail[/i] Si vous êtes sous IE, vous devrez redémarrez le navigateur pour que les modifications soient intégrées (ben oui, IE c'est quand même Microsoft)

10. Détails subsidiaires

Grâce à Squid vous avez accès a bien d'autres fonctions.

Un exemple est la gestion du temps des utilisateurs.

Vous pouvez par exemple définir un temps d'utilisation en créant une acl time.

Exemple :

acl jour time 08:00-17:30

Dans cet exemple, j'ai défini une journée de 8h00 à 17h30. En dehors de cette horaire, le proxy refusera la connexion.

Mais pour que cela fonctionne, il vous faudra également indiquer à qui cette restriction s'impose.

Exemple, sur l'utilisateur host1 définit tout à l'heure :

http_access allow host1 jour

Nous avons donc juste rajouté 'jour' à la fin de la ligne d'autorisation créée un peu plus haut.

Ce qui nous donne :

#http_access allow our_networks
http_access allow localhost
http_access allow host1 jour
http_access deny all

11. Conclusion

Voila, j'espère que ce tuto vous permettra de mettre en place facilement et rapidement un proxy.

J'espère également avoir été clair et facilement accessible au plus grand nombre (et surtout de ne pas avoir fait trop de fautes d'orthographe).

Merci à tous et n'hésitez pas à me contacter par post ou par MP pour toutes questions subsidiaires

lonewolf

source

expert/proxy-squid.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1