wiki:Realisations/2006-2007/Projet/Entreprise2/Client1

Version 10 (modified by alladoum, 18 years ago) (diff)

--

ENTREPRISE2? : Matériel? : CLIENT1.ENT2?


  • Description de la machine:

Machine type Client sur le réseau d'entreprise. Il sera capable de créer une (ou plus) communication(s) sécurisée(s) avec le SERVEUR1.ENT2? en mode Transport.

  • Caractéristiques matérielles:
Nom MachineCPURAMDDIPv4IPv6Adresse Mac
CLIENT1.ENT2667Mhz128Mo10Go10.40.0.13/30fe80::280:c8ff:feb9:d4dd00:80:c8:b9:d4:dd
  • Caractéristiques logicielles:
Système d'exploitationHTTPdSMTPdSNMPdMySQLAutres
FreeBSD 6.2 non non non oui cf. liste
  • Caractéristiques de back-up

L'interface 0 (dc0) est l'interface directement reliée au réseau. Les autres interfaces possèdent toutes l'adresse IP 192.168.0.1/24 dans un but d'amélioration de capacité de restauration et/ou d'accès rapide.


Configuration d'un flux IPSec en mode Transport sous FreeBSD

Configuration d'IPSec

Cet exemple a été écrit pour la création d'un flux IPSec en mode Transport entre CLIENT1.ENT2?(10.40.0.13) et SERVEUR1.ENT2? (10.40.0.9).

Vérifiez les options

Les options

options  IPSEC
options  IPSEC_ESP
options  IPSEC_DEBUG (optionnel mais fortement recommandé)

doivent être installées sur le noyau que vous exécutez, sinon recompilez votre noyau.

  • Installez IPSec-tools et Racoon ( votre bonheur se trouve dans les /usr/ports/security)

Configurez IPSec pour FreeBSD


  • Créer le fichier /etc/ipsec.conf :
    $ cat > /etc/ipsec.conf << EOF
    # Definition des SA + Cles
    # Rappel :
    # 3des-cbc,cle de 192 bits (24o)
    # hmac-md5,cle de 128 bits(16o)
    flush;
    
    ## de client1 vers serveur1
    add 10.40.0.13 10.40.0.9 ah  1000 -m transport -A hmac-md5 "1234567890123456";
    add 10.40.0.13 10.40.0.9 esp 1001 -m transport -E 3des-cbc "123456789012345678901234";
    
    ## de serveur1 vers client1
    add 10.40.0.9 10.40.0.13 ah  2000 -m transport -A hmac-md5 "1234567890123456";
    add 10.40.0.9 10.40.0.13 esp  2001 -m transport -E 3des-cbc "123456789012345678901234";
    
    # Definition des SPD
    spdflush;
    spdadd 10.40.0.13 10.40.0.9 any -P out ipsec
    esp/transport/10.40.0.13-10.40.0.9/use
    ah/transport/10.40.0.13-10.40.0.9/use;
    # politique en entree
    spdadd 10.40.0.9 10.40.0.13 any -P in ipsec
    ah/transport/10.40.0.9-10.40.0.13/use
    esp/transport/10.40.0.9-10.40.0.13/use;
    EOF
    
  • Puis entrez
    $ setkey -v -f /etc/ipsec.conf
    
  • Maintenant, si vous entrez
    $ setkey -D -P
    

la création des SA et SP devraient vous produire un affichage à peu près similaire à

[root@SERVEUR1 ~]# setkey -P -D
10.40.0.13[any] 10.40.0.9[any] any
        in ipsec
        ah/transport/10.40.0.13-10.40.0.9/use
        esp/transport/10.40.0.13-10.40.0.9/use
        created: Apr 20 18:10:44 2007  lastused: Apr 20 18:10:44 2007
        lifetime: 0(s) validtime: 0(s)
        spid=16393 seq=1 pid=7761
        refcnt=1
10.40.0.9[any] 10.40.0.13[any] any
        out ipsec
        ah/transport/10.40.0.9-10.40.0.13/use
        esp/transport/10.40.0.9-10.40.0.13/use
        created: Apr 20 18:10:44 2007  lastused: Apr 20 18:10:44 2007
        lifetime: 0(s) validtime: 0(s)
        spid=16392 seq=0 pid=7761
        refcnt=1
  • Pour automatiser cette procédure au démarrage de la machine, éditez dans /etc/rc.conf en ajoutant :
    ipsec_enable="YES"
    ipsec_file="/etc/ipsec.conf"
    
  • Votre démon IPSec sera actif avec les bons paramètres dès le prochain démarrage


Configurer Racoon


  • Créer psk.txt initiant l'échange de clé partagé
    $ cat > psk.txt << EOF
    10.40.0.9       mot_de_passe_t3$T
    EOF
    

L'adresse IP est celle de la cible (ici Serveur1), suivi du mot de passe.

  • Créer racoon.conf. Vous pouvez vous inspirer de l'exemple fourni par défaut avec Racoon, ou bien utiliser (en le modifiant) celui-ci:
    $ cat > racoon.conf << EOF
    #  $File: /home/chris/PRes/Postes_Rackables/ipsec_client1/racoon.conf $
    #  $MD5: 2922df40b60a8f1eb7116f90a485f84a $
    #  $By Christophe Alladoum <christophe[dot]alladoum[at]gmail[dot]com>$
    #  $Last-Modified: Fri Apr 20 18:28:11 2007$
    
    #
    # Configuration de RACOON cote client
    #
    
    path include "/chemin/absolu/vers/ce/repertoire" ;
    
    path pre_shared_key "/chemin/absolu/vers/psk.txt" ;
    # path pre_shared_key "/root/ipsec_client1/psk.txt" ;
    # path certificate "/usr/local/etc/cert" ;
    
    # "log" indique le niveau de debug
    # choix : notify, debug, debug2
    # log debug;
    
    padding
    {
            maximum_length 20;      # maximum padding length.
            randomize off;          # enable randomize length.
            strict_check off;       # enable strict check.
            exclusive_tail off;     # extract last one octet.
    }
    
    # Interfaces a ecouter (IPv4 et/ou v6)
    # Si aucune, ecoute sur toutes les interfaces de la machine
    listen
    {
            # pour le client IPv4
            isakmp 10.40.0.13 [500];
            # pour le client IPv6
            # isakmp ::1 [7000];
    }
    
    # Temporisateurs d echange de cle
    timer
    {
            counter 5;              # maximum trying count to send.
            interval 20 sec;        # maximum interval to resend.
            persend 1;              # the number of packets per a send.
    
            # Temps max. pour chaque phase
            phase1 2 min;
            phase2 4 min;
    }
    
    # Cas du client1
    remote 10.40.0.9
    {
            exchange_mode aggressive,main;
            doi ipsec_doi;
            situation identity_only;
    
            nonce_size 16;
            lifetime time 60 min;   # sec,min,hour
            initial_contact on;
            support_proxy on;
            proposal_check obey;    # obey, strict or claim
    
            proposal {
                    encryption_algorithm blowfish;
                    hash_algorithm sha1;
                    authentication_method pre_shared_key ;
                    dh_group 5 ;
            }
    }
    
    # Cas du client1
    sainfo anonymous
    {
            pfs_group 5;
            lifetime time 48 hour;
            encryption_algorithm 3des, cast128, blowfish 448, des;
            authentication_algorithm hmac_md5, hmac_sha1;
            compression_algorithm deflate ;
    }
    EOF
    
  • A présent, lancez:
    $ /usr/local/sbin/racoon -l /var/log/racoon.log -f /chemin/vers/racoon.conf
    

Un fichier de log (utile pour le debug) sera crée à l'adresse /var/log/racoon.log

  • Votre Racoon est lancé !!

Vérifier le fonctionnement

Via le monitoring, vous devriez observer des échanges similaires aux suivants.

Capturing on dc3
[...]
Echange de cle avec ISAKMP
904.714799    10.40.0.9 -> 10.40.0.13   ISAKMP Aggressive
904.715327    10.40.0.9 -> 10.40.0.13   ISAKMP Aggressive
904.715883    10.40.0.9 -> 10.40.0.13   ISAKMP Aggressive
[...]
Communication Securisee via IPSec/ESP
1 0.000000 10.40.0.9  10.40.0.13 ESP ESP (SPI=0x000007d1)
2 0.000588 10.40.0.9  10.40.0.13 ESP ESP (SPI=0x000007d1)
3 0.000711 10.40.0.13 10.40.0.9  TCP 61738 > 10987 [ACK] Seq=0 Ack=0 Win=17879 Len=1424 TSV=2005181 TSER=751670683
4 0.001238 10.40.0.13 10.40.0.9  TCP [TCP Out-Of-Order] 61738 > 10987 [ACK] Seq=0 Ack=0 Win=17879 Len=1424 TSV=2005181 TSER=751670683
5 0.001792 10.40.0.13 10.40.0.9  TCP [TCP Out-Of-Order] 61738 > 10987 [ACK] Seq=0 Ack=0 Win=17879 Len=1424 TSV=2005181 TSER=751670683
6 0.002747 10.40.0.13 10.40.0.9  TCP 61738 > 10987 [ACK] Seq=1424 Ack=1399 Win=17691 Len=1424 TSV=2005183 TSER=751670687
7 0.002864 10.40.0.9  10.40.0.13 ESP ESP (SPI=0x000007d1)
8 0.003315 10.40.0.13 10.40.0.9  TCP [TCP Out-Of-Order] 61738 > 10987 [ACK] Seq=1424 Ack=1399 Win=17691 Len=1424 TSV=2005183 TSER=751670687

Authentication Header

Data (1424 bytes)

0000  01 56 07 d2 b2 50 99 a6 fc 4c 1d bb 2a 88 d9 09   .V...P...L..*...
0010  e5 05 ad fa c1 4b 62 a5 7b c6 dd d2 ee 4e d7 c7   .....Kb.{....N..
0020  a8 95 6b da b3 ec 28 5c f4 5a 99 08 0a dd 39 20   ..k...(\.Z....9 
0030  c0 ef 9c 7c 6b dc 66 e1 b0 c0 a5 bb 9f bc 4e 99   ...|k.f.......N.
0040  bc f3 38 70 d4 8f 1c f8 fe 8d 4c 8a 94 97 b4 b6   ..8p......L.....
0050  12 1f a1 1b 57 ac 28 97 1a 67 0e e7 aa b8 3a 1b   ....W.(..g....:.
0060  4e 8b 19 6c 80 48 77 aa 80 c5 05 46 74 37 2d 5a   N..l.Hw....Ft7-Z
0070  b3 94 73 9a 13 b7 bf 81 65 11 d8 16 e8 88 e2 5f   ..s.....e......_
0080  6f dc c6 7d fc a7 77 e7 f4 39 12 b3 e9 17 52 b6   o..}..w..9....R.
[...]


Vous pouvez télécharger un exemple de trames échangées entre les stations CLIENT1.ENT2? et SERVEUR1.ENT2? via ce lien. A noter que la trace pèse env. 14Mo (10 000 paquets capturés). Pour voir les échanges, vous devrez ouvrir cette trace avec un outil, comme Wireshark.


Pour plus d'infos, se référer aux man de Setkey , Racoon , IPSec
Références:


  • Annexes:
Puissance 700W
Voltage ?V
Ampérage ?A