Einführung
Zur sicheren Anbindung von Hosts kommt oft IPSec zum Einsatz. Bei der Einrichtung muß beachtet werden, daß bei CX-vServern die öffentliche IP per 1:1 NAT auf eine interne IP umgesetzt wird.
In dieser Anleitung wird mit StrongSWAN und Pre-Shared-Keys eine transparente IPSec Verbindung zwischen einem externen Host und einem CX vServer aufgebaut. Es können dann auf beiden Seiten die öffentlichen IPs verwendet werden.
Dieses Tutorial sollte auch auf Cloud-Servern funktionieren.
Daten
Host Alice (Endpunkt Host A)
- System: Debian 8 jessie
- IPSec: strongswan 5.2.1-6+deb8u2
- IPv4: 192.0.2.10
- IPv6: 2001:db8:61:20e1::2
Host Bob (Endpunkt CX vServer)
- System: Debian 8 jessie
- IPSec: strongswan 5.2.1-6+deb8u2
- IPv4: 203.0.113.40
- IPv4 intern: 172.31.1.100
- IPv6: 2a01:4f8:db8:c17::2
Installation
Wir bauen direkt 2 Tunnel, einen für IP4, einen für IP6.
Alice
Pakete installieren:
# apt-get install strongswan
# ipsec stop
Anschließend die Datei /etc/ipsec.conf
mit entsprechend angepassten Werten anlegen bzw. ändern:
version 2.0
#
config setup
#
conn NameDerVerbindung
type=transport
keyingtries=0
authby=secret
auto=start
leftid=192.0.2.10
left=192.0.2.10
rightid=203.0.113.40
right=203.0.113.40
#
conn NameDerVerbindungSix
type=transport
keyingtries=0
authby=secret
auto=start
leftid=2001:db8:61:20e1::2
left=2001:db8:61:20e1::2
rightid=2001:db8:c17::2
right=2001:db8:c17::2
Es gibt ein paar Implementationen von StrongSWAN die sehr genau auf Einrückungen achten. Es sind immer 8 Leerzeichen oder ein Tabulator.
Anschließend die Datei /etc/ipsec.secrets
mit entsprechend angepassten Werten anlegen bzw. ändern:
203.0.113.40 192.0.2.10 : PSK "SuperGeheimesPasswortFuerIp4Tunnel"
2001:db8:c17::2 2001:db8:61:20e1::2 : PSK "SuperGeheimesPasswortFuerIp6Tunnel"
Anschließend IPSec-Tunnel starten:
# ipsec start
Bob
Pakete installieren:
# apt-get install strongswan
# ipsec stop
Anschließend die Datei /etc/ipsec.conf
mit entsprechend angepassten Werten anlegen bzw. ändern:
version 2.0
#
config setup
#
conn NameDerVerbindung
type=transport
keyingtries=0
authby=secret
auto=start
leftid=203.0.113.40
left=172.31.1.100
rightid=192.0.2.10
right=192.0.2.10
#
conn NameDerVerbindungSix
type=transport
keyingtries=0
authby=secret
auto=start
leftid=2001:db8:c17::2
left=2001:db8:c17::2
rightid=2001:db8:61:20e1::2
right=2001:db8:61:20e1::2
Anschließend die Datei /etc/ipsec.secrets
mit entsprechend angepassten Werten anlegen bzw. ändern:
192.0.2.10 203.0.113.40 : PSK "SuperGeheimesPasswortFuerIp4Tunnel"
2001:db8:61:20e1::2 2001:db8:c17::2 : PSK "SuperGeheimesPasswortFuerIp6Tunnel"
Anschließend IPSec-Tunnel starten:
# ipsec start
Test
Nun sollten die Tunnel erfolgreich aufgebaut werden. Die kann man auch in /var/log/syslog
bzw. /var/log/auth.log
beobachten. Der Befehl ipsec status
Sollte eine vergleichbare Ausgabe erzeugen:
Security Associations (2 up, 0 connecting):
TemplateTwo[20]: ESTABLISHED 76 minutes ago, 172.31.1.100[203.0.113.40]...192.0.2.10[192.0.2.10]
TemplateTwo{12}: INSTALLED, TRANSPORT, ESP in UDP SPIs: c5b8b7f7_i ccf37767_o
TemplateTwo{12}: 172.31.1.100/32 === 192.0.2.10/32
TemplateTwoSix[19]: ESTABLISHED 82 minutes ago, 2001:db8:c17::2[2001:db8:c17::2]...2001:db8:61:20e1::2[2001:db8:61:20e1::2]
TemplateTwoSix{11}: INSTALLED, TRANSPORT, ESP SPIs: c5521750_i cbe50d53_o
TemplateTwoSix{11}: 2001:db8:c17::2/128 === 2001:db8:61:20e1::2/128
Mittels tcpdump
sollte man die ESP Pakete sehen können (einfacher Ping):
13:42:53.000336 IP 203.0.113.40.ipsec-nat-t > 192.0.2.10.ipsec-nat-t: UDP-encap: ESP(spi=0xccf37767,seq=0x516), length 116
Fazit
Inzwischen sollten Sie in der Lage sein, eine IPSec-Verbindung auf einem virtuellen Server mit NAT zu installieren.