WireGuard VPN pro vzdálenou správu routeru Mikrotik (RouterOS)

WireGuard VPN pro vzdálenou správu routeru Mikrotik (RouterOS)

WireGuard VPN je jedna z možností jak bezpečně vzdáleně spravovat Mikrotik routery. Spolu s vhodnou (co nejmenší) množinou služeb běžících na routeru, jejich bezpečnou konfigurací, firewallem, pravidelně aktualizovaným systémem, silnými hesly (Winbox, Webfig) a kryptografickými klíči (SSH), jde o další možnou a vhodnou vrstvu ochrany.

POZOR: Pro konfiguraci WireGuard, bude třeba mít RouterOS verze 7 a výš.

Příkazy začínající lomítkem “/” jsou spouštěny na routeru (Mikrotik s RouterOS v7.7).
Příkazy začínající promptem dolaru “$” jsou spouštěny na klientovy (Fedora Linuxu 37).

Router v článku má IP adresu 192.168.10.1 a konfigurovaná WireGuard síť má adresní rozsah 192.168.55.0/24.

1. Nastavení WireGuard na routeru

Vytvoření WireGuard rozhraní

/interface/wireguard/add name=wireguard listen-port=13231

Port 13231 je standardní port WireGuardu na RouterOS, takže je možné tento parametr vynechat. Já jej zde uvádím, protože nastavení portu na nějakou nestandardní hodnotu může být další dílek do bezpečností skládačky.

Nyní novému rozhraní nastavíme IP adresu:

/ip/address/add address=192.168.55.1/24 interface=wireguard

Zjištění veřejného klíče nového rozhraní

Nyní budeme potřebovat zjistit veřejný klíč námi přidaného rozhraní na routeru (public-key) rozhraní co jsme právě přidali:

/interface/wireguard print

Veřejný klíč z routeru (public-key) si poznačte, bude třeba dále při konfiguraci klienta (laptopu).

Povolení WireGuard spojení ve firewallu

Nyní přidáme pravidlo firewallu, které povolí připojení k WireGuardu:

/ip/firewall/filter/add action=accept chain=input comment="Allow WireGuard" dst-port=13231 protocol=udp place-before=1

dst-port” nezapomeňte upravit, tak aby odpovídal portu, který jste nastavili v “listen-port”, pokud nechcete použít výchozí.
V případě, že používáte nějaké pokročilé pravidla firewallu, tak můžete chtít upravit číslo pravidla v “place-before”, které říká, před které pravidlo se má toto vkládané přidat. Pokud například používáte port-knocking, tak můžete chtít, aby chránil i port WireGuardu a tudíž toto pravidlo obecně povolující WireGuard, nemusíte chtít přidávat vůbec.

Nastavení WireGuard provozu jako LAN provozu

Aby měl přístup ke službám routeru:

/interface/list/member/add interface=wireguard list=LAN

2. Nastavení klienta (Laptop s Fedorou)

Instalace wireguard-tools

Nejdříve je třeba nainstalovat balíček wireguard-tools, pokud jej ještě nemáte:

$ sudo dnf install -y wireguard-tools

Vygenerování klíčů

Nyní si vygeneruje pár soukromého a veřejného klíče

$ sudo bash -c -- 'wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey'

Soukromý klíč laptopu zjistíte pomocí:

$ sudo cat /etc/wireguard/privatekey

Tento klíč budete potřebovat do konfiguračního souboru, do sekce “Interface”, který si vytvoříme nyní.

POZOR: Tento soukromý klíč musí zůstat soukromý, nikdy by neměl opustit váš počítač a kromě následujícího kroku, kde jej vložíte do konfiguračního souboru jej již nebudete znovu potřebovat.

Nastavení rozhraní WireGuardu

$ sudo bash -c -- 'cat << EOF > /etc/wireguard/wg0.conf
[Interface]
Address = 192.168.55.2/24
SaveConfig = true
PrivateKey = SOUKROMY-KLIC-LAPTOPU

[Peer]
PublicKey = VEREJNY-KLIC-ROUTERU
AllowedIPs = 192.168.55.0/24
Endpoint = 192.168.10.1:13231
EOF'

Endpoint je IP adresa routeru a port, na kterém jste nakonfigurovali WireGuard, kam se bude laptop připojovat.

Naimportování rozhraní WireGuardu do Network Manageru

$ sudo nmcli con import type wireguard file /etc/wireguard/wg0.conf
Connection 'wg0' (bc80c853-ee44-4eba-b6f0-5ebab2e039e7) successfully added.

Od Gnome verze 44 už by měl být WireGuard podporován přímo v Gnome GUI:
https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1364

Nastavení soukromí pro soubory s privátním klíčem

Teď upravíme práva na souborech se soukromým klíčem:

$ sudo chmod 600 /etc/wireguard/wg0.conf
$ sudo chmod 600 /etc/wireguard/privatekey

Zjištění veřejného klíče laptopu

Nyní si zjistíme veřejný klíč laptopu:

$ sudo cat /etc/wireguard/publickey

A ten budeme potřebovat v dalším kroku, kdy budeme přidávat náš laptop, jako peera na router.

3. Přidání klienta (laptopu) na router

/interface/wireguard/peers/add interface=wireguard allowed-address=192.168.55.2/32 comment="Laptop" public-key="VEREJNY-KLIC-LAPTOPU"

4. Otestování funkce WireGuardu

Spuštění rozhraní

$ wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.55.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0

Stav rozhraní

$ sudo wg show
interface: wg0
public key: VEREJNY-KLIC-LAPTOPU
private key: (hidden)
listening port: 35522

peer: VEREJNY-KLIC-ROUTERU
endpoint: 192.168.10.1:13231
allowed ips: 192.168.55.0/24
latest handshake: 1 minute, 6 seconds ago
transfer: 188 B received, 1.39 KiB sent

Ping na router

Explicitně si zkusíme ping přes rozhraní WireGuardu co jsme si přidali.

$ ping 192.168.55.1 -I wg0 -c3
PING 192.168.55.1 (192.168.55.1) from 192.168.55.2 wg0: 56(84) bytes of data.
64 bytes from 192.168.55.1: icmp_seq=1 ttl=64 time=2.91 ms
64 bytes from 192.168.55.1: icmp_seq=2 ttl=64 time=3.11 ms
64 bytes from 192.168.55.1: icmp_seq=3 ttl=64 time=1.19 ms

--- 192.168.55.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.190/2.401/3.106/0.860 ms

Přístup na služby routeru

Prostě a jednoduše se zkuste připojit na SSH, Webfig či Winbox pomocí WireGuard IP adresy routeru. Například:

Pro SSH:
$ ssh VÁŠ-UŽIVATEL-NA-MIKROTIKU@192.168.55.1

Pro Webfig:
http://192.168.55.1 nebo https://192.168.55.1

5. Ostatní

Ruční vypnutí WireGuardu

$ sudo wg-quick down wg0
[#] wg showconf wg0
[#] ip link delete dev wg0

Vypnutí auto-připojení po startu systému

$ nmcli connection modify "wg0" autoconnect no
Comments are closed.