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
Contents
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
/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.