<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!-- Chemin vers les guides pratiques Linux -->
<!ENTITY howto "http://www.traduc.org/docs/howto/lecture/">
<!-- Chemin vers les images -->
<!ENTITY images "">
]>
<article lang="fr">
<!-- Header -->
<articleinfo>
<title>Guide pratique des passerelles d'authentification</title>
<subtitle>Adaptation française du <foreignphrase
lang="en">Authentication Gateway HOWTO</foreignphrase></subtitle>
<author>
<firstname>Nathan</firstname>
<surname>Zorn</surname>
<email>zornnh CHEZ musc POINT edu</email>
</author>
<othercredit role="traduction" class="translator">
<firstname>Guillaume</firstname>
<surname>Lelarge</surname>
<contrib>Traduction française</contrib>
<email>gleu CHEZ wanadoo POINT fr</email>
</othercredit>
<othercredit role="relecture" class="translator">
<firstname>Guillaume</firstname>
<surname>Hatt</surname>
<contrib>Relecture de la version française</contrib>
<email>ghatt CHEZ netcourrier POINT com</email>
</othercredit>
<othercredit role="publication" class="copyeditor">
<firstname>Jean-Philippe</firstname>
<surname>Guérard</surname>
<contrib>Préparation de la publication de la v.f.</contrib>
<email>fevrier CHEZ tigreraye POINT org</email>
</othercredit>
<revhistory>
<revision>
<revnumber>0.06.fr.1.1</revnumber>
<date>2008-01-30</date>
<authorinitials>JPG</authorinitials>
</revision>
<revision>
<revnumber>0.06.fr.1.0</revnumber>
<date>2002-12-16</date>
<authorinitials>GL, GH</authorinitials>
</revision>
<revision>
<revnumber>0.06</revnumber>
<date>2002-11-05</date>
<authorinitials>NHZ</authorinitials>
</revision>
<revision>
<revnumber>0.05</revnumber>
<date>2002-05-10</date>
<authorinitials>NHZ</authorinitials>
</revision>
<revision>
<revnumber>0.04</revnumber>
<date>2002-02-28</date>
<authorinitials>NHZ</authorinitials>
</revision>
<revision>
<revnumber>0.03</revnumber>
<date>2001-09-28</date>
<authorinitials>NHZ</authorinitials>
</revision>
<revision>
<revnumber>0.02</revnumber>
<date>2001-09-28</date>
<authorinitials>KET</authorinitials>
</revision>
<revision>
<revnumber>0.01</revnumber>
<date>2001-09-06</date>
<authorinitials>NHZ</authorinitials>
</revision>
</revhistory>
<abstract>
<para>
Beaucoup se sentent concernés par la sécurité des réseaux sans-fil
et des aires d'accès public telles que les bibliothèques et les
dortoirs. Les implémentations actuelles de sécurité ne répondent pas
à ces interrogations. Une réponse est proposée par l'utilisation
d'une passerelle d'authentification. Cette passerelle réponds aux
problèmes de sécurité en forçant l'utilisateur à s'authentifier pour
pouvoir utiliser le réseau.
</para>
</abstract>
</articleinfo>
<!-- Section1: intro -->
<sect1 id="intro">
<title>Introduction</title>
<indexterm>
<primary>Sécurité: introduction</primary>
</indexterm>
<para>
Avec les réseaux sans-fil et les aires d'accès publics, il est très
facile pour un utilisateur non autorisé d'accéder au réseau. Les
utilisateurs non autorisés peuvent chercher un signal et récupérer des
informations de connexion à partir de ce signal. Ils peuvent brancher
leur machine sur un terminal public et obtenir l'accès au réseau. Des
éléments de sécurité ont été mis en place, comme WEP, mais cette
sécurité peut être franchie avec des outils comme AirSnort. Une
approche pour résoudre ces problèmes est de ne pas se reposer sur les
fonctionnalités de sécurité des sans-fil, et d'installer à la place
une passerelle d'authentification devant le réseau sans-fil ou les
aires d'accès public, ce qui permet de forcer les utilisateurs à
s'authentifier avant d'utiliser le réseau. Ce guide pratique décrit
comment mettre en place cette passerelle avec Linux.
</para>
<!-- Section2: copyright -->
<sect2 id="copyright">
<title>Informations de copyright</title>
<para>
Ce document dispose d'un copyright © 2001 Nathan Zorn. Il vous
est autorisé de copier, distribuer et/ou modifier ce document sous
les termes de la licence GNU Free Documentation License, Version 1.1
ou toute version ultérieure publiée par la Free Software
Foundation avec les sections inaltérables suivantes :
texte de première page de couverture, texte de dernière page de
couverture. Une copie de la licence est disponible sur
http://www.gnu.org/copyleft/fdl.html
</para>
<para>
Si vous avez des questions, merci de contacter
<email>zornnh CHEZ musc POINT edu</email>
</para>
</sect2>
<!-- Section2: disclaimer -->
<sect2 id="disclaimer">
<title>Disclaimer</title>
<para>
Aucune responsabilité pour le contenu de ce document ne sera
acceptée. Utilisez les concepts, exemples et autre contenu à vos
risques et périls. Comme il s'agit d'une nouvelle édition de ce
document, il peut y avoir des erreurs et des inexactitudes, qui
peuvent endommager votre système. Procédez avec prudence et bien que
les dégats soient très improbables, les auteurs n'en prennent aucune
responsabilité.
</para>
<para>
Tous les droits sont détenus par leurs propriétaires respectifs,
sauf cas spécifique indiqué. L'utilisation d'un terme dans ce
document ne doit pas être vu comme affectant la validité d'une
marque ou d'un service.
</para>
<para>
Nommer un produit particulier ou une marque ne doit pas être vu comme une
illégalité.
</para>
<para>
Il est fortement conseillé de faire une sauvegarde de votre système avant
toute installation majeure, et d'en faire à intervalles réguliers.
</para>
</sect2>
<!-- Section2: newversions-->
<sect2 id="newversions">
<title>Nouvelles Versions</title>
<indexterm>
<primary>(your index root)!news on</primary>
</indexterm>
<para>
La version la plus récente de ce document peut être trouvée sur
<ulink url="http://www.itlab.musc.edu/~nathan/authentication_gateway/">
</ulink>.
Les guides pratiques en rapport peuvent être trouvés sur le site
<ulink url="http://www.tldp.org/">
Linux Documentation Project
</ulink>.
</para>
</sect2>
<!-- Section2: credits -->
<sect2 id="credits">
<title>Crédits</title>
<para>Jamin W. Collins</para>
<para>Kristin E Thomas</para>
<para>Logu (visolve.com)</para>
</sect2>
<!-- Section2: feedback -->
<sect2 id="feedback">
<title>Retour d'informations</title>
<para>
Le retour d'informations est vraiment bienvenu pour ce document. Sans vos
soumissions, ce document n'existerait pas. Merci d'envoyer vos ajouts,
commentaires et critiques à l'adresse mail suivante :
<email>zornnh CHEZ musc POINT edu</email>.
</para>
</sect2>
</sect1>
<!-- Section1: intro: END -->
<!-- Section1: services -->
<sect1 id="services">
<title>Ce qui est nécessaire</title>
<para>
Cette section décrit ce qui est nécessaire pour installer la passerelle
d'authentification.
</para>
<sect2 id="netfilter">
<title>Netfilter</title>
<para>
La passerelle d'authentification utilise Netfilter et iptables pour
gérer le pare-feu. Consultez le <ulink
url="http://netfilter.samba.org/unreliable-guides/packet-filtering-HOWTO/index.html">Guide
pratique Netfilter</ulink>.
</para>
</sect2>
<sect2 id="dynamicnetfilterrules">
<title>Logiciel pour les règles dynamiques de Netfilter</title>
<para>
Un moyen pour insérer et supprimer des règles Netfilter est d'utiliser
pam_iptables. Il s'agit d'un module d'authentification insérable (PAM ou
« pluggable authentication module ») écrit par
Nathan Zorn disponible sur
<ulink url="http://www.itlab.musc.edu/~nathan/pam_iptables/">
</ulink>.
Ce module PAM permet aux utilisateurs d'utiliser ssh et telnet pour
s'authentifier sur la passerelle.
</para>
<para>
Un autre moyen pour supprimer et créer dynamiquement des règles Netfilter est
d'utiliser NocatAuth. Il peut être trouvé sur
<ulink url="http://nocat.net">
</ulink>.
NocatAuth fournit un client web pour s'authentifier sur la passerelle.
</para>
</sect2>
<sect2 id="dhcpd">
<title>Serveur DHCP</title>
<para>
La passerelle d'authentification agira comme un serveur DHCP
(« Dynamic Host Configuration Protocol ») pour
le réseau public. Elle sert seulement ceux qui réclament des
services DHCP sur le réseau public. J'ai utilisé <ulink
url="http://www.isc.org/products/DHCP/">le serveur DHCP ISC</ulink>.
</para>
</sect2>
<sect2 id="authentication">
<title>Mécanisme d'authentification</title>
<para>
La passerelle peut utiliser tous les moyens d'authentification de PAM.
L'université de médecine de Caroline du Sud utilise LDAP comme mécanisme
d'authentification. Comme LDAP a été utilisé pour l'authentification, les
modules pam sur la machine passerelle ont été configurés pour utiliser LDAP.
D'autres informations sont disponibles sur
<ulink url="http://www.padl.com/OSS/pam_ldap.html">
</ulink>.
PAM vous permet d'utiliser beaucoup de moyens d'authentification. Merci de
regarder la documentation pour le module PAM que vous souhaitez utiliser.
Pour plus d'informations sur les autres méthodes, voir <ulink
url="http://www.kernel.org/pub/linux/libs/pam/modules.html">les modules
pam</ulink> correspondants.
</para>
<para>
Si NocatAuth est utilisé, un service d'authentification a besoin d'être
configuré. Le service d'authentification NocatAuth supporte
l'authentification avec LDAP, RADIUS, MySQL et un fichier de mots de passe.
Plus d'informations sur la page
<ulink url="http://nocat.net/download/NoCatAuth/">
</ulink>.
</para>
</sect2>
<sect2 id="dnsserver">
<title>Serveur DNS</title>
<para>
La machine passerelle sert aussi de serveur DNS pour le réseau public. J'ai
installé <ulink
url="http://www.isc.org/products/BIND/">Bind</ulink>, et je l'ai configuré
comme un serveur de noms cache. Le paquetage rpm caching-nameserver a aussi
été utilisé. Ce paquetage provient de RedHat.
</para>
</sect2>
</sect1>
<sect1 id="setup">
<title>Configuration des services de la passerelle</title>
<para>
Cette section décrit comment configurer chaque pièce de la passerelle
d'authentification. Les exemples utilisés concernent un réseau public
compris dans le sous-réseau 10.0.1.0. eth0 est l'interface connectée
au réseau interne. eth1 est l'interface connecté au réseau public. L'adresse
IP utilisée pour cette interface est 10.0.1.1. Ces valeurs peuvent être
changées pour s'intégrer au réseau que vous utilisez. RedHat 7.1 a été
utilisé pour la machine passerelle, donc un grand nombre d'exemples sont
spécifiques à RedHat.
</para>
<sect2 id="netfiltersetup">
<title>Configuration de Netfilter</title>
<para>
Pour configurer netfilter, le noyau doit être recompilé pour inclure le
support de netfilter. Merci de consulter le <ulink
url="&howto;Kernel-HOWTO.html">Guide pratique du noyau</ulink>
pour plus d'informations sur la configuration et la compilation de votre
noyau.
</para>
<para>
Voici à quoi ressemble la configuration de mon noyau.
<programlisting>
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK is not set
CONFIG_NETFILTER=y
CONFIG_NETFILTER_DEBUG=y
CONFIG_FILTER=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=y
CONFIG_IP_NF_FTP=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_MATCH_LIMIT=y
CONFIG_IP_NF_MATCH_MAC=y
CONFIG_IP_NF_MATCH_MARK=y
CONFIG_IP_NF_MATCH_MULTIPORT=y
CONFIG_IP_NF_MATCH_TOS=y
CONFIG_IP_NF_MATCH_TCPMSS=y
CONFIG_IP_NF_MATCH_STATE=y
CONFIG_IP_NF_MATCH_UNCLEAN=y
CONFIG_IP_NF_MATCH_OWNER=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_REJECT=y
CONFIG_IP_NF_TARGET_MIRROR=y
CONFIG_IP_NF_NAT=y
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y
CONFIG_IP_NF_TARGET_REDIRECT=y
CONFIG_IP_NF_NAT_FTP=y
CONFIG_IP_NF_MANGLE=y
CONFIG_IP_NF_TARGET_TOS=y
CONFIG_IP_NF_TARGET_MARK=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_TCPMSS=y
</programlisting>
</para>
<para>
Une fois que netfilter a été configuré, mettez en place la transmission IP
(IP forwarding) en exécutant cette commande :
</para>
<programlisting>
echo 1 > /proc/sys/net/ipv4/ip_forward
</programlisting>
<para>
Pour s'assurer que la transmission ip est activée lors du redémarrage de la
machine, ajoutez la ligne suivante dans
<filename>/etc/sysctl.conf</filename> :
</para>
<programlisting>
net.ipv4.ip_forward = 1
</programlisting>
<para>
Si vous allez utilisé NocatAuth, vous pouvez passer à la section <link
linkend="nocatgatewaysetup">Configuration de la passerelle NoCatAuth</link>.
</para>
<para>
Iptables a besoin d'être installé. Pour cela, soit vous utilisez le paquetage
provenant de votre distribution, soit vous l'installez à partir des sources.
Une fois que les options ci-dessus ont été compilées dans le nouveau noyau
et qu'iptables a été installé, je mets en place les règles par défaut du
pare-feu.
</para>
<programlisting>
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -i eth0 -m state --state NEW, INVALID -j DROP
iptables -A FORWARD -i eth0 -m state --state NEW, INVALID -j DROP
iptables -I FORWARD -o eth0 -j DROP
iptables -I FORWARD -s 10.0.1.0/24 -d 10.0.1.1 -j ACCEPT
</programlisting>
<para>
Les commandes ci-dessus peuvent aussi être placées dans un script
d'initialisation utilisé lorsque le serveur redémarre. Pour s'assurer que
les règles ont été ajoutées, tapez les commandes suivantes :
</para>
<programlisting>
iptables -v -t nat -L
iptables -v -t filter -L
</programlisting>
<para>
Pour sauvegarder ces règles, j'ai utilisé les scripts d'initialisation de
RedHat.
</para>
<programlisting>
/etc/init.d/iptables save
/etc/init.d/iptables restart
</programlisting>
<para>
Maintenant, la machine passerelle est capable de faire de la traduction
d'adresses réseau (NAT ou Network Address Translation), mais elle laissera
passer tous les paquets sauf ceux provenant de l'intérieur du réseau
public et à destination de la passerelle.
</para>
</sect2>
<sect2 id="dynamicnetfilter">
<title>Règles dynamiques de Netfilter.</title>
<para>
Cette section décrit comment configurer le logiciel nécessaire à l'insertion
et à la suppression dynamique de règles Netfilter sur la passerelle.
</para>
<sect3 id="pamiptablessetup">
<title>Module iptables pour PAM</title>
<para>
Le module de session PAM, qui insère les règles pour le pare-feu, est
nécessaire pour permettre la transmission pour le client authentifié. Pour
le configurer, récupérez simplement le fichier <ulink
url="ftp://ftp.itlab.musc.edu/pub/pam_iptables.tar.gz">source</ulink>
et compilez-le en lançant les commandes suivantes :
</para>
<programlisting>
gcc -fPIC -c pam_iptables.c
ld -x --shared -o pam_iptables.so pam_iptables.o
</programlisting>
<para>
Vous devez maintenant avoir deux binaires appelés
<filename>pam_iptables.so</filename> et <filename>pam_iptables.o</filename>.
Copiez <filename>pam_iptables.so</filename> dans
<filename>/lib/security/pam_iptables.so</filename> :
</para>
<programlisting>
cp pam_iptables.so /lib/security/pam_iptables.so
</programlisting>
<para>
Maintenant, installez le script pare-feu dans le répertoire
/usr/local/auth-gw :
</para>
<programlisting>
mkdir /usr/local/auth-gw
cp insFwall /usr/local/auth-gw
</programlisting>
<para>
Le client d'authentification choisi pour la passerelle étant ici ssh, nous
avons ajouté la ligne suivante dans <filename>/etc/pam.d/sshd</filename> :
</para>
<programlisting>
session required /lib/security/pam_iptables.so
</programlisting>
<para>
Maintenant, lorsqu'un utilisateur se connectera avec ssh, la règle du
pare-feu sera ajoutée.
</para>
<para>
Pour savoir si le module pam_iptables fonctionne, réalisez les étapes
suivantes :
</para>
<orderedlist>
<listitem>
<para>Connectez-vous sur la machine avec ssh.</para>
</listitem>
<listitem>
<para>Vérifiez si la règle a été ajoutée avec la commande
<command>iptables -L -v</command>.</para>
</listitem>
<listitem>
<para>Déconnectez-vous de la machine pour vous assurer que la règle est
bien supprimée.</para>
</listitem>
</orderedlist>
</sect3>
<sect3 id="nocatgatewaysetup">
<title>Passerelle NoCatAuth</title>
<para>
Cette section décrit le processus de configuration de la passerelle
NocatAuth. Pour la configurer, récupérez le <ulink
url="http://nocat.net/download/NoCatAuth/">source</ulink> et installez-le
avec les étapes suivantes.
</para>
<para>
Assurez-vous que gpgv est installé. gpgv est un vérificateur de signatures
PGP. Il fait partie de gnupg et peut être trouvé sur la page <ulink
url="http://www.gnupg.org/download.html"></ulink>.
</para>
<para>
Extrayez les fichiers de l'archive tar NocatAuth :
<programlisting>
tar xvzf NocatAuth-x.xx.tar.gz
</programlisting>
</para>
<para>
Si vous ne voulez pas que NocatAuth soit installé dans le répertoire
/usr/local/nocat, éditez le Makefile et remplacez INST_PATH par le répertoire
où vous souhaitez que NoCatAuth soit installé.
</para>
<para>
Puis, construisez la passerelle :
<programlisting>
cd NoCatAuth-x.xx
make gateway
</programlisting>
</para>
<para>
Editez le fichier /usr/local/nocat.conf. Merci de consulter le fichier de
documentation INSTALL pour les détails sur ce qui est requis dans le
fichier de configuration. Un fichier de configuration d'exemple ressemble
à ceci :
</para>
<programlisting>
###### gateway.conf -- NoCatAuth Gateway Configuration.
#
# Format of this file is: Directive Value, one per
# line. Trailing and leading whitespace is ignored. Any
# line beginning with a punctuation character is assumed to
# be a comment.
Verbosity 10
#we are behind a NAT so put the gateway in passive mode
GatewayMode Passive
GatewayLog /usr/local/nocat/nocat.log
LoginTimeout 300
######Open Portal settings.
HomePage http://www.itlab.musc.edu/
DocumentRoot /usr/local/nocat/htdocs
SplashForm splash.html
###### Active/Passive Portal settings.
TrustedGroups Any
AuthServiceAddr egon.itlab.musc.edu
AuthServiceURL https://$AuthServiceAddr/cgi-bin/login
LogoutURL https://$AuthServiceAddr/forms/logout.html
###### Other Common Gateway Options.
AllowedWebHosts egon.itlab.musc.edu
ResetCmd initialize.fw
PermitCmd access.fw permit $MAC $IP $Class
DenyCmd access.fw deny $MAC $IP $Class
</programlisting>
<para>
Maintenant, vous devez être capable de lancer la passerelle. Si un
problème survient, merci de consulter la documentation INSTALL dans le
répertoire NoCatAuth. La commande suivante lance la passerelle :
<programlisting>
/usr/local/nocat/bin/gateway
</programlisting>
</para>
</sect3>
</sect2>
<sect2 id="dhcpdsetup">
<title>Configuration du serveur DHCP</title>
<para>J'ai installé DHCP en utilisant le fichier
<filename>dhcpd.conf</filename> suivant :
</para>
<programlisting>
subnet 10.0.1.0 netmask 255.255.255.0 {
# --- default gateway
option routers 10.0.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.1.255;
option domain-name-servers 10.0.1.1;
range 10.0.1.3 10.0.1.254;
option time-offset -5; # Eastern Standard Time
default-lease-time 21600;
max-lease-time 43200;
}
</programlisting>
<para>
Le serveur a ensuite été lancé en utilisant eth1, l'interface connectée au
réseau public :
</para>
<programlisting>
/usr/sbin/dhcpd eth1
</programlisting>
</sect2>
<sect2 id="authenticationsetup">
<title>Configuration de la méthode d'authentification</title>
<para>
L'authentification avec PAM et un service d'authentification NoCatAuth ont
été décrits. Les deux exemples utilisent LDAP. D'autres moyens
d'authentification en dehors de LDAP peuvent être utilisés. Merci de lire
la documentation sur PAM et NoCatAuth pour trouver les étapes nécessaires
pour utiliser d'autres sources d'authentification.
</para>
<sect3 id="pamldap">
<title>PAM LDAP</title>
<para>
Comme indiqué dans les sections précédentes, j'ai configuré cette
passerelle pour utiliser LDAP comme moyen d'authentification. Néanmoins,
vous pouvez utiliser tout autre moyen autorisé par PAM pour
l'authentification. Voir <xref linkend="authentication"/> pour plus
d'informations.
</para>
<para>
Pour obtenir l'authentification par PAM LDAP, j'ai installé <ulink
url="http://www.openldap.org">OpenLDAP</ulink> et je l'ai configuré avec
les lignes suivantes dans <filename>/etc/ldap.conf</filename> :
</para>
<programlisting>
# Your LDAP server. Must be resolvable without using LDAP.
host itc.musc.edu
# The distinguished name of the search base.
base dc=musc,dc=edu
ssl no
</programlisting>
<para>
Les fichiers suivants ont été utilisés pour configurer PAM pour qu'il
assure l'authentification LDAP. Ces fichiers ont été générés par
l'utilitaire de configuration de RedHat.
</para>
<para>
<filename>/etc/pam.d/system-auth</filename> a été créé et
ressemble à ceci :
</para>
<programlisting>
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
account [default=ok user_unknown=ignore service_err=ignore \
system_err=ignore] /lib/security/pam_ldap.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok
password sufficient /lib/security/pam_ldap.so use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
session optional /lib/security/pam_ldap.so
</programlisting>
<para>
Ensuite, le fichier <filename>/etc/pam.d/sshd</filename>
a été créé :
</para>
<programlisting>
#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
#this line is added for firewall rule insertion upon login
session required /lib/security/pam_iptables.so debug
session optional /lib/security/pam_console.so
</programlisting>
</sect3>
<sect3 id="nocatauthservice">
<title>Le service NoCatAuth</title>
<para>
Il est recommandé d'installer le service NoCatAuth sur un autre serveur,
à côté de la passerelle. Un serveur séparé a été utilisé dans mes exemples.
Pour configurer un service NoCatAuth, vous aurez besoin des logiciels
suivants :
</para>
<orderedlist>
<listitem>
<para>
Un serveur web avec SSL activé, de préférence avec un certificat SSL
enregistré.
J'ai utilisé Apache avec mod_ssl.
</para>
</listitem>
<listitem>
<para>
Perl 5 (5.6 ou ultérieur recommandé)
</para>
</listitem>
<listitem>
<para>
Les modules perl Net::LDAP, Digest::MD5, DBI et DBD::MySQL (récupérez-les à
partir de CPAN). Le module dont vous avez besoin dépend de la source
d'authentification que vous comptez utiliser. Dans mon exemple, Net::LDAP
a été utilisé comme moyen d'authentification.
</para>
</listitem>
<listitem>
<para>
Gnu Privacy Guard (gnupg 1.0.6 ou ultérieur), disponible sur
http://www.gnupg.org/download.html
</para>
</listitem>
</orderedlist>
<para>
Pour l'installer, décompressez le fichier tar :
<programlisting>
$ tar zvxf NoCatAuth-x.xx.tar.gz
</programlisting>
</para>
<para>
Si vous souhaitez changer le chemin où réside NoCatAuth, éditez le Makefile
et remplacez INST_PATH par le répertoire souhaité.
</para>
<para>
Ensuite, lancez la commande :
<command> make authserv </command>.
Cela installe tout dans /usr/local/nocat ou le répertoire que désigne
INST_PATH.
</para>
<para>
Ensuite, lancez <command> make pgpkey </command>.
Les valeurs par défaut conviennent pour la plupart des usages.
IMPORTANT : n'entrez PAS de phrase (passphrase) ! Sinon,
vous obtiendrez des messages étranges lorsque le service auth
essaiera de crypter les messages et essaiera de lire votre phrase à
partir d'un terminal tty inexistant.
</para>
<para>
Editez <filename>/usr/local/nocat/nocat.conf</filename> pour l'adapter à
votre situation. Voici un exemple :
</para>
<programlisting>
###### authserv.conf -- NoCatAuth Authentication Service Configuration.
#
# Format of this file is: Directive Value, one per
# line. Trailing and leading whitespace is ignored. Any
# line beginning with a punctuation character is assumed to
# be a comment.
Verbosity 10
HomePage http://www.itlab.musc.edu/
DocumentRoot /usr/local/nocat/htdocs
# LDAP source
DataSource LDAP
LDAPHost authldap.musc.edu
LDAPBase dc=musc,dc=edu
UserTable Member
UserIDField User
UserPasswdField Pass
UserAuthField Status
UserStampField Created
GroupTable Network
GroupIDField Network
GroupAdminField Admin
MinPasswdLength 8
# LocalGateway -- If you run auth service on the same subnet
# (or host) as the gateway you need to specify the hostname
# of the gateway. Otherwise omit it. (Requires Net::Netmask)
#
# LocalGateway 192.168.1.7
LoginForm login.html
LoginOKForm login_ok.html
FatalForm fatal.html
ExpiredForm expired.html
RenewForm renew.html
PassiveRenewForm renew_pasv.html
RegisterForm register.html
RegisterOKForm register_ok.html
RegisterFields Name URL Description
UpdateForm update.html
UpdateFields URL Description
###### Auth service user messages. Should be self-explanatory.
#
LoginGreeting Greetings! Welcome to the Medical University of SC's Network.
LoginMissing Please fill in all fields!
LoginBadUser That e-mail address is unknown. Please try again.
LoginBadPass That e-mail and password do not match. Please try again.
LoginBadStatus Sorry, you are not a registered co-op member.
RegisterGreeting Welcome! Please enter the following information to register.
RegisterMissing Name, E-mail, and password fields must be filled in.
RegisterUserExists Sorry, that e-mail address is already taken. Are you already registered?
RegisterBadUser The e-mail address provided appears to be invalid. Did you spell it correctly?
RegisterInvalidPass All passwords must be at least six characters long.
RegisterPassNoMatch The passwords you provided do not match. Please try again.
RegisterSuccess Congratulations, you have successfully registered.
UpdateGreeting Enter your E-mail and password to update your info.
UpdateBadUser That e-mail address is unknown. Please try again.
UpdateBadPass That e-mail and password do not match. Please try again.
UpdateInvalidPass New passwords must be at least eight characters long.
UpdatePassNoMatch The new passwords you provided do not match. Please try again.
UpdateSuccess Congratulations, you have successfully updated your account.
</programlisting>
<para>
Assurez-vous que le répertoire /usr/local/nocat/pgp appartient à
l'utilisateur du serveur web (c'est-à-dire nobody ou www-data).
</para>
<para>
Ajoutez etc/authserv.conf à votre fichier
apache <filename>httpd.conf</filename>.
<programlisting> Include /usr/local/nocat/etc/authserv.conf</programlisting>
</para>
<para>
Copiez votre /usr/local/nocat/trustedkeys.pgp sur la passerelle. Relancez
Apache et essayez. Merci de vous reporter à la documentation de NoCatAuth
pour plus d'informations. Elle est disponible dans le répertoire docs/
de l'archive NoCatAuth décompressée.
</para>
</sect3>
</sect2>
<sect2 id="dnssetup">
<title>Configuration du DNS</title>
<para>
J'ai installé la version par défaut de Bind fournie avec RedHat 7.1 et le
paquetage RPM du serveur de noms cache. Le serveur DHCP indique aux machines
du réseau public d'utiliser la machine passerelle comme serveur de noms.
</para>
</sect2>
</sect1>
<sect1 id="usage">
<title>Utiliser la passerelle d'authentification</title>
<para>
Pour utiliser la passerelle d'authentification, configurez votre machine client
pour l'usage du DHCP. Installez un client ssh sur la machine et connectez-vous
avec ssh sur la passerelle. Une fois connecté, vous aurez accès au réseau
interne. Ce qui suit est une session exemple à partir d'un client unix :
</para>
<programlisting>
bash>ssh zornnh@10.0.1.1
zornnh's Password:
gateway>
</programlisting>
<para>
Aussi longtemps que vous restez connecté, vous y aurez accès. Une fois
déconnecté, l'accès sera fermé.
</para>
<para>
Pour utiliser la passerelle d'authentification avec NoCatAuth, configurez votre
machine client pour l'usage du DHCP. Installez un navigateur web tel que
Mozilla. Lancez le navigateur web qui devra être redirigé sur l'écran
d'authentification.
<mediaobject>
<imageobject>
<imagedata fileref="&images;nocat_auth.jpg" format="JPG"/>
</imageobject>
<caption>
<para>Connexion à partir de Nocat</para>
</caption>
</mediaobject>
Indiquez votre nom d'utilisateur et votre mot de passe. Une fenêtre
s'ouvrira pour vous expliquer que vous êtes authentifié sur le réseau et
que vous devez conserver la fenêtre ouverte pour le rester. Cliquez sur
logout ou fermez la fenêtre pour terminer la session.
<mediaobject>
<imageobject>
<imagedata fileref="&images;nocat_auth_in.jpg" format="JPG"/>
</imageobject>
<caption>
<para>Fenêtre d'authentification</para>
</caption>
</mediaobject>
</para>
</sect1>
<!-- Section1: resources: END -->
<sect1 id="remarks">
<title>Remarques de conclusion</title>
<indexterm>
<primary>(your index root)!conclusion</primary>
</indexterm>
<itemizedlist>
<listitem><para>
Cette méthode de sécurisation ne dépend pas de la sécurité apportée par la
communauté du réseau sans-fil. Elle part du principe que le réseau sans-fil
dans son intégralité est non sécurisé et situé en dehors de votre réseau.
</para>
</listitem>
<listitem><para>
La passerelle ne crypte pas le trafic. Elle vous permet seulement d'accéder
au réseau situé derrière elle. Si vous désirez le cryptage et
l'authentification, vous devriez utiliser un VPN.
</para>
</listitem>
</itemizedlist>
</sect1>
<!-- Section1: remarks: END -->
<!-- Section1: resources -->
<sect1 id="resource">
<title>Ressources supplémentaires</title>
<itemizedlist>
<listitem>
<para>Un <ulink
url="http://www.nas.nasa.gov/Groups/Networks/Projects/Wireless/index.html">
document</ulink> décrivant l'implémentation d'une passerelle
d'authentification à la NASA.
</para>
</listitem>
<listitem>
<para>
Un <ulink url="http://www.ualberta.ca/~beck/authgw.html">livre blanc</ulink>
décrivant comment l'Université d'Alberta a créé une passerelle
d'authentification.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://nocat.net">Nocat.net</ulink> a une passerelle
d'authentification pour les réseaux sans-fil. Ce logiciel dispose d'un
client web.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.cs.utexas.edu/users/mcguire/software/horatio/">
Horatio : Authenticated Network Access</ulink>
est un outil pare-feu d'authentification. Leur idée : les utilisateurs
légitimes veulent attacher des portables et autres hôtes mobiles au réseau,
mais la sécurité demande que les utilisateurs illégitimes n'aient ni la
possibilité d'accèder au réseau interne et sécurisé, ni celle d'abuser
d'Internet.
</para>
</listitem>
</itemizedlist>
</sect1>
<!-- Section1: faq -->
<sect1 id="faq">
<title>Questions et réponses</title>
<indexterm>
<primary>(your index root)!FAQ</primary>
</indexterm>
<indexterm>
<primary>(your index root)!frequently asked questions</primary>
</indexterm>
<para>
C'est juste un rassemblement de toutes les questions les plus courantes à ma
connaissance. Apportez-moi un retour d'informations pour que je puisse
transformer cette section en une vrai FAQ.
</para>
<orderedlist>
<listitem>
<para>
Pourquoi les règles d'iptables ne sont-elles pas supprimées quand un client
quitte une fenêtre telnet ? Cela fonctionne si le client se
déconnecte de la session telnet. Dans le cas de ssh, les règles sont
même supprimées si la fenêtre ssh est fermée.
</para>
<para>
Je ne suis pas encore arrivé à une bonne réponse ou à une solution
correcte à ce problème. Logu a apporté quelques modifications à
pam_iptables et a créé un ensemble d'autres outils pour résoudre ce
problème. Ces outils peuvent être trouvés dans le répertoire <ulink
url="http://www.itlab.musc.edu/~nathan/pam_iptables/contrib">contrib
</ulink> avec pam_iptables.
</para>
</listitem>
<listitem>
<para>
Pourquoi NoCat ne fonctionne-t'il pas avec IE6 ? Il semble
faire l'authentification mais n'écrit pas la règle du pare-feu.
</para>
<para>
Assurez-vous que votre html nocat contient ce qui suit :
<meta http-equiv="Refresh" content="$redirect"/>
</para>
<para>
Les fichiers html qui contiennent ce metatag sont login_ok.html,
renew.html, et renew_pasv.html.
</para>
</listitem>
</orderedlist>
</sect1>
<sect1 id="adaptation-francaise" xreflabel="adaptation française">
<title>Adaptation française</title>
<sect2>
<title>Traduction</title>
<para>
La traduction française de ce document a été réalisée par Guillaume
Lelarge <email>gleu CHEZ wanadoo POINT fr</email>.
</para>
</sect2>
<sect2>
<title>Relecture</title>
<para>
La relecture de ce document a été réalisée
par Guillaume Hatt
<email>ghatt CHEZ netcourrier POINT com</email>.
</para>
</sect2>
</sect1>
<!-- Section1: faq: END -->
</article>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:nil
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->