I. Serveurs▲
I-A. Squid▲
Commençons d'abord par installer le plus important des serveurs : un proxy http. Ici, nous avons choisi Squid, qui est très populaire, stable et dispose de nombreux modules…
apt-get install squid
Ensuite vous devez éditer le fichier /etc/squid/squid.conf
# ne doit ecouter que les appels locaux
# pour infos, 3128 est le port standard de Squid
http_port 127
.0
.0
.1
:3128
# nom visible lors des messages aux clients
visible_hostname gw.domain.com
# remplacer zone_ip_interne par votre zone personnelle
# par exemple 192.168.1.0
acl LocalNet src zone_ip_interne/255
.255
.255
.0
# autoriser les acces venant de cette zone
http_access allow LocalNet
# Taille optimale de mémoire vive utilisée pour stocker du cache
cache_mem 16
MB
# voir aussi cache_mem_low et cache_mem_high
# Taille maximale des objets stockés dans le cache
maximum_object_size 8
MB
# Taille minimale des objets stockés dans le cache
minimum_object_size 0
KB
# Paramétrage d'un cache sur un disque
# 1 - Type de stockage
# 2 - Emplacement du cache
# 3 - Taille totale du cache en MB
# 4 - Nombre de répertoires de niveau 1 et de niveau 2
cache_dir ufs /var/spool/squid 200
16
256
Vous devez ensuite redémarrer squid de manière à ce que les nouveaux paramètres soient pris en compte.
/etc/init.d/squid restart
I-A-1. Réinitialiser le cache▲
Il arrive parfois que le cache local n'ait pas la bonne forme, car squid n'a pas été arrêté correctement… vous devez alors le reconstruire.
rm -rf /var/spool/squid/*
squid -z
I-A-2. Authentification▲
Vous ne devez pas avoir activé le mode proxy transparent, si vous souhaitez mettre en place une authentification.
Vous avez sûrement remarqué que le seul contrôle effectué dans /etc/squid/squid.conf porte sur les adresses IP des machines clientes. Mais vous pouvez avoir envie de faire plus…
Pour cela, il existe différentes méthodes :
- ldap_auth, pour authentifier les utilisateurs depuis un annuaire LDAP ;
- smb_auth, pour utiliser l'authentification d'un contrôleur de domaine Windows NT (lien) ;
- ncsa_auth, utilisant un fichier d'utilisateurs local.
Dans un premier temps, nous nous contenterons de ncsa_auth. Pour d'autres utilisations, vous trouverez facilement, car c'est similaire aux méthodes utilisées par d'autres serveurs ;)
Créez un fichier pour gérer les utilisateurs, et remplissez-le via l'utilitaire htpasswd (celui des .htaccess/.htpasswd d'Apache)
touch /etc./squid/users
htpasswd -b /etc./squid/users <
nom de l'utilisateur> <mot de passe>
Il vous est alors conseillé de tester à la main… en lançant le module d'authentification, et en lui donnant les entrées par la console. Sortez en tapant Ctrl+d
/usr/lib/squid/ncsa_auth /etc./squid/users
username password
OK
bas_user bad_passwd
ERR
Si ça marche, on peut alors passer au mode automatique. Pour cela, allez modifier votre fichier /etc/squid/squid.conf, pour y ajouter ceci :
# preciser qu'on oblige a passer par l'authentification
acl Users proxy_auth REQUIRED
http_access deny !
Users
# pour indiquer le mode d'authentification
authenticate_program /usr/lib/squid/ncsa_auth /etc./squid/users
# duree de validite de l'authentification
authenticate_ttl 30
minutes
# lier un utilisateur a une adresse ip pendant un laps de temps
authenticate_ip_ttl 30
minutes
Pour éviter qu'un utilisateur ne donne son accès à tous ses amis (ou se le fasse squatter), on peut aussi limiter le nombre de connexions différentes qu'il peut effectuer. Pour cela, rajouter ceci dans /etc/squid.conf
# duree du couplage adresse ip <-> utilisateur
authenticate_ip_ttl 2
hours
# declaration du mode authentification
acl users proxy_auth required
# nombre de sessions simultanees maximal pour un utilisateur
acl maxauth max_user_ip -s 1
# regles d'acces
http_access deny maxauth
http_access allow users
I-A-3. Cascader des proxys▲
Il arrive parfois que votre passerelle se trouve dans un sous-réseau, et donc doive passer par une autre passerelle pour se connecter à Internet. Ce n'est pas très grave, tout est prévu dans Squid… :D
Il vous suffit d'ajouter dans votre /etc/squid/squid.conf
# la commande indispensable
cache_peer ip_proxy_general parent port_de_autre_proxy 3130
no-query default
# une optimisation pour naviguer directement entre les deux passerelles
cache_peer_domain ip_proxy_general !
.domain.com
# avoir quand meme des logs...
debug_options ALL, 9
I-B. DansGuardian▲
Maintenant, nous allons installer un filtre, DansGuardian, étant un module de squid, afin de :
- interdire l'accès à des contenus peu recommandables (avec possibilité de régler le seuil, d'interdire certains mots-clés, etc.) ;
- gérer les téléchargements de fichiers potentiellement dangereux (exécutables, scripts, etc.) ;
- contrôler les virus (à partir de la version 2.9 en standard ; sinon à partir de la 2.8 si recompilation avec le plugin DGAV).
Commençons par l'installer…
apt-get install dansguardian
Maintenant, il faut le configurer. Commençons par le strict minimum pour le faire fonctionner, avec le fichier /etc/dansguardian/dansguardian.conf
# Commentez cette ligne, sinon DansGuardian ne voudra pas démarrer...
# UNCONFIGURED
# Changez la langue des messages envoyes aux utilisateurs
#language = 'ukenglish'
language =
'french'
# N'autorisez que les connexions depuis votre reseau local...
filterip =
IP_interne
# Choisissez le port que va ecouter DansGuardian
filterport =
8080
# Mettez ici l'adresse pour joindre Squid
proxyip =
127
.0
.0
.1
# Mettez ici le port qu'écoute Squid
proxyport =
3128
Commençons à raffiner… et configurons le fichier /etc/dansguardian/dansguardianf1.conf
# autorise un contenu jusqu'à une certaine limite
# on peut abaisser le seuil
# - 50 pour jeunes enfants
# - 100 pour adolescents
# - 160 pour jeunes adultes
naughtynesslimit =
160
# autorisez toutes les extensions au téléchargement
# utile pour les mises à jour ou autre...
# mais à vos risques et périls, vous devrez gérer une partie de la sécurité au niveau des machines clientes
# vous pouvez aussi seulement autoriser certaines extensions,
# en le commentant dans le fichier /etc./dansguardian/bannedextensionlist
# par exemple, il suffit de commenter les extensions .gz pour pouvoir installer et mettre à jour une machine debian
bannedextensionlist =
'/dev/null'
#bannedextensionlist = '/etc./dansguardian/bannedextensionlist'
Ici, nous sommes assez permissifs avec les utilisateurs, que nous considérons comme suffisamment autonomes, et responsables… ce n'est pas forcément votre cas, et sachez qu'il y a de nombreux réglages possibles dans ce fichier.