Openswan-VPN mit RSA-Signaturen
Anstatt mit Pre-shared-keys zu arbeiten, besteht auch die Möglichkeit, die Authentifizierung der VPN-Verbindung über RSA-Signaturen durchzuführen. Dies ist kryptographisch sicherer, siehe Erklärung in der Wikipedia.
Statt einem gemeinsamen Key hat nun jeder Host ein Schlüsselpaar aus privatem und öffentlichem Schlüssel, was ihn gleichzeitig eindeutig gegenüber einem Peer identifiziert. Der öffentliche Schlüssel muss bei beiden Peers jeweils zur richten Adresse hin hinterlegt werden:
- Der eigene Key zur Seite, die auf %defaultroute zeigt (z. B. left),
- der fremde Key zur Seite, auf z. B. right.
Generieren der Keys
Das Einfachste ist, dpkg-reconfigure openswan
aufzurufen, falls bereits installiert. Folgende Fragen werden gestellt und sollten entsprechend beantwortet werden:
- At which level do you wish to start Openswan?
- → after PCMCIA
- Do you wish to restart Openswan?
- → No
- Do you wish to enable opportunistic encryption in Openswan?
- → No
- Do you want to create a RSA public/private keypair for this host?
- → Yes
- Which type of RSA keypair do you want to create?
- → plain
- Which length should the created RSA key have?
- → 2048
Der Key wird nach der Generierung (die je nach dem auch mal einige Minuten dauern kann, falls zu wenig Zufallszahlen vom Betriebssystem generiert werden) in /etc/ipsec.secrets eingetragen. Danach sollte die Secrets-Datei nochmal eingelesen werden:
ipsec auto --rereadsecrets
Dies muss bei beiden VPN-Peers erledigt werden.
Änderungen der Konfiguration
Die Keys lassen sich copy-paste-fertig mit
ipsec showhostkey --left
ausgeben. Statt --left
kann auch --right
verwendet werden, dann wird der Key mit rightrsasigkey ausgegeben statt leftrsasigkey.
conn bla authby=rsasig leftrsasigkey=0sAQNojnnpByTCK5SbXWXb…
Nun kann die bestehende Verbindung neu aufgebaut werden auf rsasig:
ipsec auto --replace bla ipsec auto --up bla
104 "bla" #145: STATE_MAIN_I1: initiate 003 "bla" #145: received Vendor ID payload [Openswan (this version) 2.4.12 LDAP_V3 PLUTO_SENDS_VENDORID PLUTO_USES_KEYRR] 003 "bla" #145: received Vendor ID payload [Dead Peer Detection] 106 "bla" #145: STATE_MAIN_I2: sent MI2, expecting MR2 108 "bla" #145: STATE_MAIN_I3: sent MI3, expecting MR3 004 "bla" #145: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=aes_256 prf=oakley_sha group=modp1536} 117 "bla" #146: STATE_QUICK_I1: initiate 004 "bla" #146: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0xd9229f4b <0xd8ee0d09 xfrm=AES_256-HMAC_SHA1 IPCOMP=>0x00003925 <0x00007ec9 NATD=none DPD=none}