IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Mise en place d'une passerelle « sécurisée » pour le partage d'une connexion Internet


précédentsommairesuivant

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…

installation de squid
Sélectionnez
apt-get install squid

Ensuite vous devez éditer le fichier /etc/squid/squid.conf

configuration de squid - /etc/squid/squid.conf
Sélectionnez
# 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.

 
Sélectionnez
/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.

 
Sélectionnez
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)

/etc./squid/users
Sélectionnez
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

 
Sélectionnez
/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 :

 
Sélectionnez
# 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

 
Sélectionnez
# 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

 
Sélectionnez
# 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…

 
Sélectionnez
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

configuration de DansGuardian - /etc/dansguardian/dansguardian.conf
Sélectionnez
# 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

configuration de DansGuardian - /etc/dansguardian/dansguardianf1.conf
Sélectionnez
# 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.


précédentsommairesuivant

Copyright (c) 2006 Nicolas Vallée. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Read the full license here : http://www.gnu.org/licenses/fdl.txt