3. Configuration des services de la passerelle

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.

3.1. Configuration de Netfilter

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.

3.2. R�gles dynamiques de Netfilter.

Cette section d�crit comment configurer le logiciel n�cessaire � l'insertion et � la suppression dynamique de r�gles Netfilter sur la passerelle.

3.2.1. Module iptables pour PAM

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�:

  1. Connectez-vous sur la machine avec ssh.

  2. V�rifiez si la r�gle a �t� ajout�e avec la commande iptables -L -v.

  3. D�connectez-vous de la machine pour vous assurer que la r�gle est bien supprim�e.

3.2.2. Passerelle NoCatAuth

Cette section d�crit le processus de configuration de la passerelle NocatAuth. Pour la configurer, r�cup�rez le source et installez-le avec les �tapes suivantes.

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 http://www.gnupg.org/download.html.

Extrayez les fichiers de l'archive tar NocatAuth�:
     tar xvzf NocatAuth-x.xx.tar.gz

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�.

Puis, construisez la passerelle�:
     cd NoCatAuth-x.xx
 make gateway

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�:

     ###### 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 

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�:
     /usr/local/nocat/bin/gateway

3.3. Configuration du serveur DHCP

J'ai install� DHCP en utilisant le fichier dhcpd.conf suivant�:

   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;
 } 

Le serveur a ensuite �t� lanc� en utilisant eth1, l'interface connect�e au r�seau public�:

    /usr/sbin/dhcpd eth1

3.4. Configuration de la m�thode d'authentification

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.

3.4.1. PAM LDAP

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 Section 2.4 pour plus d'informations.

Pour obtenir l'authentification par PAM LDAP, j'ai install� OpenLDAP et je l'ai configur� avec les lignes suivantes dans /etc/ldap.conf�:

     # 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

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.

/etc/pam.d/system-auth a �t� cr�� et ressemble � ceci�:
      #%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

Ensuite, le fichier /etc/pam.d/sshd a �t� cr��:
       #%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

3.4.2. Le service NoCatAuth

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�:

  1. Un serveur web avec SSL activ�, de pr�f�rence avec un certificat SSL enregistr�. J'ai utilis� Apache avec mod_ssl.

  2. Perl 5 (5.6 ou ult�rieur recommand�)

  3. 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.

  4. Gnu Privacy Guard (gnupg 1.0.6 ou ult�rieur), disponible sur http://www.gnupg.org/download.html

Pour l'installer, d�compressez le fichier tar�:
    $ tar zvxf NoCatAuth-x.xx.tar.gz

Si vous souhaitez changer le chemin o� r�side NoCatAuth, �ditez le Makefile et remplacez INST_PATH par le r�pertoire souhait�.

Ensuite, lancez la commande�: make authserv . Cela installe tout dans /usr/local/nocat ou le r�pertoire que d�signe INST_PATH.

Ensuite, lancez make pgpkey . 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.

Editez /usr/local/nocat/nocat.conf pour l'adapter � votre situation. Voici un exemple�:
    ###### 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.

Assurez-vous que le r�pertoire /usr/local/nocat/pgp appartient � l'utilisateur du serveur web (c'est-�-dire nobody ou www-data).

Ajoutez etc/authserv.conf � votre fichier apache httpd.conf.
 Include /usr/local/nocat/etc/authserv.conf

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.

3.5. Configuration du DNS

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.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:34