Cryptographie et tunnel OpenVPN
08/02/2005
 Christian CALECA 
Liste des cours

Tunnel sécurisé

Accueil ] [ Avant propos ] [ Les clés du chiffrement ] [ Méthodes ] [ OpenVPN simple ] [ OpenSSL ] [ Tunnel sécurisé ] [ Applications ]


La dernière ligne droite

Nous démarrons le tunnel, comme précédemment, mais avec les options nécessaires à l'étanchéité (un tunnel sans fuites parce les données seront chiffrées et que les extrémités seront authentifiées) :

Sur AARON

aaron:~# openvpn --port 8147 \
> --dev tun1 \
> --ifconfig 192.168.25.1 192.168.25.2 \
> --tls-server \        ## AARON sera serveur SSL/TLS
> --dh dh1024.pem \     ## les paramètres pour calculer la clé de session
> --ca aaron-ca.crt \   ## le certificat de l'autorité
> --cert aaron.crt \    ## le certificat du bout du tunnel
> --key aaron.key \     ## la clé privée du bout du tunnel
> --reneg-sec 21600 \   ## durée de vie de la clé de session
> --comp-lzo \
> --verb 5

Pour de plus amples renseignements sur les paramètres d'OpenVPN, consultez le "man", dont il existe une traduction française ici.

Démarrage d'OpenVPN sur AARON :

Sun Jun 27 17:16:06 2004 0[0]: Current Parameter Settings:
Sun Jun 27 17:16:06 2004 1[0]:   config = '[UNDEF]'
Sun Jun 27 17:16:06 2004 2[0]:   persist_config = DISABLED
Sun Jun 27 17:16:06 2004 3[0]:   persist_mode = 1
Sun Jun 27 17:16:06 2004 4[0]:   show_ciphers = DISABLED
Sun Jun 27 17:16:06 2004 5[0]:   show_digests = DISABLED
Sun Jun 27 17:16:06 2004 6[0]:   genkey = DISABLED
Sun Jun 27 17:16:06 2004 7[0]:   askpass = DISABLED
Sun Jun 27 17:16:06 2004 8[0]:   show_tls_ciphers = DISABLED
Sun Jun 27 17:16:06 2004 9[0]:   proto = 0
Sun Jun 27 17:16:06 2004 10[0]:   local = '[UNDEF]'
Sun Jun 27 17:16:06 2004 11[0]:   remote = '[UNDEF]'
Sun Jun 27 17:16:06 2004 12[0]:   local_port = 8147
Sun Jun 27 17:16:06 2004 13[0]:   remote_port = 8147
Sun Jun 27 17:16:06 2004 14[0]:   remote_float = DISABLED
Sun Jun 27 17:16:06 2004 15[0]:   ipchange = '[UNDEF]'
Sun Jun 27 17:16:06 2004 16[0]:   bind_local = ENABLED
Sun Jun 27 17:16:06 2004 17[0]:   dev = 'tun1'
Sun Jun 27 17:16:06 2004 18[0]:   dev_type = '[UNDEF]'
Sun Jun 27 17:16:06 2004 19[0]:   dev_node = '[UNDEF]'
Sun Jun 27 17:16:06 2004 20[0]:   tun_ipv6 = DISABLED
Sun Jun 27 17:16:06 2004 21[0]:   ifconfig_local = '192.168.25.1'
Sun Jun 27 17:16:06 2004 22[0]:   ifconfig_remote_netmask = '192.168.25.2'
Sun Jun 27 17:16:06 2004 23[0]:   ifconfig_noexec = DISABLED
Sun Jun 27 17:16:06 2004 24[0]:   ifconfig_nowarn = DISABLED
Sun Jun 27 17:16:06 2004 25[0]:   shaper = 0
Sun Jun 27 17:16:06 2004 26[0]:   tun_mtu = 1300
Sun Jun 27 17:16:06 2004 27[0]:   tun_mtu_defined = DISABLED
Sun Jun 27 17:16:06 2004 28[0]:   link_mtu = 1300
Sun Jun 27 17:16:06 2004 29[0]:   link_mtu_defined = ENABLED
Sun Jun 27 17:16:06 2004 30[0]:   tun_mtu_extra = 0
Sun Jun 27 17:16:06 2004 31[0]:   tun_mtu_extra_defined = DISABLED
Sun Jun 27 17:16:06 2004 32[0]:   fragment = 0
Sun Jun 27 17:16:06 2004 33[0]:   mtu_discover_type = -1
Sun Jun 27 17:16:06 2004 34[0]:   mtu_test = 0
Sun Jun 27 17:16:06 2004 35[0]:   mlock = DISABLED
Sun Jun 27 17:16:06 2004 36[0]:   inactivity_timeout = 0
Sun Jun 27 17:16:06 2004 37[0]:   ping_send_timeout = 0
Sun Jun 27 17:16:06 2004 38[0]:   ping_rec_timeout = 0
Sun Jun 27 17:16:06 2004 39[0]:   ping_rec_timeout_action = 0
Sun Jun 27 17:16:06 2004 40[0]:   ping_timer_remote = DISABLED
Sun Jun 27 17:16:06 2004 41[0]:   persist_tun = DISABLED
Sun Jun 27 17:16:06 2004 42[0]:   persist_local_ip = DISABLED
Sun Jun 27 17:16:06 2004 43[0]:   persist_remote_ip = DISABLED
Sun Jun 27 17:16:06 2004 44[0]:   persist_key = DISABLED
Sun Jun 27 17:16:06 2004 45[0]:   mssfix_defined = DISABLED
Sun Jun 27 17:16:06 2004 46[0]:   mssfix = 0
Sun Jun 27 17:16:06 2004 47[0]:   passtos = DISABLED
Sun Jun 27 17:16:06 2004 48[0]:   resolve_retry_seconds = 0
Sun Jun 27 17:16:06 2004 49[0]:   connect_retry_seconds = 5
Sun Jun 27 17:16:06 2004 50[0]:   username = '[UNDEF]'
Sun Jun 27 17:16:06 2004 51[0]:   groupname = '[UNDEF]'
Sun Jun 27 17:16:06 2004 52[0]:   chroot_dir = '[UNDEF]'
Sun Jun 27 17:16:06 2004 53[0]:   cd_dir = '[UNDEF]'
Sun Jun 27 17:16:06 2004 54[0]:   writepid = '[UNDEF]'
Sun Jun 27 17:16:06 2004 55[0]:   up_script = '[UNDEF]'
Sun Jun 27 17:16:06 2004 56[0]:   down_script = '[UNDEF]'
Sun Jun 27 17:16:06 2004 57[0]:   up_restart = DISABLED
Sun Jun 27 17:16:06 2004 58[0]:   daemon = DISABLED
Sun Jun 27 17:16:06 2004 59[0]:   inetd = 0
Sun Jun 27 17:16:06 2004 60[0]:   log = DISABLED
Sun Jun 27 17:16:06 2004 61[0]:   nice = 0
Sun Jun 27 17:16:06 2004 62[0]:   verbosity = 5
Sun Jun 27 17:16:06 2004 63[0]:   mute = 0
Sun Jun 27 17:16:06 2004 64[0]:   gremlin = DISABLED
Sun Jun 27 17:16:06 2004 65[0]:   occ = ENABLED
Sun Jun 27 17:16:06 2004 66[0]:   http_proxy_server = '[UNDEF]'
Sun Jun 27 17:16:06 2004 67[0]:   http_proxy_port = 0
Sun Jun 27 17:16:06 2004 68[0]:   http_proxy_auth_method = '[UNDEF]'
Sun Jun 27 17:16:06 2004 69[0]:   http_proxy_auth_file = '[UNDEF]'
Sun Jun 27 17:16:06 2004 70[0]:   http_proxy_retry = DISABLED
Sun Jun 27 17:16:06 2004 71[0]:   socks_proxy_server = '[UNDEF]'
Sun Jun 27 17:16:06 2004 72[0]:   socks_proxy_port = 0
Sun Jun 27 17:16:06 2004 73[0]:   socks_proxy_retry = DISABLED
Sun Jun 27 17:16:06 2004 74[0]:   comp_lzo = ENABLED
Sun Jun 27 17:16:06 2004 75[0]:   comp_lzo_adaptive = ENABLED
Sun Jun 27 17:16:06 2004 76[0]:   route_script = '[UNDEF]'
Sun Jun 27 17:16:06 2004 77[0]:   route_default_gateway = '[UNDEF]'
Sun Jun 27 17:16:06 2004 78[0]:   route_noexec = DISABLED
Sun Jun 27 17:16:06 2004 79[0]:   route_delay = 0
Sun Jun 27 17:16:06 2004 80[0]:   route_delay_defined = DISABLED
Sun Jun 27 17:16:06 2004 81[0]:   shared_secret_file = '[UNDEF]'
Sun Jun 27 17:16:06 2004 82[0]:   key_direction = 0
Sun Jun 27 17:16:06 2004 83[0]:   ciphername_defined = ENABLED
Sun Jun 27 17:16:06 2004 84[0]:   ciphername = 'BF-CBC'
Sun Jun 27 17:16:06 2004 85[0]:   authname_defined = ENABLED
Sun Jun 27 17:16:06 2004 86[0]:   authname = 'SHA1'
Sun Jun 27 17:16:06 2004 87[0]:   keysize = 0
Sun Jun 27 17:16:06 2004 88[0]:   replay = ENABLED
Sun Jun 27 17:16:06 2004 89[0]:   replay_window = 64
Sun Jun 27 17:16:06 2004 90[0]:   replay_time = 15
Sun Jun 27 17:16:06 2004 91[0]:   packet_id_file = '[UNDEF]'
Sun Jun 27 17:16:06 2004 92[0]:   use_iv = ENABLED
Sun Jun 27 17:16:06 2004 93[0]:   test_crypto = DISABLED
Sun Jun 27 17:16:06 2004 94[0]:   tls_server = ENABLED
Sun Jun 27 17:16:06 2004 95[0]:   tls_client = DISABLED
Sun Jun 27 17:16:06 2004 96[0]:   key_method = 1
Sun Jun 27 17:16:06 2004 97[0]:   ca_file = 'aaron-ca.crt'
Sun Jun 27 17:16:06 2004 98[0]:   dh_file = 'dh1024.pem'
Sun Jun 27 17:16:06 2004 99[0]:   cert_file = 'aaron.crt'
Sun Jun 27 17:16:06 2004 100[0]:   priv_key_file = 'aaron.key'
Sun Jun 27 17:16:06 2004 101[0]:   cipher_list = '[UNDEF]'
Sun Jun 27 17:16:06 2004 102[0]:   tls_verify = '[UNDEF]'
Sun Jun 27 17:16:06 2004 103[0]:   tls_remote = '[UNDEF]'
Sun Jun 27 17:16:06 2004 104[0]:   crl_file = '[UNDEF]'
Sun Jun 27 17:16:06 2004 105[0]:   tls_timeout = 2
Sun Jun 27 17:16:06 2004 106[0]:   renegotiate_bytes = 0
Sun Jun 27 17:16:06 2004 107[0]:   renegotiate_packets = 0
Sun Jun 27 17:16:06 2004 108[0]:   renegotiate_seconds = 21600
Sun Jun 27 17:16:06 2004 109[0]:   handshake_window = 60
Sun Jun 27 17:16:06 2004 110[0]:   transition_window = 3600
Sun Jun 27 17:16:06 2004 111[0]:   single_session = DISABLED
Sun Jun 27 17:16:06 2004 112[0]:   tls_auth_file = '[UNDEF]'
Sun Jun 27 17:16:06 2004 113[0]: OpenVPN 1.6.0 i386-pc-linux-gnu [SSL] [LZO] [PTHREAD] built on Jun 10 2004
Sun Jun 27 17:16:07 2004 114[0]: Diffie-Hellman initialized with 1024 bit key
Sun Jun 27 17:16:07 2004 115[0]: WARNING: file 'aaron.key' is group or others accessible
                                 ### Une clé privée doit être PRIVEE, donc il faut corriger ça...
Sun Jun 27 17:16:07 2004 116[0]: LZO compression initialized
Sun Jun 27 17:16:07 2004 117[0]: Control Channel MTU parms [ L:1300 D:138 EF:38 EB:0 ET:0 EL:0 ]
Sun Jun 27 17:16:07 2004 118[0]: TUN/TAP device tun1 opened
Sun Jun 27 17:16:07 2004 119[0]: /sbin/ifconfig tun1 192.168.25.1 pointopoint 192.168.25.2 mtu 1258
Sun Jun 27 17:16:07 2004 120[0]: Data Channel MTU parms [ L:1300 D:1300 EF:42 EB:19 ET:0 EL:0 ]
Sun Jun 27 17:16:07 2004 121[0]: Local Options String: 'V3,dev-type tun,link-mtu 1300,tun-mtu 1258,
                                 proto UDPv4,ifconfig 192.168.25.2 192.168.25.1,
                                 comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,tls-server'
Sun Jun 27 17:16:07 2004 122[0]: Expected Remote Options String: 'V3,dev-type tun,link-mtu 1300,
                                 tun-mtu 1258,proto UDPv4,ifconfig 192.168.25.1 192.168.25.2,comp-lzo,
                                 cipher BF-CBC,auth SHA1,keysize 128,tls-client'
Sun Jun 27 17:16:07 2004 123[0]: Local Options hash (VER=V3): '562c6d4b'
Sun Jun 27 17:16:07 2004 124[0]: Expected Remote Options hash (VER=V3): '65854add'
Sun Jun 27 17:16:07 2004 125[0]: PTHREAD support initialized
Sun Jun 27 17:16:07 2004 126[0]: UDPv4 link local (bound): [undef]:8147
Sun Jun 27 17:16:07 2004 127[0]: UDPv4 link remote: [undef]

Pas d'insultes, c'est bon signe. Dans la fin du log, observez les lignes qui explicitent le mode de chiffrement choisi.

Sur CYCLOPE

cyclope:~# openvpn \
> --remote 82.127.57.95 \
> --port 8147 \
> --dev tun1 \
> --ifconfig 192.168.25.2 192.168.25.1 \
> --tls-client \
> --ca aaron-ca.crt \
> --cert cyclope.crt \
> --key cyclope.key \
> --reneg-sec 21600 \
> --comp-lzo \
> --verb 5

Nous retrouvons ici le même principe que pour AARON, hormis les paramètres :

Sun Jun 27 17:27:19 2004 0[0]: Current Parameter Settings:
Sun Jun 27 17:27:19 2004 1[0]:   config = '[UNDEF]'
Sun Jun 27 17:27:19 2004 2[0]:   persist_config = DISABLED
Sun Jun 27 17:27:19 2004 3[0]:   persist_mode = 1
Sun Jun 27 17:27:19 2004 4[0]:   show_ciphers = DISABLED
Sun Jun 27 17:27:19 2004 5[0]:   show_digests = DISABLED
Sun Jun 27 17:27:19 2004 6[0]:   genkey = DISABLED
Sun Jun 27 17:27:19 2004 7[0]:   askpass = DISABLED
Sun Jun 27 17:27:19 2004 8[0]:   show_tls_ciphers = DISABLED
Sun Jun 27 17:27:19 2004 9[0]:   proto = 0
Sun Jun 27 17:27:19 2004 10[0]:   local = '[UNDEF]'
Sun Jun 27 17:27:19 2004 11[0]:   remote = '82.127.57.95'
Sun Jun 27 17:27:19 2004 12[0]:   local_port = 8147
Sun Jun 27 17:27:19 2004 13[0]:   remote_port = 8147
Sun Jun 27 17:27:19 2004 14[0]:   remote_float = DISABLED
Sun Jun 27 17:27:19 2004 15[0]:   ipchange = '[UNDEF]'
Sun Jun 27 17:27:19 2004 16[0]:   bind_local = ENABLED
Sun Jun 27 17:27:19 2004 17[0]:   dev = 'tun1'
Sun Jun 27 17:27:19 2004 18[0]:   dev_type = '[UNDEF]'
Sun Jun 27 17:27:19 2004 19[0]:   dev_node = '[UNDEF]'
Sun Jun 27 17:27:19 2004 20[0]:   tun_ipv6 = DISABLED
Sun Jun 27 17:27:19 2004 21[0]:   ifconfig_local = '192.168.25.2'
Sun Jun 27 17:27:19 2004 22[0]:   ifconfig_remote_netmask = '192.168.25.1'
Sun Jun 27 17:27:19 2004 23[0]:   ifconfig_noexec = DISABLED
Sun Jun 27 17:27:19 2004 24[0]:   ifconfig_nowarn = DISABLED
Sun Jun 27 17:27:19 2004 25[0]:   shaper = 0
Sun Jun 27 17:27:19 2004 26[0]:   tun_mtu = 1300
Sun Jun 27 17:27:19 2004 27[0]:   tun_mtu_defined = DISABLED
Sun Jun 27 17:27:19 2004 28[0]:   link_mtu = 1300
Sun Jun 27 17:27:19 2004 29[0]:   link_mtu_defined = ENABLED
Sun Jun 27 17:27:19 2004 30[0]:   tun_mtu_extra = 0
Sun Jun 27 17:27:19 2004 31[0]:   tun_mtu_extra_defined = DISABLED
Sun Jun 27 17:27:19 2004 32[0]:   fragment = 0
Sun Jun 27 17:27:19 2004 33[0]:   mtu_discover_type = -1
Sun Jun 27 17:27:19 2004 34[0]:   mtu_test = 0
Sun Jun 27 17:27:19 2004 35[0]:   mlock = DISABLED
Sun Jun 27 17:27:19 2004 36[0]:   inactivity_timeout = 0
Sun Jun 27 17:27:19 2004 37[0]:   ping_send_timeout = 0
Sun Jun 27 17:27:19 2004 38[0]:   ping_rec_timeout = 0
Sun Jun 27 17:27:19 2004 39[0]:   ping_rec_timeout_action = 0
Sun Jun 27 17:27:19 2004 40[0]:   ping_timer_remote = DISABLED
Sun Jun 27 17:27:19 2004 41[0]:   persist_tun = DISABLED
Sun Jun 27 17:27:19 2004 42[0]:   persist_local_ip = DISABLED
Sun Jun 27 17:27:19 2004 43[0]:   persist_remote_ip = DISABLED
Sun Jun 27 17:27:19 2004 44[0]:   persist_key = DISABLED
Sun Jun 27 17:27:19 2004 45[0]:   mssfix_defined = DISABLED
Sun Jun 27 17:27:19 2004 46[0]:   mssfix = 0
Sun Jun 27 17:27:19 2004 47[0]:   passtos = DISABLED
Sun Jun 27 17:27:19 2004 48[0]:   resolve_retry_seconds = 0
Sun Jun 27 17:27:19 2004 49[0]:   connect_retry_seconds = 5
Sun Jun 27 17:27:19 2004 50[0]:   username = '[UNDEF]'
Sun Jun 27 17:27:19 2004 51[0]:   groupname = '[UNDEF]'
Sun Jun 27 17:27:19 2004 52[0]:   chroot_dir = '[UNDEF]'
Sun Jun 27 17:27:19 2004 53[0]:   cd_dir = '[UNDEF]'
Sun Jun 27 17:27:19 2004 54[0]:   writepid = '[UNDEF]'
Sun Jun 27 17:27:19 2004 55[0]:   up_script = '[UNDEF]'
Sun Jun 27 17:27:19 2004 56[0]:   down_script = '[UNDEF]'
Sun Jun 27 17:27:19 2004 57[0]:   up_restart = DISABLED
Sun Jun 27 17:27:19 2004 58[0]:   daemon = DISABLED
Sun Jun 27 17:27:19 2004 59[0]:   inetd = 0
Sun Jun 27 17:27:19 2004 60[0]:   log = DISABLED
Sun Jun 27 17:27:19 2004 61[0]:   nice = 0
Sun Jun 27 17:27:19 2004 62[0]:   verbosity = 5
Sun Jun 27 17:27:19 2004 63[0]:   mute = 0
Sun Jun 27 17:27:19 2004 64[0]:   gremlin = DISABLED
Sun Jun 27 17:27:19 2004 65[0]:   occ = ENABLED
Sun Jun 27 17:27:19 2004 66[0]:   http_proxy_server = '[UNDEF]'
Sun Jun 27 17:27:19 2004 67[0]:   http_proxy_port = 0
Sun Jun 27 17:27:19 2004 68[0]:   http_proxy_auth_method = '[UNDEF]'
Sun Jun 27 17:27:19 2004 69[0]:   http_proxy_auth_file = '[UNDEF]'
Sun Jun 27 17:27:19 2004 70[0]:   http_proxy_retry = DISABLED
Sun Jun 27 17:27:19 2004 71[0]:   socks_proxy_server = '[UNDEF]'
Sun Jun 27 17:27:19 2004 72[0]:   socks_proxy_port = 0
Sun Jun 27 17:27:19 2004 73[0]:   socks_proxy_retry = DISABLED
Sun Jun 27 17:27:19 2004 74[0]:   comp_lzo = ENABLED
Sun Jun 27 17:27:19 2004 75[0]:   comp_lzo_adaptive = ENABLED
Sun Jun 27 17:27:19 2004 76[0]:   route_script = '[UNDEF]'
Sun Jun 27 17:27:19 2004 77[0]:   route_default_gateway = '[UNDEF]'
Sun Jun 27 17:27:19 2004 78[0]:   route_noexec = DISABLED
Sun Jun 27 17:27:19 2004 79[0]:   route_delay = 0
Sun Jun 27 17:27:19 2004 80[0]:   route_delay_defined = DISABLED
Sun Jun 27 17:27:19 2004 81[0]:   shared_secret_file = '[UNDEF]'
Sun Jun 27 17:27:19 2004 82[0]:   key_direction = 0
Sun Jun 27 17:27:19 2004 83[0]:   ciphername_defined = ENABLED
Sun Jun 27 17:27:19 2004 84[0]:   ciphername = 'BF-CBC'
Sun Jun 27 17:27:19 2004 85[0]:   authname_defined = ENABLED
Sun Jun 27 17:27:19 2004 86[0]:   authname = 'SHA1'
Sun Jun 27 17:27:19 2004 87[0]:   keysize = 0
Sun Jun 27 17:27:19 2004 88[0]:   replay = ENABLED
Sun Jun 27 17:27:19 2004 89[0]:   replay_window = 64
Sun Jun 27 17:27:19 2004 90[0]:   replay_time = 15
Sun Jun 27 17:27:19 2004 91[0]:   packet_id_file = '[UNDEF]'
Sun Jun 27 17:27:19 2004 92[0]:   use_iv = ENABLED
Sun Jun 27 17:27:19 2004 93[0]:   test_crypto = DISABLED
Sun Jun 27 17:27:19 2004 94[0]:   tls_server = DISABLED
Sun Jun 27 17:27:19 2004 95[0]:   tls_client = ENABLED
Sun Jun 27 17:27:19 2004 96[0]:   key_method = 1
Sun Jun 27 17:27:19 2004 97[0]:   ca_file = 'aaron-ca.crt'
Sun Jun 27 17:27:19 2004 98[0]:   dh_file = '[UNDEF]'
Sun Jun 27 17:27:19 2004 99[0]:   cert_file = 'cyclope.crt'
Sun Jun 27 17:27:19 2004 100[0]:   priv_key_file = 'cyclope.key'
Sun Jun 27 17:27:19 2004 101[0]:   cipher_list = '[UNDEF]'
Sun Jun 27 17:27:19 2004 102[0]:   tls_verify = '[UNDEF]'
Sun Jun 27 17:27:19 2004 103[0]:   tls_remote = '[UNDEF]'
Sun Jun 27 17:27:19 2004 104[0]:   crl_file = '[UNDEF]'
Sun Jun 27 17:27:19 2004 105[0]:   tls_timeout = 2
Sun Jun 27 17:27:19 2004 106[0]:   renegotiate_bytes = 0
Sun Jun 27 17:27:19 2004 107[0]:   renegotiate_packets = 0
Sun Jun 27 17:27:19 2004 108[0]:   renegotiate_seconds = 21600
Sun Jun 27 17:27:19 2004 109[0]:   handshake_window = 60
Sun Jun 27 17:27:19 2004 110[0]:   transition_window = 3600
Sun Jun 27 17:27:19 2004 111[0]:   single_session = DISABLED
Sun Jun 27 17:27:19 2004 112[0]:   tls_auth_file = '[UNDEF]'
Sun Jun 27 17:27:19 2004 113[0]: OpenVPN 1.6.0 i386-pc-linux-gnu [SSL] [LZO] [PTHREAD] built on Jun 10 2004
Sun Jun 27 17:27:19 2004 114[0]: WARNING: file 'cyclope.key' is group or others accessible
                                 ### Même remarque de ce côté-ci...
Sun Jun 27 17:27:19 2004 115[0]: LZO compression initialized
Sun Jun 27 17:27:19 2004 116[0]: Control Channel MTU parms [ L:1300 D:138 EF:38 EB:0 ET:0 EL:0 ]
Sun Jun 27 17:27:19 2004 117[0]: TUN/TAP device tun1 opened
Sun Jun 27 17:27:19 2004 118[0]: /sbin/ifconfig tun1 192.168.25.2 pointopoint 192.168.25.1 mtu 1258
Sun Jun 27 17:27:19 2004 119[0]: Data Channel MTU parms [ L:1300 D:1300 EF:42 EB:19 ET:0 EL:0 ]
Sun Jun 27 17:27:19 2004 120[0]: Local Options String: 'V3,dev-type tun,link-mtu 1300,tun-mtu 1258,proto UDPv4,
                                 ifconfig 192.168.25.1 192.168.25.2,comp-lzo,cipher BF-CBC,auth SHA1,
                                 keysize 128,tls-client'
Sun Jun 27 17:27:19 2004 121[0]: Expected Remote Options String: 'V3,dev-type tun,link-mtu 1300,tun-mtu 1258,
                                 proto UDPv4,ifconfig 192.168.25.2 192.168.25.1,
                                 comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,tls-server'
Sun Jun 27 17:27:19 2004 122[0]: Local Options hash (VER=V3): '65854add'
Sun Jun 27 17:27:19 2004 123[0]: Expected Remote Options hash (VER=V3): '562c6d4b'
Sun Jun 27 17:27:19 2004 124[0]: PTHREAD support initialized
Sun Jun 27 17:27:19 2004 125[0]: UDPv4 link local (bound): [undef]:8147
Sun Jun 27 17:27:19 2004 126[0]: UDPv4 link remote: 82.127.57.95:8147

Aussitôt le tunnel se met en place, parce que, cette fois-ci, les règles de filtrage sont à jour :

WR
Sun Jun 27 17:27:20 2004 127[0]: TLS: tls_pre_decrypt: first response to initial packet from 82.127.57.95:8147, 
                                 sid=1bb0cdd9 7d112bcc
W
Sun Jun 27 17:27:20 2004 128[1]: Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sun Jun 27 17:27:20 2004 129[1]: Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
WRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWRWR
Sun Jun 27 17:27:21 2004 130[1]: VERIFY OK: depth=1, /C=FR/ST=France/L=Marseille/O=MyOrg/OU=admin/CN=Supervisor
                                                     /emailAddress=supervisor@yahoo.fr
Sun Jun 27 17:27:21 2004 131[1]: VERIFY OK: depth=0, /C=FR/ST=France/O=MyOrg/OU=admin/CN=Supervisor
                                                     /emailAddress=supervisor@yahoo.fr
WRWRWRWRWRWRWWWWRWRWWRWRWRWRWRWRWRWRWRWRWRWRWWRWRWRWRWWWRRRWRWR
Sun Jun 27 17:27:24 2004 132[1]: Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sun Jun 27 17:27:24 2004 133[1]: Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Jun 27 17:27:24 2004 134[1]: Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Sun Jun 27 17:27:24 2004 135[1]: Peer Connection Initiated with 82.127.57.95:8147

Pas d'insultes non plus, les "WWRWRWRW" doivent signifier des "Write" et des "Read" sur le tunnel.

Notez que les identités des deux extrémités du tunnel sont vérifiées.

Dans le même temps, sur AARON sont apparues les lignes suivantes :

R
Sun Jun 27 17:22:25 2004 128[0]: TLS: tls_pre_decrypt: first response to initial packet from 80.8.135.15:8147, 
                                      sid=f331ba5a 1cafca63
WRRWWWWRWRWRWRWRWRWRRWWRWRWRWRWRWRWRRWWRWRWRWRWRWRWRRRRRWRWRWRRWWRWRWRWRWRWRWRWRWRRWRWRRWR
Sun Jun 27 17:22:28 2004 129[1]: VERIFY OK: depth=1, /C=FR/ST=France/L=Marseille/O=MyOrg/OU=admin/CN=Supervisor
                                                     /emailAddress=supervisor@yahoo.fr
Sun Jun 27 17:22:28 2004 130[1]: VERIFY OK: depth=0, /C=FR/ST=France/O=MyOrg/OU=admin/CN=CHRIS
                                                     /emailAddress=chris@cyclope.maison.mrs
WRRRWRRWWR
Sun Jun 27 17:22:29 2004 131[1]: Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sun Jun 27 17:22:29 2004 132[1]: Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Jun 27 17:22:29 2004 133[1]: Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Sun Jun 27 17:22:29 2004 134[1]: Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
WWWRRR
Sun Jun 27 17:22:29 2004 135[1]: Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Sun Jun 27 17:22:29 2004 136[1]: Peer Connection Initiated with 80.8.135.15:8147

Donc, tout semble parfait.

Nous pourrions re-vérifier les routes et les interfaces sur les deux machines, mais nous savons que ça fonctionne, donc gagnons du temps :

cyclope:~# ping -c 4 192.168.25.1
PING 192.168.25.1 (192.168.25.1): 56 data bytes
64 bytes from 192.168.25.1: icmp_seq=0 ttl=64 time=69.8 ms
64 bytes from 192.168.25.1: icmp_seq=1 ttl=64 time=70.0 ms
64 bytes from 192.168.25.1: icmp_seq=2 ttl=64 time=74.7 ms
64 bytes from 192.168.25.1: icmp_seq=3 ttl=64 time=69.1 ms

--- 192.168.25.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 69.1/70.9/74.7 ms

Le tunnel fonctionne, les extrémités sont authentifiées et les données sont compressées et chiffrées dans le tunnel.

Avec tout ça, nous devrions être à peu près tranquilles.

La touche finale

La ligne de commande nécessaire au démarrage d'OpenVPN n'est pas très pratique. De plus, comme nous l'avons fait, une console sera bloquée à chaque bout du tunnel, tout au long de son existence. C'est souhaitable pendant la période de test, ça ne l'est pas en production.

Fort heureusement, du moins dans la distribution Debian, il est possible de démarrer un tunnel OpenVPN au moyen du SystemV. Un script, "/etc/init.d/openvpn" est fourni dans ce but.

Ce script va démarrer , arrêter, redémarrer, recharger un ou plusieurs tunnels dont les paramètres sont définis dans autant de fichiers placés dans /etc/openvpn.

Par exemple, sur CYCLOPE, nous pouvons créer un fichier :

/etc/openvpn/MyOrg.conf

Qui contiendrait les choses suivantes :

cyclope:~# cat /etc/openvpn/MyOrg.conf
remote 82.127.57.95 
port 8147 
dev tun1 
ifconfig 192.168.25.2 192.168.25.1 
tls-client 
ca /root/aaron-ca.crt 
cert /root/cyclope.crt 
key /root/cyclope.key 
reneg-sec 21600 
comp-lzo 
verb 3

Il suffit de reprendre chacune des options ligne par ligne en supprimant les "--" et en indiquant les chemins complets des certificats. Dans l'exemple, il faudra bien entendu que OpenVPN soit démarré par root.

En production, limitez le flot verbal d'openVPN (verb de 1 à 4 maximum), parce que le baratin va se retrouver dans /var/log/syslog. 

Il est possible de créer autant de tunnels que nécessaire, en prenant soin de changer à chaque fois le port UDP. Les autres paramètres (remote, tun...) dépendront de la configuration de vos divers tunnels.

Un fichier de configuration par tunnel est nécessaire. Lors de la commande "/etc/init.d/openvpn start" tous les fichiers présents dans /etc/openvpn/ seront lus et donneront naissance à une extrémité de tunnel.


Précédente ] [ Accueil ] [ Suivante ]