On Thu, Nov 07, 2002 at 06:24:51PM +0100, Le Sensei... wrote: > Ca fait des lustres que j'ai un réseau wireless chez moi, mais je n'ai encore > pas osé me lancer dans IPSEC, bien que j'en ai eu très envie... Bon. Je suppose qu'en gros, tu as: 1) 1 routeur NAT 2) Un flottille de clients Ce que j'ai fait, c'est sécuriser la communication entre les clients et le routeur, pas entre les clients "direct". Si c'est ce que tu désires, tu devras, pour n clients, ou bien mettre n^2 lignes de configuration sur chaque machine, ou mettre en place un dns "interne" sécurisé avec dnssec (hmmm... maintenant que j'y pense ça peut être par la connexion ipsec avec le serveur DNS). Si tu veux le faire, je veux bien t'aider (ça m'excite), mais je ne l'ai pas fait. Mais je suppose que tes clients ne communiquent pas entre eux, tu veux juste que ça marche bien avec le routeur (maintenant que j'y pense, tu peux aussi, pour simplifier, faire passer tout le trafic, même le "local", via le routeur. Ça coûte 50% de performance, mais...). Bon, revenons à nos moutons: - J'ai installé freeswan et kernel-patch-freeswan-ext de sid. J'ai installé libc6 de sarge pour faire passer, mais tu peux aussi backporter. INSTALLE libssl-dev!! Apparemment, c'est une dépendance qui manque, d'après les rapports de bogue. - Installer kernel-source-2.4.19 Le patch kernel ajoute des options de configuration, donc utiliser --config menuconfig, etc (si tu as plus de chance qu'avec les patches ACL :-), tiens, j'y pense, un "make-kpkg clean" aurait peut-être résolu l'affaire) Ma config: CONFIG_IPSEC=m CONFIG_IPSEC_IPIP=y CONFIG_IPSEC_AH=y CONFIG_IPSEC_AUTH_HMAC_MD5=y CONFIG_IPSEC_AUTH_HMAC_SHA1=y CONFIG_IPSEC_ESP=y CONFIG_IPSEC_ENC_3DES=y CONFIG_IPSEC_ALG=y CONFIG_IPSEC_ALG_MD5=m CONFIG_IPSEC_ALG_SHA1=m CONFIG_IPSEC_ALG_SHA2=m CONFIG_IPSEC_ALG_3DES=m CONFIG_IPSEC_ALG_AES=m CONFIG_IPSEC_ALG_BLOWFISH=m CONFIG_IPSEC_ALG_CAST=m # CONFIG_IPSEC_ALG_NULL is not set CONFIG_IPSEC_ALG_SERPENT=m CONFIG_IPSEC_ALG_TWOFISH=m CONFIG_IPSEC_IPCOMP=y CONFIG_IPSEC_DEBUG=y (Oui, il y a double emploi entre CONFIG_IPSEC_ALG_3DES et CONFIG_IPSEC_ENC_3DES, de même pour SHA1 et MD5) Malheureusement, pour charger des algos supplémentaires, il faut éditer /etc/init.d/ipsec (ou le faire à la main). Ne pas oublier de les décharger à l'arrêt aussi. ==== configuration ====== Maintenant que tout est installé, la config. Comme j'avais déjà mon propre CA X.509, j'ai créé un certificat pour chaque machine, avec le hostname en CN. Tu peux utiliser des clés RSA sans la sauce X.509 si tu veux, mais alors pas d'interopérabilité avec Microsoft Windows 2000, et de nouveau, chaque machine doit avoir une ligne de configuration par pair avec qui elle veut communiquer. Si tu veux commencer ton propre CA, /usr/lib/ssl/misc/ contient CA.pl et CA.sh pour faciliter un peu le travail. Sur un de mes clients, voici mon /etc/ipsec.conf: --------------- begin ipsec.conf -------------------- # /etc/ipsec.conf - FreeS/WAN IPsec configuration file # More elaborate and more varied sample configurations can be found # in FreeS/WAN's doc/examples file, and in the HTML documentation. # basic configuration config setup # THIS SETTING MUST BE CORRECT or almost nothing will work; # %defaultroute is okay for most simple cases. # interfaces=%defaultroute interfaces="ipsec0=eth0" # Debug-logging controls: "none" for (almost) none, "all" for lots. klipsdebug=none plutodebug=none # Use auto= parameters in conn descriptions to control startup actions. plutoload=%search plutostart=%search # Close down old connection when new one using same ID shows up. uniqueids=yes # defaults for subsequent connection descriptions # (these defaults will soon go away) conn %default keyingtries=0 disablearrivalcheck=no #use RSA based authentication with certificates authby=rsasig rightrsasigkey=%cert #freeswan security gateway leftcert=thinkpadCert.pem leftid="C=LU, L=Bereldange, O=The Lionel Elie Mamane Corp., OU=Mobile Computing Services, CN=thinkpad.home.mamane.lu/Email=lionel@mamane.lu" conn BereldangeWiFi # Left security gateway, subnet behind it, next hop toward right. left=172.16.0.3 # Right security gateway, subnet behind it, next hop toward left. right=172.16.0.2 rightsubnet=0.0.0.0/0 rightid="C=LU, ST=., L=Bereldange, O=The Lionel Elie Mamane Corp., OU=Network Services Headquarters, CN=tehina.home.mamane.lu, E=lionel@mamane.lu" ike=aes128-sha-modp2048 esp=aes-sha1 pfsgroup=modp2048 # uncomment next line to enable it auto=route ---------------- end ipsec.conf --------------------- Je n'ai pas accès au routeur maintenant (le réseau est à ma maison des week-ends, pas ma maison de la semaine), mais ça doit ressembler à ça: --------------- begin ipsec.conf -------------------- # /etc/ipsec.conf - FreeS/WAN IPsec configuration file # More elaborate and more varied sample configurations can be found # in FreeS/WAN's doc/examples file, and in the HTML documentation. # basic configuration config setup # THIS SETTING MUST BE CORRECT or almost nothing will work; # %defaultroute is okay for most simple cases. # interfaces=%defaultroute interfaces="ipsec0=eth0" # Debug-logging controls: "none" for (almost) none, "all" for lots. klipsdebug=none plutodebug=none # Use auto= parameters in conn descriptions to control startup actions. plutoload=%search plutostart=%search # Close down old connection when new one using same ID shows up. uniqueids=yes # defaults for subsequent connection descriptions # (these defaults will soon go away) conn %default keyingtries=0 disablearrivalcheck=no #use RSA based authentication with certificates authby=rsasig rightrsasigkey=%cert #freeswan security gateway left=172.16.0.2 leftsubnet=0.0.0.0/0 leftcert=tehinaCert.pem leftid="C=LU, ST=., L=Bereldange, O=The Lionel Elie Mamane Corp., OU=Network Services Headquarters, CN=tehina.home.mamane.lu, E=lionel@mamane.lu" conn thinkpad # Right security gateway, subnet behind it, next hop toward left. right=172.16.0.3 rightid="C=LU, L=Bereldange, O=The Lionel Elie Mamane Corp., OU=Mobile Computing Services, CN=thinkpad.home.mamane.lu/Email=lionel@mamane.lu" ike=aes128-sha-modp2048 esp=aes-sha1 pfsgroup=modp2048 # uncomment next line to enable it auto=route ---------------- end ipsec.conf --------------------- /etc/ipsec.conf contient une seule ligne (à part les commentaires): : RSA thinkpadKey.pem Maintenant, dans le répertoire /etc/ipsec.d, il y a: thinkpadCert.pem, le certificat X.509 de la machine private/thinkpadkey.pem, la clé privée RSA de la machine cacerts/lionel.pem, le certificat X.509 de mon CA La doc dit de mettre le certificat de la machine dans /etc/x509cert.der, je l'ai fait sur le routeur, mais pas sur les clients, et «ça marche» ®. Sur les clients, freeswan se plante dans les modifs qu'il fait à la table de routage. Après établissement de le communication, je lance ce script pour corriger: /sbin/route add -host 172.16.0.2 gw 172.16.0.2 dev ipsec0 /sbin/route del -net 0.0.0.0 gw 172.16.0.2 netmask 128.0.0.0 /sbin/route del -net 128.0.0.0 gw 172.16.0.2 netmask 128.0.0.0 /sbin/route add default gw 172.16.0.2 dev ipsec0 (Quand je revois ça, je me dis que finalement, ça risque de marcher tel quel, sans lancer le script) Au niveau firewalling, sur les clients, ça peut rester très simple si les toutes les machines ipsec sont de confiance: #Drop by default iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD # allow IPsec # # IKE negotiations iptables -A INPUT -p udp --sport 500 --dport 500 -j ACCEPT iptables -A OUTPUT -p udp --sport 500 --dport 500 -j ACCEPT # ESP encrypton and authentication iptables -A INPUT -p 50 -j ACCEPT iptables -A OUTPUT -p 50 -j ACCEPT # uncomment for AH authentication header # iptables -A INPUT -p 51 -j ACCEPT # iptables -A OUTPUT -p 51 -j ACCEPT # Accept from local interface, too!: iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i ipsec0 -j ACCEPT iptables -A OUTPUT -j ACCEPT # LOG every other attempt iptables -A INPUT -j LOG Pour le routeur, j'ai installé ipmasq, et j'ai modifié les /etc/ipmasq/rules assez profondément. Je pourrai les récupérer d'ici une semaine. Bon, je vois rien d'autre, à moins que tu n'aies des clients Windows 2000/XP. Tu en as? -- Lionel
Attachment:
pgp79oFTV7SaQ.pgp
Description: PGP signature