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