Historique des versions | ||
---|---|---|
Version 0.06 | 2002-11-05 | Revu par : nhz |
Version 0.05 | 2002-05-10 | Revu par : nhz |
Version 0.04 | 2002-02-28 | Revu par : nhz |
Version 0.03 | 2001-09-28 | Revu par : nhz |
Version 0.02 | 2001-09-28 | Revu par : KET |
Version 0.01 | 2001-09-06 | Revu par : nhz |
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.
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 HOWTO décrit comment mettre en place cette passerelle avec Linux.
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
Si vous avez des questions, merci de contacter <zornnh@musc.edu>
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é.
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.
Nommer un produit particulier ou une marque ne doit pas être vu comme une illégalité.
Il est fortement conseillé de faire une sauvegarde de votre système avant toute installation majeure, et d'en faire à intervalles réguliers.
La version la plus récente de ce document peut être trouvée sur . Les HOWTOs en rapport peuvent être trouvés sur le site Linux Documentation Project .
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: <zornnh@musc.edu>
.
Cette section décrit ce qui est nécessaire pour installer la passerelle d'authentification.
La passerelle d'authentification utilise Netfilter et iptables pour gérer le pare-feu. Consultez le HOWTO Netfilter .
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 . Ce module PAM permet aux utilisateurs d'utiliser ssh et telnet pour s'authentifier sur la passerelle.
Un autre moyen pour supprimer et créer dynamiquement des règles Netfilter est d'utiliser NocatAuth. Il peut être trouvé sur . NocatAuth fournit un client web pour s'authentifier sur la passerelle.
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é le serveur DHCP ISC.
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 . 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 les modules pam correspondants.
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 .
La machine passerelle sert aussi de serveur DNS pour le réseau public. J'ai installé Bind, 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.
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.
Pour configurer netfilter, le noyau doit être recompilé pour inclure le support de netfilter. Merci de consulter le HOWTO Noyau pour plus d'informations sur la configuration et la compilation de votre noyau.
Voici à quoi ressemble la configuration de mon noyau.
# # 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
Une fois que netfilter a été configuré, mettez en place la transmission IP (IP forwarding) en exécutant cette commande:
echo 1 > /proc/sys/net/ipv4/ip_forward
Pour s'assurer que la transmission ip est activée lors du redémarrage de la machine, ajoutez la ligne suivante dans /etc/sysctl.conf:
net.ipv4.ip_forward = 1
Si vous allez utilisé NocatAuth, vous pouvez passer à la section Configuration de la passerelle NoCatAuth.
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.
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
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:
iptables -v -t nat -L iptables -v -t filter -L
Pour sauvegarder ces règles, j'ai utilisé les scripts d'initialisation de RedHat.
/etc/init.d/iptables save /etc/init.d/iptables restart
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.
Cette section décrit comment configurer le logiciel nécessaire à l'insertion et à la suppression dynamique de règles Netfilter sur la passerelle.
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 source et compilez-le en lançant les commandes suivantes:
gcc -fPIC -c pam_iptables.c ld -x --shared -o pam_iptables.so pam_iptables.o
Vous devez maintenant avoir deux binaires appelés pam_iptables.so et pam_iptables.o. Copiez pam_iptables.so dans /lib/security/pam_iptables.so:
cp pam_iptables.so /lib/security/pam_iptables.so
Maintenant, installez le script pare-feu dans le répertoire /usr/local/auth-gw:
mkdir /usr/local/auth-gw cp insFwall /usr/local/auth-gw
Le client d'authentification choisi pour la passerelle étant ici ssh, nous avons ajouté la ligne suivante dans /etc/pam.d/sshd:
session required /lib/security/pam_iptables.so
Maintenant, lorsqu'un utilisateur se connectera avec ssh, la règle du pare-feu sera ajoutée.
Pour savoir si le module pam_iptables fonctionne, réalisez les étapes suivantes:
Connectez-vous sur la machine avec ssh.
Vérifiez si la règle a été ajoutée avec la commande iptables -L -v.
Déconnectez-vous de la machine pour vous assurer que la règle est bien supprimée.