V dnešní době se technologie VPN stává populárnější. Běžní uživatelé používají VPN k bezpečnému přístupu k internetu. Pomáhá také obejít lokálně blokované webové stránky a služby a chránit před možným externím škodlivým chováním. Když se připojujete k serveru VPN, existuje mezi vaším počítačem a serverem bezpečný tunel, ke kterému nelze přistupovat zvenčí, takže server VPN se stává vaším přístupovým bodem k internetu. Existuje spousta služeb VPN, bezplatných i placených, ale pokud vám z nějakého důvodu nefungují, můžete si vždy nakonfigurovat svůj vlastní server VPN.
Pro provozování vaší VPN sítě byste si měli pronajmout VPS server . Existují různé softwary, které vám umožňují vytvořit VPN připojení. Liší se od sebe podporovanými operačními systémy a použitými algoritmy. Podíváme se na dva nezávislé přístupy k nastavení VPN serveru. První je založen na protokolu PPTP, který je již považován za zastaralý a nezabezpečený, ale jeho konfigurace je velmi snadná. Druhý využívá moderní a bezpečný software OpenVPN, ale vyžaduje instalaci klientské aplikace třetí strany a důkladnější proces nastavení.
V našem testovacím prostředí budeme používat virtuální server poháněný Ubuntu Server 18.04. Firewall bude na serveru vypnutý, protože jeho konfigurace by si zasloužila samostatný článek. Popíšeme proces nastavení ve Windows 10.
PŘÍPRAVA
Bez ohledu na to, který VPN server si vyberete, přístup k internetu bude nastaven integrovanými prostředky operačního systému. Chcete-li otevřít přístup k internetu přes rozhraní externí služby, musíte povolit předávání paketů mezi rozhraními a nakonfigurovat překlad síťových adres.
Pro zapnutí přesměrování paketů otevřete soubor „/etc/sysctl.conf“ a změňte hodnotu parametru „net.ipv4.ip_forward“ na 1.
Chcete-li použít změny bez restartování počítače, spusťte příkaz
sudo sysctl -p /etc/sysctl.conf
Překlad síťových adres se konfiguruje pomocí iptables . Nejprve zkontrolujte název vašeho externího síťového rozhraní spuštěním příkazu „ip link show“ – budete ho potřebovat v dalším kroku. Náš název je „ens3“.
Povolte překlad síťových adres na vašem externím rozhraní pro všechny uzly místní sítě.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Všimněte si, že musíte zadat skutečné jméno rozhraní vašeho serveru, může se lišit od našeho.
Ve výchozím nastavení se všechna pravidla vytvořená programem iptables po restartu serveru resetují. Abyste tomu zabránili, použijte utilitu „iptables-persistent“ . Nainstalujte následující balíček:
sudo apt install iptables-persistent
V určitém okamžiku během instalace se zobrazí konfigurační okno s návrhem na uložení aktuálních pravidel iptables. Protože pravidla jsou již definována, stačí je potvrdit a dvakrát kliknout na „Ano“ . Pravidla se od této chvíle použijí automaticky po restartu serveru.
Server PPTP
Konfigurace serveru
Nainstalujte balíček:
sudo apt install pptpd
Po dokončení instalace otevřete soubor „/etc/pptpd.conf“ v libovolném textovém editoru a upravte jej takto:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Poté upravte soubor „/etc/ppp/pptpd-options“ . Většina parametrů je nastavena ve výchozím nastavení.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
V další fázi budete muset vytvořit záznam pro připojení klientů. Řekněme, že chcete přidat uživatele „vpnuser“ s heslem „1“ a povolit mu dynamické adresování. Otevřete soubor „/etc/ppp/chap-secrets“ a na konec souboru přidejte následující řádek s parametry uživatele:
vpnuser pptpd 1 *
Hodnota „pptpd“ je název služby, kterou jsme zadali v souboru „pptpd-options“ . Místo „*“ můžete zadat pevnou IP adresu. Soubor „chap-secrets“ by měl ve výsledku vypadat takto:
Chcete-li nastavení použít, resetujte službu pptpd a přidejte ji do automatického načítání.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Konfigurace serveru je dokončena.
Konfigurace klienta
Otevřete „Start“ - „Nastavení“ - „Síť a internet“ - „VPN“ a klikněte na „Přidat připojení VPN“.
V otevřeném okně zadejte parametry připojení a klikněte na tlačítko „Uložit“.
- Poskytovatel VPN: „Windows (vestavěný)“
- Název připojení: „vpn_connect“ (můžete zvolit libovolný název)
- Název nebo adresa serveru: (uveďte externí IP adresu serveru)
- Typ VPN: „Automaticky“
- Typ přihlašovacích údajů: „Uživatelské jméno a heslo“
- Uživatelské jméno: vpnuser (jméno uvedené v souboru „chap-secrets“ na serveru)
- heslo: 1 (jako v souboru „chap-secrets“)
Po uložení parametrů se v okně zobrazí nové VPN připojení. Klikněte levým tlačítkem myši na připojení a vyberte „Připojit“ . V případě úspěšného připojení se zobrazí stav „Připojeno“ .
V Možnostech naleznete interní adresy klienta a serveru. Pole „Cílová adresa“ zobrazuje adresu externího serveru.
Po připojení se interní IP adresa serveru, v našem případě 172.16.0.1 , stane výchozí branou pro všechny odchozí pakety.
Pomocí jakékoli online služby se můžete ujistit, že externí IP adresa počítače je nyní stejná jako IP adresa vašeho VPN serveru.
OpenVPN server
Konfigurace serveru
Pojďme zvýšit úroveň oprávnění aktuálního uživatele, protože pro naši další konfiguraci budeme potřebovat přístup root.
sudo -s
Nainstalujte všechny potřebné pakety. Pro správu šifrovacích klíčů budeme potřebovat paket „Easy-RSA“ .
apt install openvpn easy-rsa iptables-persistent
Povolit příchozí připojení na portu 1194 přes protokol UDP a aplikovat pravidla iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Vytvořte adresář se zkopírovanými soubory z balíčku „Easy-RSA“ a přejděte do něj.
make-cadir ~/openvpn
cd ~/openvpn
Generování infrastruktury veřejných klíčů (PKI).
./easyrsa init-pki
Vygenerujte kořenový certifikát certifikační autority (CA).
./easyrsa build-ca
Během procesu vytváření budete vyzváni k nastavení a zapamatování hesla. Budete také muset odpovědět na otázky a zadat informace o vlastníkovi klíče. Výchozí hodnoty uvedené v hranatých závorkách můžete ponechat. Stisknutím klávesy „Enter“ dokončete zadání.
Vygenerujte soukromý klíč a žádost o certifikát. Jako argument zadejte libovolný název, v našem případě „vpn-server“.
./easyrsa gen-req vpn-server nopass
Hodnotu Běžný název ponechte jako výchozí.
Podepište vygenerovaný požadavek na certifikát serveru.
./easyrsa sign-req server vpn-server
V tomto kroku potvrďte podpis odpovědí „ano“ a poté zadejte heslo, které bylo vytvořeno během generování kořenového certifikátu.
Generuje Diffie-Hellmanovy parametry. Tyto parametry se používají pro bezpečnou výměnu klíčů mezi serverem a klientem.
./easyrsa gen-dh
Všechny potřebné soubory byly vygenerovány. Vytvořme složku „keys“ v pracovním adresáři OpenVPN pro uložení klíčů a zkopírujme tam vytvořené soubory.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Konfigurace NATu pomocí iptables pravidla. Vytvořte soubor s názvem nat a otevřete jej pro úpravy v /etc/openvpn/ adresáře.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Uložte soubor a nastavte jej jako spustitelný.
sudo chmod 755 /etc/openvpn/nat
Zkopírujte šablonu konfigurace serveru.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Otevřete soubor „/etc/openvpn/server.conf“ pro úpravy, ujistěte se, že obsahuje následující řádky, a v případě potřeby je upravte:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Povolte přesměrování provozu na serveru.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Spusťte OpenVPN pro použití konfigurace.
systemctl restart openvpn@server
Konfigurace serveru je dokončena!
Konfigurace klienta
Přejděte na oficiální webové stránky OpenVPN „ https://openvpn.net “ a přejděte do sekce „KOMUNITA“.
Přejděte dolů a stáhněte si instalační program pro vaši verzi operačního systému. V našem případě se jedná o Windows 11 ARM64.
Nainstalujte aplikaci a ponechte všechny parametry ve výchozím nastavení.
V další fázi budete muset připravit následující soubor na serveru a přenést je do klientského počítače:
- veřejné a soukromé klíče;
- kopie klíče certifikačního centra;
- šablona konfiguračního souboru.
Připojte se k serveru, zvyšte oprávnění a přejděte do vytvořeného adresáře. "~/openvpn".
sudo -s
cd ~/openvpn
Vygenerujte soukromý klíč a žádost o certifikát pro klienta. Jako argument zadejte libovolný název; v našem případě „client1“.
./easyrsa gen-req client1 nopass
Zadejte heslo, které jsme nastavili při vytváření kořenového certifikátu, a hodnotu Common Name ponechte jako výchozí.
Podepište vygenerovaný požadavek na klientský certifikát.
./easyrsa sign-req client client1
V tomto kroku potvrďte podpis odpovědí „ano“ a poté zadejte heslo, které bylo vytvořeno během generování kořenového certifikátu.
Pro usnadnění si v domovském adresáři vytvořme složku s názvem „client1“ a zkopírujme do ní všechny soubory určené k přenosu na klientský počítač.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Zkopírujte šablonu konfiguračního souboru klienta do stejného adresáře. Během kopírování změňte příponu souboru na „.ovpn“ .
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Změňte vlastníka adresáře a všech souborů „~/client1/“ , aby je bylo možné distribuovat klientovi. V našem případě nastavme vlastníka „mihail“ .
chown -R mihail:mihail ~/client1
Přejděte na klientský počítač a zkopírujte obsah složky „~/client1/“ . To můžete provést pomocí utility „PSCP“ , která je součástí Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Soubory klíčů „ca.crt“ , „client1.crt“ a „client1.key“ můžete ukládat kamkoli chcete. V našem případě se nacházejí v této složce „c:\Program Files\OpenVPN\keys“ a konfigurační soubor „client.ovpn“ uložíme do adresáře „c:\Program Files\OpenVPN\config“.
Nyní se pojďme pustit do konfigurace klienta. Otevřete soubor „c:\Program Files\OpenVPN\config\client.ovpn“ v textovém editoru a upravte následující řádky:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Zbytek nechte nedotčený.
Uložte soubor a spusťte klientskou aplikaci „OpenVPN GUI“.
Klikněte pravým tlačítkem myši na ikonu aplikace na hlavním panelu a vyberte možnost „Připojit“ . Pokud je připojení úspěšné, ikona se zbarví zeleně.
Pomocí jakékoli online služby se ujistěte, že se vaše veřejná IP adresa změnila a je nyní stejná jako IP adresa serveru.