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.
Chcete-li provozovat svou VPN, měli byste pronajmout VPS server. Existuje jiný software, který vám umožní vytvořit připojení VPN. 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í serveru VPN. První z nich je založen na protokolu PPTP, který je již považován za zastaralý a není bezpečný, ale je opravdu snadno konfigurovatelný. 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.
Chcete-li zapnout předávání paketů, otevřete soubor "/etc/sysctl.conf" a změnit „net.ipv4.ip_forward“ hodnotu parametru do 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 externího síťového rozhraní, na kterém je příkaz spuštěn "zobrazit odkaz ip" - budete jej potřebovat v dalším kroku. Naše jméno 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í jsou všechna pravidla vytvořená iptables po restartu serveru resetována. Abyste tomu zabránili, použijte "iptables-persistent" utility. Nainstalujte následující balíček:
sudo apt install iptables-persistent
V určitém okamžiku během procesu instalace uvidíte konfigurační okno, které vám nabídne uložení aktuálních pravidel iptables. Protože pravidla jsou již definována, stačí potvrdit a kliknout "Ano" dvakrát. Od této chvíle budou pravidla aplikována 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é soubor upravte "/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 umožnit 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 *
"pptpd" value je název služby, kterou jsme zadali v souboru "pptpd-options". Namísto „*“ můžete zadat pevnou IP adresu. Ve výsledku soubor "chlap-tajemství" by měl vypadat takto:
Chcete-li nastavení použít, resetujte pptpd službu 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řená "Start" - "Nastavení" - Síť a internet - „VPN“ a klepněte na tlačítko „Přidat připojení VPN“
V otevřeném okně zadejte parametry připojení a klikněte "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é připojení VPN. Klikněte levým tlačítkem na připojení a vyberte "Připojit". V případě úspěšného připojení uvidíte „Připojeno“ status.
V Možnostech naleznete interní adresy klienta a serveru. Pole “Cílová adresa” zobrazí adresu externího serveru.
Po připojení interní IP adresa serveru, 172.16.0.1 v našem případě se stane výchozí bránou 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. budeme potřebovat “Easy-RSA” paket pro správu šifrovacích klíčů.
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 se ujistěte, ž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í stránky OpenVPN “https://openvpn.net“, přejděte na "KOMUNITA" sekce.
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. Změňte příponu souboru na „.ovpn“ při kopírování.
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. Pojďme udělat "mihail" v našem případě majitel.
chown -R mihail:mihail ~/client1
Přejděte na klientský počítač a zkopírujte obsah souboru "~/client1/" složku. Můžete to udělat s pomocí "PSCP" utilita, která jde s Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Můžete ukládat klíčové soubory "ca.crt", "klient1.crt", "klient1.klíč" kdekoli chcete. V našem případě jsou v této složce "c:\Program Files\OpenVPN\keys"a upravíme konfigurační soubor "client.ovpn" do "c:\Program Files\OpenVPN\config" adresáře.
Nyní pojďme ke konfiguraci 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 na ikonu aplikace na hlavním panelu a vyberte "Připojit". Pokud je připojení úspěšné, ikona zezelená.
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.