VPN Verbindungen sind immer wichtiger um vertrauliche Informationen zu übermitteln. Hier zeige ich wie man eine Verbindung zwischen einem Mikrotik Router und einem Cloud Server aufbauen kann. Auf dem Cloud Server ist Ubuntu 20.04 LTS + strongSwan installiert. Der Mikrotik 750G r3 dient im Heimnetzwerk als Router und ist hinter einem DSL Anschluss. Durch die Zwangstrennung nach 24 Stunden ist es notwendig das die IPsec Verbindung aktiv vom Mirkotik Router hergestellt und bei bedarf erneuert wird.
- hier im Beispiel wird der Tunnel Mode in Verbindung mit einem GRE Tunnel verwendet um dann direkt routen zu können
- Mikrotik IPsec Profil und Proposal sollte später angepasst werden um unsichere Ciphers / DH Groups zu deaktivieren
Serverkonfiguration
Netzwerkkonfiguration
Subnetz für die IPsec Tunnel Verbindung in der Netzwerkkonfguation hinzufügen:
auto eth0
iface eth0 inet dhcp
up ip addr add 10.100.0.1/30 dev eth0 # IPsec Tunnel Subnetz
GRE Tunnel konfigurieren:
auto gre-ipsec iface gre-ipsec inet static address 10.100.1.1 netmask 255.255.255.252 mtu 1382 pre-up iptunnel add gre-ipsec mode gre local 10.100.0.1 remote 10.100.2.1 ttl 64 up ifconfig gre-ipsec multicast pointopoint 10.100.1.2/30 post-down iptunnel del gre-ipsec
strongSwan – Konfiguration
root@server:~# cat /etc/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file
# basic configuration
config setup
conn %default
dpdaction=restart
mobike=yes
keyexchange=ikev2
conn mikrotik
left=1.1.1.1/32 # Server IP
leftsubnet=10.100.0.0/30 # Locales - Serverseitiges Subnetz für den Tunnel
leftprotoport=gre # Beschänkung auf GRE Protokoll
leftid=%defaultroute
leftfirewall=yes # Aktivert iptables Regeln
right=%any # any da dynamische DSL IP
rightprotoport=gre # Beschränkung auf GRE Protokoll
rightsubnet=10.100.2.0/24 # Subnetz auf dem Mirkotik Router
ikelifetime = 2h # entspricht /ip ipsec profile lifetime
lifetime = 30m # entspricht /ip ipsec proposal lifetime
dpddelay = 3s # entspricht /ip ipsec profiles dpd-interval
authby=secret # Passwort Authetifizierung
auto=start
type=tunnel
keyexchange=ikev2
root@server:~# cat /etc/ipsec.secrets # This file holds shared secrets or RSA private keys for authentication. # RSA private key for this host, authenticating it to any other host # which knows the public part. : PSK "SehrLangesSicheresSuperPasswort"
RouterOS
Netzwerk Konfiguration
IPsec Tunnel Netz anlegen
Hierfür legen wir eine Netzwerkbrücke (Bridge) an und konfigurieren die lokale IP.
/ip address add address=10.100.2.1/30 disabled=no interface=ipsec-bridge network=10.100.2.0
GRE Tunnel anlegen
/interface gre
add allow-fast-path=no clamp-tcp-mss=yes disabled=no dont-fragment=no dscp=inherit \
!ipsec-secret keepalive=10s,10 local-address=10.100.2.1 mtu=auto name=gre-ipsec-tunnel \
remote-address=10.100.0.1
IPsec Konfiguration
Standardeinstellungen
/ip ipsec mode-config
set [ find default=yes ] name=request-only responder=no use-responder-dns=exclusively
/ip ipsec policy group
set [ find default=yes ] name=default
/ip ipsec profile
set [ find default=yes ] dh-group=modp2048,modp1024 dpd-interval=2m dpd-maximum-failures=5 \
enc-algorithm=aes-128,3des hash-algorithm=sha1 lifetime=1d name=default nat-traversal=yes \
proposal-check=obey
/ip ipsec proposal
set [ find default=yes ] auth-algorithms=sha1 disabled=no enc-algorithms=\
aes-256-cbc,aes-192-cbc,aes-128-cbc lifetime=30m name=default pfs-group=modp1024
/ip ipsec policy
set 0 disabled=no dst-address=::/0 group=default proposal=default protocol=all src-address=\
::/0 template=yes
In der Standardkonfiguration werden im Profil und Proposal Verschlüsselungs- / Hashalgorithmen und Diffie-Hellman (DH) Gruppen erlaubt die zu einer schlechten Verschlüsselung führen können. Da die Leistung des RouterBoards begrenzt ist muss man einen Mittelweg zwischen Geschwindigkeit und Verschlüsselungsstärke ermitteln.
Serververbindung – Peer Konfiguration
/ip ipsec peer
add address=[SERVER-IP]/32 disabled=no exchange-mode=ike2 name=server profile=default \
send-initial-contact=yes
Authentifizierung via Pre-Shared-Key (PSK)
/ip ipsec identity
add auth-method=pre-shared-key disabled=yes generate-policy=no peer=server secret=\
SehrLangesSicheresSuperPasswort
Pre-Shared-Key (PSK) Authentifizierung ist nicht sicher und sollte später mit der Zertifikats-basierenden Authentifizierung ersetzt werden.
Policy Konfiguration
/ip ipsec policy
set 0 disabled=yes dst-address=::/0 group=default proposal=default protocol=all \
src-address=::/0 template=yes
add action=encrypt disabled=no dst-address=10.100.0.0/30 dst-port=any ipsec-protocols=esp \
level=require peer=server proposal=default protocol=gre sa-dst-address=[SERVER-IP] \
sa-src-address=0.0.0.0 src-address=10.100.2.0/30 src-port=any tunnel=yes
Die Policy regelt welche Daten vom Router verschlüsselt und über die IPsec Verbindung übertragen werden. Die Standard Policy wird deaktiviert. Zusätzlich wird eine Policy hinzugefügt die jeglichen GRE Datenverkehr zwischen den beiden Netzen 10.100.0.0/30 und 10.100.2.0/30 der Tunnelverbindung verschlüsselt.
Eine Fehlkonfiguration an dieser Stelle kann dazu führen das die Daten nicht über den IPsec Tunnel übertragen werden und nicht Verschlüsselt sind.