Changes between Initial Version and Version 1 of howto/IpsecAdvancedRoadwarrior


Ignore:
Timestamp:
10/10/08 11:57:40 (15 years ago)
Author:
Edwin Eefting
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • howto/IpsecAdvancedRoadwarrior

    v1 v1  
     1= HOWTO ipsec VPN Roadwarriors RSA signing en X509 authenticatie =
     2
     3Zie ook http://wiki.openswan.org/index.php/Openswan/Configure
     4
     5{{{
     6Multiple Road Warriors
     7If you're using RSA keys, as we did in this example, you can add as many Road Warriors as you like. The left/rightid parameter lets Linux Openswan distinguish between multiple Road Warrior peers, each with its own public key.
     8The situation is different for shared secrets (PSK). During a PSK negotiation, ID information is not available at the time Pluto is trying to determine which secret to use, so, effectively, you can only define one Roadwarrior connection. All your PSK road warriors must therefore share one secret.
     9}}}
     10
     11= RSA Signing - Linux to Linux =
     12
     13== Genereren rsa keys. ==
     14
     15Om te beginnen moeten we de rsa keys genereren. Dat doen we zo:
     16
     17{{{
     18        ipsec newhostkey --output <output file> --bits <aantal bits bijv:2048>
     19}}}
     20
     21Zorg dat de output in ipsec.secrets komt te staan en maak de file alleen voor root leesbaar. Kopieer de waarde achter pubkey uit de file voor later gebruik.
     22
     23== Roadwarriors configureren op server ==
     24
     25Open ipsec.conf met een editor en configureer de roadwarriors
     26Hier een voorbeeld met 2 roadwarriors.
     27
     28{{{
     29conn roadwarrior-rick
     30        #The route where the clients come from.
     31        left=%defaultroute
     32            #LAN IP behind NAT, Comment this out if your using an VPN server behind a NAT.
     33        leftid=192.168.102.200
     34        #Define here the subnet where the clients connect to.
     35        leftsubnet=172.16.0.0/24
     36        #Public key of the server.
     37        leftrsasigkey=0sA...6Pd6J
     38        right=%any
     39        #Identification of an user.
     40        rightid=rick@datux.nl
     41        rightsubnet=vhost:%no,%priv
     42        rightsourceip=0.0.0.0
     43        #Public key of the client
     44        rightrsasigkey=0sAQ...ZjtJaMkUPVJuod
     45        keyingtries=3
     46        authby=rsasig
     47        auto=add
     48        pfs=yes
     49
     50conn roadwarrior-henk   
     51        left=%defaultroute
     52        leftid=192.168.102.200
     53        leftsubnet=172.16.0.0/24
     54        leftrsasigkey=0sAQN56...b83LJ5sRH6J
     55        right=%any
     56        rightid=henk@datux.nl
     57        rightsubnet=vhost:%no,%priv
     58        rightsourceip=0.0.0.0
     59        rightrsasigkey=0sAQO....HTu0J8Jhy5ABh
     60        keyingtries=3
     61        authby=rsasig
     62        auto=add
     63        pfs=yes
     64}}}
     65
     66
     67
     68== Roadwarrior configureren op client ==
     69
     70Genereer hier ook weer de rsa keys. Zie genereren rsa keys.
     71
     72Hier het voorbeeld van ipsec.conf.
     73
     74{{{
     75conn roadwarrior
     76        #The route of the client can be anywhere.
     77        left=%defaultroute
     78        #Id by email
     79        leftid=rick@datux.nl
     80        #Public key of client.
     81        leftrsasigkey=0sA.....QOY
     82        #The hostip of the VPN server to connect to.
     83        right=vpn.datux.nl
     84        #LAN IP behind NAT, Comment this out if you use a vpn server behind a nat.
     85        rightid=192.168.102.200
     86        #Define here the subnet to connect to.
     87        rightsubnet=172.16.0.0/24
     88        #Public key of server.
     89        rightrsasigkey=0s..5J5sRH6J
     90        keyingtries=3
     91        authby=rsasig
     92        auto=start
     93        pfs=yes
     94}}}
     95
     96= X.509 Signing - Linux to Linux =
     97
     98== Inleiding ==
     99
     100De public keys zijn vanaf nu aan x509 certificaten. Deze certifcaten moeten gegenereerd en gesigneerd worden door een CA(Certificate Authority), een hele bekende is Verisign of je bouwt er zelf een.
     101
     102== Certificate Authority ==
     103Om certificaten te bouwen gaan we een CA opzetten. Dit doen we met de Certificate Authorty Management tool Gnomint.Je kunt er ook voor kiezen het rechtstreeks met Openssl te doen.
     104
     105Download en install gnomint: http://gnomint.sf.net
     106
     107Bouw en configureer de CA. Genereer voor elke host een certificaat en signeer ze. Deze tool ben je straks nodig om de certificaten en private keys van de hosts en de certificaat van de CA te exporteren. Wanneer je een certificaat aanklikt en vervolgnes op export drukt, krijg je een aantal opties.
     108
     109De opties zijn certificaat, private key encrypted PKCS#8, private key unencrypted en PKCS#12(De private key en certificaat in 1, password beveiligd).
     110
     111Wij gebruiken alleen certificaat en private key unencrypted. De private key password protectie PKCS#8 word niet herkent door Openswan. We protecten de key later evt met Openssl des3.
     112
     113Wanneer een certificaat ingetrokken(revoke) wordt moeten de certificaat houders op de hoogte gesteld worden (dit kan opverschillende manieren wij gebruiken crl) doormiddel van een crl(Certificate Revoke List) update. Je kunt deze evt via http hosten.Deze lijst genereer je met Gnomint.
     114
     115Backup je CA database file af en toe, als ie stuk raakt heb je een groot probleem
     116
     117= Export certificates =
     118
     119We gaan uit van 2 hosts, de server en de client.
     120
     121Exporteer het volgende:
     122{{{
     123        -Een certificaat van de authority: Bijv: cacert.pem
     124        -Een certificaat van de serverhost. Bijv: kantoor.pem
     125        -Een private key unencrypted van de serverhost. Bijv: kantoor.key
     126        -Een crl file van de CA. (is niet verplicht) Bijv: crls.pem
     127        -Een certificaat van de client. Bijv: joost.pem
     128        -Een private key unencrypted van de client Bijv:  joost.key
     129}}}
     130
     131Voor de serverkant is het niet verstandig maar voor de clients wel, om de private keys te beveiligen met een wachtwoord:
     132{{{
     133        openssl rsa -des3 -in <unprotected keyfile> -out <newprotected keyfile>
     134}}}
     135
     136== Roadwarriors configureren op server ==
     137
     138Ipsec.conf:
     139{{{
     140conn roadwarrior
     141        left=%defaultroute
     142        leftcert=kantoor.pem
     143        leftsubnet=172.16.0.0/24
     144        right=%any
     145        rightrsasigkey=%cert
     146        rightsubnet=vhost:%no,%priv
     147        rightsourceip=0.0.0.0
     148        keyingtries=3
     149        auto=add
     150        pfs=yes
     151}}}
     152
     153ipsec.secrets:
     154{{{
     155: RSA kantoor.key
     156}}}
     157
     158== Roadwarriors configureren op client ==
     159Client:
     160{{{
     161conn roadwarrior
     162        left=%defaultroute
     163        leftcert=hrmeertens.pem
     164        right=vpn.datux.nl
     165        rightsubnet=172.16.0.0/24
     166        rightcert=kantoor.pem
     167        keyingtries=3
     168        authby=rsasig
     169        auto=auto (of add, dit hangt af of je ook de %prompt optie gebruikt in ipsec.secrets)
     170        pfs=yes
     171}}}
     172
     173ipsec.secrets:
     174{{{
     175: RSA hrmeertens.key <Optioneel wachtwoord, %prompt>
     176}}}
     177
     178= X.509 Signing – Windows to Linux =
     179
     180Ik heb GreenbowVPN client gebruikt om te testen, deze is helaas niet onder GPL. Maar werkt wel out of the box.
     181
     182Hier zoeken we nog een oplossing voor.
     183
     184PGPnet is een IPSEC/VPN client(volgens mij gratis) voor windows, deze moet nader onderzocht worden. Wat al bekent is dat deze PSK ondersteund en certicaten.
     185
     186ftp://ftp.pgpi.org/pub/pgp/7.0/7.0.3/PGPFW703.zip
     187