OpenVPN-Server mit MikroTik

Du bist hier:
< Alle Themen

Open VPN Server mit MikroTik (MT)

Wir erklären Hier wir man auf dem MikroTik Router-OS einen OpenVPN Server installiert und konfiguriert. Auch das Erstellen der nötigen Zertifikate (Server, Client) gehen wir hier durch. Danach werden Sie in der Lage sein, sich in Ihr eigenes Netzwerk per OpenVPN Client (egal ob eine weitere MT, Windows, Android, oder Apple Produkte) zu verbinden und auf die Netzwerk-Ressourcen zugreifen zu können.

Leider fehlt dem OpenVPN Server von MikroTik noch immer die UDP Schnittstelle und auf einer z.B. MikroTik hEX kann nur ein Core pro Verbindung genutzt werden das leider dadurch maximal 30MBit schafft. Größere Router haben mehr Performance. Für den Standard Homeoffice Anwender wird das aber sicher ausreichen.

Ein OpenVPN Server nutzt nicht nur Benutzername / Kennwort zur Authentifizierung sondern auch ein Zertifikat das man für jeden einzelnen Client ausstellen kann. Dies ist wohl die sicherste VPN Lösung derzeit.

Zertifikate erstellen

Erstellt werden die Zertifikate direkt auf einer MikroTik. Das erstellen kann je nach Schlüssellänge und verwendete MikroTik etwas dauern. Auch kommt es vor das gelegentlich ein Timout erscheint das man aber ignorieren kann da das Zertifikat dennoch erstellt wird man muss nur etwas Geduld aufweisen.

Als erstes legen wir die Zertifizierungsstelle (CA) an und danach dann das Server bzw ein Benutzer Zertifikat. Als Gültigkeitszeitraum verwenden wir 10 Jahre mit einer Schlüssellänge von 4096Bit.

/certificate add name=”OpenVPN CA” common-name=netbits.mein-vpn.at days-valid=3650 key-size=4096 key-usage=crl-sign,key-cert-sign country=AT locality=”St. Marienkirchen /H” organization=netbits state=UpperAustria trusted=yes

/certificate add name=”OpenVPN Server” common-name=netbits.mein-vpn.at days-valid=3650 key-size=4096 key-usage=digital-signature,key-encipherment,tls-server country=AT locality=”St. Marienkrichen /H” organization=netbits state=UpperAustria trusted=yes

/certificate add name=”OpenVPN Benutzer” common-name=benutzer@netbits.at days-valid=3650 key-size=4096 key-usage=tls-client country=AT locality=”St. Marienkrichen /H” organization=netbits state=UpperAustria

Nachdem nun die Zertifikat-Informationen angelegt wurden müssen diese nun auch mit der Zertifizierungsstelle Zertifiziert werden. 
Der OpenVPN Server wird dann beim Verbindungsaufbau das Benutzer-Zertifikat auf den korrekten Herausgeber prüfen.

/certificate sign “OpenVPN CA” name=”OpenVPN CA”

/certificate sign “OpenVPN Server” name=”OpenVPN Server” ca=”OpenVPN CA”

/certificate sign “OpenVPN Benutzer” name=”OpenVPN Benutzer” ca=”OpenVPN CA”

Router Vorbereiten

Wir werden nun die MT vorbereiten (falls nicht schon erledigt) für ein eigenes VPN-Segment. Somit muss unser Router nun jegliche Datenpakete durch die Firewall schleusen und dadurch können wir genau kontrollieren welche Dienste erreicht werden können/dürfen.

Dafür werden wir ein neues unabhängiges IP-Segment am besten auf einer neuen Bridge definieren. Wenn zum Beispiel 192.168.0.0/24 unser Standard-Netzwerk ist dann wenden wir für die VPN-User 192.168.1.0/24 an. Der Router selbst bekommt bei uns dann die letzte Adresse im Netzwerk.  Hierbei sollte man dabei achten das dieses Segment im gesamten Netzwerk NICHT vorkommt. Um das User-IP-Management im VPN-Segment etwas zu erleichtern, können wir über IP-Pool vergeben lassen. Der VPN-Server nimmt dann einfach eine freie IP-Adresse aus diesem Pool und verwendet diesen für einen neu verbundenen VPN-User.

/interface bridge add name=”BR-VPN”

/ip address  add address=”192.168.1.254/24″ interface=”BR-VPN”

/ip pool add name=”OpenVPN Pool” ranges=192.168.1.1-192.168.1.250

VPN-User und VPN-Profil anlegen

Als erstes legen wir ein neues VPN-Profil an das grundlegende Konfigurationseinstellungen der Verbindung regelt. Hier wird auch definiert welchen IP-Pool und DNS Server der VPN-Server dem Client dann Zuordnen soll. Die IP-Adresse vom VPN-Server selbst über die geroutet wird, wird hier festgelegt.

Um die MT auch als DNS-Server verwenden zu können muss diese auch für “remote requests” aktiviert sein! Es kann auch ein beliebiger DNS-Server im Netzwerk verwendet werden jedoch muss dieser auch über die VPN-Verbindung erreichbar sein.

Jeder Benutzer der sich über OpenVPN einwählt sollte nun ein eigenes “secret” bekommen. Das Kennwort sollte hier für jeden Benutzer unterschiedlich sein und sonst im gesamten System nicht vorkommen!

/ip dns set allow-remote-requests=yes

/ppp profile add name=”OpenVPN” use-encryption=required local-address=192.168.1.254 dns-server=192.168.1.254 remote-address=”OpenVPN Pool” 

/ppp secret add name=benutzername profile=”OpenVPN” password=”mein-passwort” service=ovpn

Firewall Regeln konfigurieren

Um eine Verbindung zum OpenVPN Server überhaupt funktioniert muss dieser Zugangspunkt freigegeben werden. Ich selbst verwende nie den Standard-Port 1194 für OpenVPN. Als Beispiel verwenden wir hier 5352. Des weiteren müssen wir nun den Verbundenen Clients auch Zugriff auf das Netzwerk erlauben.

Die Regel für den Zugang zum OpenVPN/DNS Server sollte vor “action=drop chain=input” sein!
Bei der Regel für Zugang zum Netzwerk forwarding sollte eben so vor “action=drop chain-forward” stehen!

Dies ist generell nur eine sehr vereinfachte Gestaltung einer Firewall! 

/ip firewall filter add action=accept chain=input comment=”accept OpenVPN” dst-port=5352 protocol=tcp

/ip firewall filter add action=accept chain=input comment=”accept DNS-from-OpenVPN-Clients” dst-port=53 protocol=udp src-address=192.168.1.0/24

/ip firewall filter add action=accept chain=forward comment=”accept OpenVPN Clients to Network” dst-address=192.168.0.0/24 src-address=192.168.1.0/24

OpenVPN Server aktivieren

Da nun generell alles konfiguriert wurde können wir nun auch die OpenVPN Server aktivieren.

/interface ovpn-server server set default-profile=”OpenVPN” certificate=”OpenVPN Server” require-client-certificate=yes auth=sha1 cipher=aes256 enable=yes

Zertifikate exportieren für Clients

Die erstellen Zertifikate müssen nun exportiert werden um in einem Client verwenden zu können.

Also erstes sollte man das VPN CA Zertifikat exportieren (ohne Angabe von einem Kennwort) somit wird kein privater Schlüssel mit exportiert. 
Verwendet man das Client-Zertifikat unter einer anderen MT so reicht der Export mit einem PEM Typ aber hier muss ein Kennwort (Export Passphrase) angegeben werden da sonst kein privater Schlüssel mit exportiert wird.
Möchte man das Zertifikat z.B. am Android/IPhone Handy verwendet so muss man dies mit dem PKCS12-Type exportieren. 

/certificate export-certificate “OpenVPN CA” export-passphrase=””

/certificate export-certificate “OpenVPN  Benutzer” export-passphrase=”mein-pw” type=pem

oder

/certificate export-certificate “OpenVPN Benutzer” export-passphrase=”mein-pw” type=pkcs12

Inhaltsverzeichnis