Kybernetická Bezpečnost - Projekt

Zadání projektu

Advanced VPN Configuration Using Wireguard - application description, testbed creation, implementation of some of the most well-known scenarios for VPN - 1: 1 and N: 1, connection of PKI with VPN

1. Popis Wireguardu

WireGuard je jednoduchý VPN protokol. Byl navržen jako lehká alternativa k tradičním VPN protokolům, jako jsou IPsec nebo OpenVPN, a funguje na základě kryptografického protokolu Noise, což mu umožňuje rychlé a bezpečné šifrování dat.

WireGuard pracuje s veřejnými a soukromými klíči, které umožňují identifikaci a autorizaci mezi jednotlivými VPN uzly. Konfigurace je velmi jednoduchá což z něj činí ideální volbu pro rychlé a efektivní propojení zařízení. Hlavní využití WireGuardu je v oblastech jako zabezpečení vzdáleného přístupu, privátní komunikace mezi servery nebo jako propojení různých poboček organizací přes internet.

Tento protokol je oblíbený díky nízké latenci a bezpečnostní jednoduchosti – což ho činí vhodným pro moderní VPN aplikace, kde je kladen důraz na rychlost a robustnost zabezpečení.

2. VPN - 1:1 konfigurace

Pro oba peery vygenerujeme sadu klíčů a vytvoříme virtuální rozhraní "wg0". Následně oba peery propojíme.

Peer A

IP adresa : 192.168.56.50/24
Port WG : 51820
Veřejný klíč : /Tb/oUwNi/nGwuc2Ix9XFL4MVDKPA+EP/cTtIw8ogkE=


cd /etc/wireguard/
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.1/24
wg set wg0 private-key ./privatekey
ip link set wg0 up
wg          #zobrazení konfigurace (klíče, port, ...)
wg set wg0 peer ji3NzoAScuW+H2fFtMQHhHLNxFir1/Rz/hXLi3EyFzQ= allowed-ips 10.0.0.2/32 endpoint 192.168.56.51:47164
                

Peer B

IP adresa : 192.168.56.51/24
Port WG : 47164
Veřejný klíč : ji3NzoAScuW+H2fFtMQHhHLNxFir1/Rz/hXLi3EyFzQ=


cd /etc/wireguard/
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
ip link add dev wg0 type wireguard
ip address add dev wg0 10.0.0.2/24
wg set wg0 private-key ./privatekey
ip link set wg0 up
wg          #zobrazení konfigurace (klíče, port, ...)
wg set wg0 peer /Tb/oUwNi/nGwuc2Ix9XFL4MVDKPA+EP/cTtIw8ogkE= allowed-ips 10.0.0.1/32 endpoint 192.168.56.50:51820
                

3. VPN - N:1 konfigurace

Server i klienti si vygenerují soukromý a veřejný klíč, který klienti odešlou na server.

Na serveru se vytvoří konfigurační soubor se seznamem všech klientů/peerů a povolí IP forwarding.

Na klientských strojích se vytvoří konfigurační soubor kde se přiřadí IP adresa, privátní klíč.

Server

IP adresa : 192.168.56.50/24
Port WG : 51820
Veřejný klíč : GrsqSzHV9lnPRiBv93uPQUXE7vH2mN/TutuxXTt253w=


cd /etc/wireguard/
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
nano wg0.conf       #vytvoření konfiguračního souboru serveru
wg-quick up wg0
systemctl enable wg-quick@wg0.service
                

wg0.conf


[Interface]
PrivateKey = ML8e2Oi16ef0BYzY5j8WqMY8fw/C9tAa9iQWD48AxlE=
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = nft add table nat; nft add chain nat postrouting { type nat hook postrouting priority 100 \; };
         nft add rule nat postrouting masquerade; nft list ruleset > /etc/nftables.conf;
PostDown = nft flush chain nat postrouting; nft delete table nat; nft list ruleset > /etc/nftables.conf;

# Nastavení klienta 1
[Peer]
PublicKey = 5upnvBKED3NTwlQzXXfOo+x/HJYC5EV48wRFxRMXKFo=
AllowedIPs = 10.0.0.2/32

# Nastavení klienta 2
[Peer]
PublicKey = g/GOPJTGpuBc5FL9UXdmV7KEHUsYrt3fYEPpejfHsDk=
AllowedIPs = 10.0.0.3/32
                

Povolení IP forwardingu


nano /etc/sysctl.conf
    #odkomentujeme následující řádek
        net.ipv4.ip_forward=1
sysctl -p
                

Klient 1

Veřejný klíč : 5upnvBKED3NTwlQzXXfOo+x/HJYC5EV48wRFxRMXKFo=
Privátní klíč : eLpEES5eTLd6VMbb0qRnC4DW3aTc+LSkeGtWqpLaP1Q=


cd /etc/wireguard/
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
nano wg0.conf       #vytvoření konfiguračního souboru klienta
wg-quick up wg0
systemctl enable wg-quick@wg0.service
                

wg0.conf


[Interface]
Address = 10.0.0.2/32
PrivateKey = eLpEES5eTLd6VMbb0qRnC4DW3aTc+LSkeGtWqpLaP1Q=

#Nastavení serveru
[Peer]
PublicKey = GrsqSzHV9lnPRiBv93uPQUXE7vH2mN/TutuxXTt253w=
Endpoint = 192.168.56.50:51820
AllowedIPs = 0.0.0.0/0
                

Klient 2

Veřejný klíč : g/GOPJTGpuBc5FL9UXdmV7KEHUsYrt3fYEPpejfHsDk=
Privátní klíč : yEVHsonWKjFIFOENbPAQJXZht2U4McE80JSzfMzETHU=


- postup viz Klient 1
                

4. Implementace PKI s WireGuardem

WireGuard nepoužívá a nepotřebuje certifikační autoritu (CA) kvůli své jednoduché architektuře, která je založena na asymetrické kryptografii. Klienti a server mají svůj vlastní pár klíčů a autentizace probíhá přímo, což zjednodušuje konfiguraci i správu.

Díky tomuto přímému modelu není nutné spravovat certifikáty, platnost a důvěryhodnost prostřednictvím CA. WireGuard se tím stává snadno nasaditelným řešením pro VPN, které je méně náchylné na problémy spojené s expirovanými nebo kompromitovanými certifikáty.


Zdroje

https://www.wireguard.com/quickstart/#side-by-side-video

http://markliversedge.blogspot.com/2023/09/wireguard-setup-for-dummies.html

https://dev.to/miguelmota/getting-started-with-wireguard-n9e#enabling-ip-forwarding-on-server