Avant de commencer � mettre en place votre syst�me, vous devriez conna�tre les d�tails concernant le r�seau. Je consid�re que vous avez deux firewalls, chacun prot�geant un intranet, et qu'il sont tous deux connect�s � l'internet. De fait, vous devriez avoir deux interfaces (au moins) par firewall. Prenez une feuille de papier et �crivez leurs adresses IP et masques de r�seau. Vous aurez besoin d'une adresse IP supl�mentaire par firewall pour le VPN que vous voulez mettre en place. Ces adresses devraient �tre ext�rieures � vos sous-r�seaux existants. Je vous sugg�re d'utiliser des adresses de l'espace d'adressage "priv�". Les voici :
Pour les besoins de l'exemple, voici une configuration : les deux bastions s'appellent fellini et polanski. Ils ont une interface vers l'internet (-out), une pour l'intranet (-in), et une pour le VPN (-vpn).
Voici pour les pr�paratifs.
Vous aurez besoin :
Version actuelles (NDT :au moment de la r�daction de cet HOWTO)
Compilez ou installez les outils que vous venez de rassembler. Consultez attentivement leur documentation (et le firewall-howto) pour de plus amples informations. Mantenant, nous disposons des outils.
Configurez correctement les param�tres des firewalls. Vous devez autoriser les communications ssh entre les deux h�tes disposant de firewalls. Cela signifie qu'il doit exister une connexion sur le port 22 du ma�tre vers l'esclave. Lancez sshd sur l'esclave et v�rifiez que vous pouvez vous connecter. Je n'ai pas v�rifi� cette �tape, n'h�sitez pas � me communiquer les r�sultats que vous avez obtenus.
Cr�ez un compte sur le firewall esclave en utilisant vos outils favoris (par exemple vi, mkdir, chown, chmod). Vous pouvez aussi cr�er un compte sur le ma�tre, mais je pense que vous souhaitez que la connexion se fasse au d�marrage, nous nous servirons donc de votre compte root habituel. Est-ce que quelqu'un pourrait me signaler les risques qu'il y a � utiliser le compte root sur le ma�tre?
Utilisez le programme de g�n�ration de cl� de ssh. Donnez un mot de passe vide pour la cl� priv�e si vous voulez r�aliser une configuration automatique du VPN.
Copiez la cl� publique fra�chement g�n�r�e dans le compte esclave dans le fichier .ssh/authorized_keys, et configurez les droits d'acc�s comme indiqu� ci dessous :
drwx------ 2 esclave esclave 1024 Apr 7 23:49 ./ drwx------ 4 esclave esclave 1024 Apr 24 14:05 ../ -rwx------ 1 esclave esclave 328 Apr 7 03:04 authorized_keys -rw------- 1 esclave esclave 660 Apr 14 15:23 known_hosts -rw------- 1 esclave esclave 512 Apr 21 10:03 random_seed
la premi�re ligne �tant ~esclave/.ssh, la seconde ~esclave.
Ce qui se traduit par la configuration suivante dans sshd_conf :
PermitRootLogin no IgnoreRhosts yes StrictModes yes QuietMode no FascistLogging yes KeepAlive yes RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication no PermitEmptyPasswords no
L'authentification par mot de passe �tant d�sactiv�e, la connexion n'est possible qu'avec les cl�s autoris�es. (Vous aurez bien entendu d�sactiv� telnet et la commande 'r').
Comme le compte ma�tre est aussi le compte root en ce qui me concerne, Il n'y a rien eu � faire. Pour le compte esclave, les lignes suivantes apparaissent dans /etc/sudoers :
Cmnd_Alias VPN=/usr/sbin/pppd,/usr/local/vpn/route esclave ALL=NOPASSWD: VPN
Comme vous pouvez le voir, j'utilise des scripts pour mettre en place ppp et les tables de routage sur l'h�te esclave.
Sur l'h�te ma�tre, j'utilise un full-blown script :
#! /bin/sh # skeleton example file to build /etc/init.d/ scripts. # This file should be used to construct scripts for /etc/init.d. # # Written by Miquel van Smoorenburg <miquels@cistron.nl>. # Modified for Debian GNU/Linux # by Ian Murdock <imurdock@gnu.ai.mit.edu>. # # Version: @(#)skeleton 1.6 11-Nov-1996 miquels@cistron.nl # PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11/: PPPAPP=/home/esclave/ppp ROUTEAPP=/home/esclave/route PPPD=/usr/sbin/pppd NAME=VPN REDIR=/usr/local/bin/pty-redir SSH=/usr/bin/ssh MYPPPIP=192.168.0.1 TARGETIP=192.168.0.2 TARGETNET=193.6.37.0 MYNET=193.6.35.0 ESCLAVEWALL=polanski-out ESCLAVEACC=esclave test -f $PPPD || exit 0 set -e case "$1" in start) echo setting up vpn $REDIR $SSH -o 'Batchmode yes' -t -l $ESCLAVEACC $ESCLAVEWALL sudo $PPPAPP>/tmp/device TTYNAME=`cat /tmp/device` echo tty is $TTYNAME sleep 10s if [ ! -z $TTYNAME ] then $PPPD $TTYNAME ${MYPPPIP}:${TARGETIP} else echo FAILED! logger "vpn setup failed" fi sleep 5s route add -net $TARGETNET gw $TARGETIP $SSH -o 'Batchmode yes' -l $ESCLAVEACC $ESCLAVEWALL sudo $ROUTEAPP ;; stop) ps -ax | grep "ssh -t -l $ESCLAVEACC " | grep -v grep | awk '{print $1}' | xargs kill ;; *) # echo "Usage: /etc/init.d/$NAME {start|stop|reload}" echo "Usage: /etc/init.d/$NAME {start|stop}" exit 1 ;; esac exit 0
L'esclave utilise un script pour la pr�paration du routage (/usr/local/vpn/route) :
#!/bin/bash /sbin/route add -net 193.6.35.0 gw 192.168.0.1
et son .ppprc est tel qu'indiqu� ci-dessous :
passive
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:38