IPSec VPN quick howto FreeS/WAN freeswan
Packetfilter:
============
Firewalls müssen erlauben:
#IPSec - VPN Routing (IP Protokoll 50:ESP, 51:AH):
forward: 62.154.193.254
62.154.193.150 any 50 ACCEPT
-b
forward: 62.154.193.254
62.154.193.150 any 51 ACCEPT
-b
forward: 62.154.193.254
62.154.193.150 500 udp ACCEPT -b
Erst manual keyed testen.
Manual-keyed:
=============
- man nehme Beispiel-Config
- insbesondere Interfaces kontrollieren
z.B.: interfaces="ipsec0=eth0"
- Es muß die Verbindung ("conn") manual gestartet werden:
manualstart="dx-tax"
- Die Verbindung braucht min. left und right (IPs der
Interfaces der Gateways), meist leftnexthop und
rightnexthop (Ermitteln: wen verwendet left als
IP-Gateway/Nexthop? Also 1. traceroute IP)
- keys sind wie laut Beispiel zu machen, also eine conn
z.B.:
conn dx-tax
left=62.154.193.254
leftnexthop=62.154.193.190
right=62.154.193.150
rightnexthop=62.154.193.149
spi=0x200
esp=3des-md5-96
espenckey=0x01234567_89abcdef_02468ace_13579bdf_12345678_9abcdef0
espauthkey=0x12345678_9abcdef0_2468ace0_13579bdf
auto=add
(Dabei ist Indent wichtig: conn muß rechts, Rest eingerückt sein!
Kommentarzeilen dürfen nur am Ende eines Blockes stehen (?).)
Dieses File muß auf beiden (left+right) Maschinen gleich sein
(scp rules here :)).
/etc/rc.d/ipsec start
(beide Seiten) fährt den Kram dann komplett hoch. Die Firewalls
müssen proto=50 durchlassen.
Auto-Keyed connection:
======================
Wenn die manual keyed geht, umschalten auf
auto:
ipsec manual --down <conn>
(beide Seiten!)
Falls dabei routen gesetzt wurden, müssen die noch entfernt
werden:
route del ....
(--down löscht die nicht automatisch)
ipsec auto --status
zeigt, ob auto=add in /etc/ipsec.conf geklappt hat, sonst
ipsec auto --add <conn>
(jeweils auf beiden Seiten kontrollieren und addieren)
(in /etc/ipsec.conf manualstart="<conn>"
auskommentieren, evtl.
auch gleich /etc/rc.d/ipsec restart)
Jetzt muß in /etc/ipsec.secrets ein passender (oder default) Key
stehen, z.B.:
<left> <right> "somesecretbytes"
dann von einer Seite aus hochfahren (tail -f syslog)
ipsec auto --up <conn>
Die andere bekommt udp port 500 Packete, und VPN kommt hoch
(sollte :))
RSA Authentication
==================
- shared-secret Connection sollte schon funktionieren, sonst
Debugging schwierig!
- jede Seite hat einen "Namen", z.B. FQDN
- zu diesem Namen (der auch "id" heißt) wird ein RSA Key
generiert (einer auf beiden Seiten), und dieser wird in eine
Datei /etc/ipsec.<hostname>.secrets angefügt.
- Dieser Key muß folgendermaßen aussehen (ident wieder wichtig!):
@steffen.dx.bedi.net : RSA {
<ausgabe von "ipsec rsasigkey --verbose 1024"
(STDOUT)>
}
- SuSE 6.4: ln -s /usr/lib/ipsec/ /usr/local/lib/
- Erzeugungs-Einzeiler (z.B., muß nicht hostname -f sein!):
( echo "@`hostname -f` : RSA {" ; \
ipsec rsasigkey --verbose 1024 ; \
echo " }" \
) >> /etc/ipsec.`hostname`.secrets
(dauert, dauert, dauert :))
muß auf beiden Maschinen (jeweils einmal, oder einmal für jede
Connection/Tunnel) gemacht werden
- diese Datei muß nun in /etc/ipsec.secrets gesourct werden:
include /etc/ipsec.*.secrets
- aus der Datei muß die id (name) und die Zahl (hex) nach
(#pubkey= für rsasigkey) gemerkt werden (gpm rules)
- dann in /etc/ipsec.conf:
authby=rsasig
rightrsasigkey=0x.....
rightid=<name>
(wie in ipsec.*.secrets: @FQDN für id)
(und dito left; auf beiden wieder symetrisch. Dabei die
ipsec.id.secrets natürlich nicht kopieren!!!)
die symetrischen Keyinfos müssen entfernt werden:
spi=0x200;esp=???;espenckey=???;espauthkey=0x???
Zeilen auskommentieren
- /etc/rc.d/ipsec restart
- ipsec auto -add <conn> sollte via auto=add (in ipsec.conf)
schon erledigt sein
- Auf einer Seite:
ipsec auto --up <conn>
- Beim Debuggen am besten immer /etc/rc.d/ipsec restart machen,
um sauberen Status zu erreichen!