HOWTO ipsec VPN Roadwarriors RSA signing en X509 authenticatie
Zie ook http://wiki.openswan.org/index.php/Openswan/Configure
Multiple Road Warriors If 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. The 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.
RSA Signing - Linux to Linux
Genereren rsa keys.
Om te beginnen moeten we de rsa keys genereren. Dat doen we zo:
ipsec newhostkey --output <output file> --bits <aantal bits bijv:2048>
Zorg 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.
Roadwarriors configureren op server
Open ipsec.conf met een editor en configureer de roadwarriors Hier een voorbeeld met 2 roadwarriors.
conn roadwarrior-rick #The route where the clients come from. left=%defaultroute #LAN IP behind NAT, Comment this out if your using an VPN server behind a NAT. leftid=192.168.102.200 #Define here the subnet where the clients connect to. leftsubnet=172.16.0.0/24 #Public key of the server. leftrsasigkey=0sA...6Pd6J right=%any #Identification of an user. rightid=rick@datux.nl rightsubnet=vhost:%no,%priv rightsourceip=0.0.0.0 #Public key of the client rightrsasigkey=0sAQ...ZjtJaMkUPVJuod keyingtries=3 authby=rsasig auto=add pfs=yes conn roadwarrior-henk left=%defaultroute leftid=192.168.102.200 leftsubnet=172.16.0.0/24 leftrsasigkey=0sAQN56...b83LJ5sRH6J right=%any rightid=henk@datux.nl rightsubnet=vhost:%no,%priv rightsourceip=0.0.0.0 rightrsasigkey=0sAQO....HTu0J8Jhy5ABh keyingtries=3 authby=rsasig auto=add pfs=yes
Roadwarrior configureren op client
Genereer hier ook weer de rsa keys. Zie genereren rsa keys.
Hier het voorbeeld van ipsec.conf.
conn roadwarrior #The route of the client can be anywhere. left=%defaultroute #Id by email leftid=rick@datux.nl #Public key of client. leftrsasigkey=0sA.....QOY #The hostip of the VPN server to connect to. right=vpn.datux.nl #LAN IP behind NAT, Comment this out if you use a vpn server behind a nat. rightid=192.168.102.200 #Define here the subnet to connect to. rightsubnet=172.16.0.0/24 #Public key of server. rightrsasigkey=0s..5J5sRH6J keyingtries=3 authby=rsasig auto=start pfs=yes
X.509 Signing - Linux to Linux
Inleiding
De 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.
Certificate Authority
Om 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.
Download en install gnomint: http://gnomint.sf.net
Bouw 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.
De opties zijn certificaat, private key encrypted PKCS#8, private key unencrypted en PKCS#12(De private key en certificaat in 1, password beveiligd).
Wij 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.
Wanneer 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.
Backup je CA database file af en toe, als ie stuk raakt heb je een groot probleem
Export certificates
We gaan uit van 2 hosts, de server en de client.
Exporteer het volgende:
-Een certificaat van de authority: Bijv: cacert.pem -Een certificaat van de serverhost. Bijv: kantoor.pem -Een private key unencrypted van de serverhost. Bijv: kantoor.key -Een crl file van de CA. (is niet verplicht) Bijv: crls.pem -Een certificaat van de client. Bijv: joost.pem -Een private key unencrypted van de client Bijv: joost.key
Voor de serverkant is het niet verstandig maar voor de clients wel, om de private keys te beveiligen met een wachtwoord:
openssl rsa -des3 -in <unprotected keyfile> -out <newprotected keyfile>
Roadwarriors configureren op server
Ipsec.conf:
conn roadwarrior left=%defaultroute leftcert=kantoor.pem leftsubnet=172.16.0.0/24 right=%any rightrsasigkey=%cert rightsubnet=vhost:%no,%priv rightsourceip=0.0.0.0 keyingtries=3 auto=add pfs=yes
ipsec.secrets:
: RSA kantoor.key
Roadwarriors configureren op client
Client:
conn roadwarrior left=%defaultroute leftcert=hrmeertens.pem right=vpn.datux.nl rightsubnet=172.16.0.0/24 rightcert=kantoor.pem keyingtries=3 authby=rsasig auto=auto (of add, dit hangt af of je ook de %prompt optie gebruikt in ipsec.secrets) pfs=yes
ipsec.secrets:
: RSA hrmeertens.key <Optioneel wachtwoord, %prompt>
X.509 Signing – Windows to Linux
Ik heb GreenbowVPN client gebruikt om te testen, deze is helaas niet onder GPL. Maar werkt wel out of the box.
Hier zoeken we nog een oplossing voor.
PGPnet 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.