A propos...
relu par slayr, contribution de jazz
Rq : les commentaires sont en italique : exemple de commentaire
NoCatAuth
Le logiciel NoCat est un portail web captif destiné à "sécuriser" le partage d’une connexion sans-fil en redirigeant les utilisateurs vers une page web sur laquelle ils doivent s’authentifier via https avec un login/mot de passe. Pour cela, NoCat modifie dynamiquement les règles iptables du firewall pour ouvrir certains ports pour l’utilisateur (uniquement TCP avec NoCatAuth-0.82). Rq : NoCatAuth nécessite les droits root pour manipuler les règles iptables.
Architecture

Le logiciel NoCat fournit 2 modules : authserv (serveur web d’authentification) et gateway (passerelle). La documentation conseille d’installer les 2 modules sur 2 machines séparées car d’une part la gateway tourne avec les droits root et d’autre part cela permet de centraliser la gestion des droits d’accès. Cependant, pour des contraintes matérielles, la passerelle et le serveur d’authentification seront installés sur la même machine : 192.168.2.1.
Voici les paramètres utilisés pour l’installation de NoCat pour mon réseau sans-fil :
Nom de domaine de mon WLAN (Wireless LAN) : .paris7.wlan <- remplacer par le nom de domaine de votre réseau local
Serveur DNS : IP 192.168.2.1
Passerelle/Serveur d’authentification NoCat : IP 192.168.2.1, hostname auth.paris7.wlan
ppp0 : interface reliée à internet
eth1 : interface reliée au réseau sans-fil, adresse IP 192.168.2.1
192.168.2.0/24 : plan d’adressage du réseau sans-fil
Rq : j’ai un serveur DNS interne. Je n’ai pas testé l’utilisation de NoCat sans serveur DNS ; dans la documentation, je décris l’utilisation de fichiers /etc/hosts mais je ne l’ai pas testée. Cette solution n’est pas souple : si vous avez une meilleure solution, envoyer moi un email :)
Rq2 (08/07/2004) : autre solution en l’absence de DNS, vous pouvez remplacer le hostname auth.paris7.wlan par son adresse IP : 192.168.2.1 ; il faudra alors modifier quelques directives de Apache pour les virtualhosts
Logiciels nécessaires
Je suppose que vous avez un serveur web Apache-ssl fonctionnel. Le logiciel NoCat nécessite que les logiciels suivants soient installés :
iptables
# apt-get install iptables
Perl 5.6.1
# apt-get install perl
The Perl5 Database Interface (DBI)
# apt-get install libdbi-perl
mySQL database interface to Perl
optionnel : on peut stoquer les logins/mots de passe dans un fichiet texte ou dans une base de données MySQL).
# apt-get install libdbd-mysql-perl
MD5 Message Digest for Perl
# apt-get install libnet-netmask-perl
Public Key encryption system
# apt-get install pgp
Installation de NoCatAuth-0.82
Télécharger le package NoCatAuth sur le site NoCat puis le décompresser :
# tar -xvzf NoCatAuth-0.82
# cd NoCatAuth-0.82
# mkdir /usr/local/nocat
Installation de la passerelle (gateway)
# make PREFIX=/usr/local/nocat/gateway gateway
Créer une clé PHP pour les échanges entre la passerelle et le serveur d’authentification
# make PREFIX=/usr/local/nocat/authserv pgpkey
[...]
Sélectionnez le type de clé désiré:
Votre choix ? 1
Quelle taille de clé désirez-vous? (1024) 1024
La clé est valide pour ? (0) 0
Est-ce correct (o/n) ? o
Nom réel: node2000
Adresse e-mail: petrus@paris7.wlan
Commentaire: http://www.paris7.wlan
Changer le (N)om, le (C)ommentaire, l'(E)-mail ou (O)K/(Q)uitter ? O
Entrez le mot de passe: <span class="comment">(ne rien mettre : taper sur ENTER)</span>
Répéter le mot de passe: <span class="comment">(idem)</span>
Copier la clé créée du serveur d’authentification dans le répertoire PGP de la passerelle
# cp /usr/local/nocat/authserv/trustedkeys.gpg /usr/local/nocat/gateway/pgp/
Le serveur web d’authentification a besoin des droits en écriture sur le répertoire PGP. Changer le owner et le group du répertoire pour qu’ils soient les mêmes que ceux du serveur web Apache (par défaut www-data sous Debian)
# chown -R www-data.www-data /usr/local/nocat/authserv/pgp/
Configuration du fichier /usr/local/nocat/gateway/nocat.conf
Modifier les paramètres suivants :
| AuthServiceAddr | auth.paris7.wlan | (hostname du serveur d’authentification ou mettre son adresse IP : 192.168.2.1 en l’absence de serveur DNS) |
| ExternalDevice | ppp0 | (interface publique) |
| InternalDevice | eth1 | (interface privée) |
| LocalNetwork | 192.168.2.0/24 | |
| DNSAddr | 192.168.2.1 | (IP de votre serveur DNS interne ou de celui de votre Fournisseur d’accès) |
| IncludePorts | 22 80 443 | (ports TCP autorisés : SSH, HTTP, HTTPS) |
| LogFacility | internal |
Configuration du DNS
L’adresse du serveur d’authentification choisie est : auth.paris7.wlan (192.168.2.1).
Si vous avez un serveur DNS interne pour le domaine paris7.wlan, rajouter une entrée dans BIND puis passez au paragraphe suivant.
Si vous n’avez pas de serveur DNS interne, ajoutez une nouvelle entrée dans le fichier /etc/hosts.
# echo "192.168.2.1 auth.paris7.wlan" >> /etc/hosts
Modifiez de même le fichier /etc/hosts sur vos postes clients. Sous Windows, il existe un fichier similaire :
c:\WINNT\system32\drivers\etc\hosts
Configuration du fichier /usr/local/nocat/authserv/nocat.conf
Modifier les paramètres suivants :
| LocalGateway | 192.168.2.1 | |
| LocaltNetwork | 192.168.2.0/24 | (cette variable n’existe pas dans le fichier par defaut fourni avec NoCat) |
Configuration du serveur Apache-SSL
Génération d’un certificat
# cd /etc/ssl/private
# openssl genrsa 1024 > auth.paris7.wlan.key
<span class="comment">(ne pas mettre de passphrase)</span>
# chown root.root auth.paris7.wlan.key
# chmod 400 auth.paris7.wlan.key
# cd /etc/ssl/certs
# openssl req -new -key ../private/auth.paris7.wlan.key > auth.paris7.wlan.csr
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris
Locality Name (eg, city) []: Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:WirelessLAN
Organizational Unit Name (eg, section) []:Paris 7
Common Name (ef, YOUR name) []: auth.paris7.wlan
<span class="comment">! mettre le hostname du serveur d'authentification : auth.paris7.wlan
ou son adresse IP : 192.168.2.1 en l'absence de serveur DNS !</span>
Email Address []:petrus@paris7.wlan
A challenge password[]:
An optional company name []:
# openssl req -x509 -key ../private/auth.paris7.wlan.key -in auth.paris7.wlan.csr > auth.paris7.wlan.crt
Enter PEM pass phrase:
Configuration du fichier /etc/apache-ssl/httpd.conf
Décommenter la ligne suivante :
LoadModule env_module /usr/lib/apache/1.3/mod_env.so
Ajouter à la fin du fichier les lignes suivantes :
<VirtualHost auth.paris7.wlan>
ServerName auth.paris7.wlan
SSLCertificateFile /etc/ssl/certs/auth.paris7.wlan.crt
SSLCertificateKeyFile /etc/ssl/private/auth.paris7.wlan.key
DocumentRoot /usr/local/nocat/authserv/htdocs
Include /usr/local/nocat/authserv/httpd.conf
</VirtualHost>
Relancer le serveur web Apache
# /etc/init.d/apache-ssl restart
Authentification des utilisateurs avec fichier passwd
Editer le fichier /usr/local/nocat/authserv/nocat.conf et modifier la ligne
DataSource Passwd
Décommenter les 3 lignes suivantes :
UserFile /usr/local/nocat/authserv/etc/passwd
GroupUserFile /usr/local/nocat/authserv/etc/group
GroupAdminFile /usr/local/nocat/authserv/etc/groupadm
Ajouter un utilisateur avec la commande (le mot de passe doit avoir une longueur > 6 caractères)
/usr/local/nocat/authserv/bin/admintool -c login password
ex: admintool -c toto pouet
Alternative : authentification des utilisateurs avec base mySQL
non testé...
Test de l’installation de NoCatAuth
Lancer la passerelle Nocat
# /usr/local/nocat/gateway/bin/gateway
Si tout se passe bien, vous devriez voir dans la console le message :
Resetting firewall.
Binding listener socket to 0.0.0.0
Rq : pour relancer la passerelle, utiliser la commande
# /usr/local/nocat/gateway/bin/gateway -R
Sur le poste client sans-fil, ouvrir un navigateur et taper une URL. Vous devriez être redirigé vers le portail web du serveur d’Authentification NoCat :

Rentrez votre login/mot de passe. Une page de confirmation apparait avant de vous rediriger automatiquement vers l’URL tapée :

Puis une popup apparait : vous devez la laisser ouverte pour renouveller automatiquement votre login/mot de passe sur le serveur :

Personnalisation des règles du Firewall
Vous pouvez rajouter des règles personnalisées au Firewall (lancées au moment de l’initialisation de la passerelle) à la fin du fichier suivant :
/usr/local/nocat/gateway/bin/initialize.fw
Commentaires
1. jeudi 23 février 2006 à 15:56, par luc gallas
2. jeudi 16 mars 2006 à 09:35, par Mg
3. vendredi 15 septembre 2006 à 17:03, par six loups
4. vendredi 16 novembre 2007 à 17:16, par karim
Ajouter un commentaire