wiki:howto/IpsecAdvancedRoadwarrior

Version 1 (modified by Edwin Eefting, 16 years ago) (diff)

--

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.

ftp://ftp.pgpi.org/pub/pgp/7.0/7.0.3/PGPFW703.zip