V súčasnosti sa technológia VPN stáva čoraz populárnejšou. Bežní používatelia používajú VPN na bezpečný prístup na internet. Pomáha tiež obísť miestne blokované webové stránky a služby a chrániť pred možným vonkajším škodlivým správaním. Keď sa pripájate k serveru VPN, medzi počítačom a serverom existuje bezpečný tunel, ku ktorému nie je možné pristupovať zvonku, takže server VPN sa stane vaším prístupovým bodom na internet. Existuje veľa služieb VPN, bezplatných aj platených, ale ak vám z nejakého dôvodu nefungujú, vždy si môžete nakonfigurovať svoj vlastný server VPN.
Ak chcete spustiť svoju sieť VPN, mali by ste prenajať VPS server. Existuje iný softvér, ktorý vám umožňuje vytvoriť pripojenie VPN. Líši sa od seba podporovanými operačnými systémami a použitými algoritmami. Pozrieme sa na dva nezávislé prístupy k nastaveniu servera VPN. Prvý z nich je založený na protokole PPTP, ktorý je už považovaný za zastaraný a nie bezpečný, ale je skutočne ľahko konfigurovateľný. Druhý využíva moderný a bezpečný softvér OpenVPN, ale vyžaduje inštaláciu klientskej aplikácie tretej strany a dôkladnejší proces nastavenia.
V našom testovacom prostredí budeme používať virtuálny server poháňaný Ubuntu Server 18.04. Firewall bude na serveri vypnutý, pretože jeho konfigurácia by si zaslúžila samostatný článok. Popíšeme proces nastavenia v systéme Windows 10.
Príprava
Bez ohľadu na to, ktorý server VPN si vyberiete, prístup na internet bude nastavený integrovanými prostriedkami operačného systému. Ak chcete otvoriť prístup na internet cez externé rozhranie služby, musíte povoliť preposielanie paketov medzi rozhraniami a nakonfigurovať preklad sieťových adries.
Ak chcete zapnúť presmerovanie paketov, otvorte súbor "/etc/sysctl.conf" a zmeniť „net.ipv4.ip_forward“ hodnotu parametra do 1.
Ak chcete použiť zmeny bez reštartovania počítača, spustite príkaz
sudo sysctl -p /etc/sysctl.conf
Preklad sieťových adries sa konfiguruje pomocou iptables. Najprv skontrolujte názov externého sieťového rozhrania spusteného príkazom "zobrazenie odkazu IP" - budete ho potrebovať v ďalšom kroku. Naše meno je "ens3".
Povoľte preklad sieťových adries na vašom externom rozhraní pre všetky uzly lokálnej siete.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Upozorňujeme, že musíte zadať skutočný názov rozhrania vášho servera, môže sa líšiť od nášho.
Štandardne sa všetky pravidlá vytvorené iptables resetujú po reštarte servera. Aby ste tomu zabránili, použite "iptables-persistent" užitočnosť. Nainštalujte nasledujúci balík:
sudo apt install iptables-persistent
V určitom bode počas procesu inštalácie uvidíte konfiguračné okno, ktoré vám navrhne uložiť aktuálne pravidlá iptables. Keďže pravidlá sú už definované, stačí potvrdiť a kliknúť "Áno" dvakrát. Odteraz sa pravidlá budú uplatňovať automaticky po reštarte servera.
Server PPTP
Konfigurácia servera
Nainštalujte balík:
sudo apt install pptpd
Po dokončení inštalácie otvorte súbor „/etc/pptpd.conf“ v ľubovoľnom textovom editore a upravte ho 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
Potom upravte súbor „/etc/ppp/pptpd-options“. Väčšina parametrov je predvolene 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 ďalšej fáze budete musieť vytvoriť záznam pre pripojenia klientov. Povedzme, že chcete pridať používateľa "vpnuser" s heslom "1" a umožniť mu dynamické adresovanie. Otvorte súbor „/etc/ppp/chap-secrets“ a na koniec súboru pridajte nasledujúci riadok s parametrami používateľa:
vpnuser pptpd 1 *
"pptpd" hodnota je názov služby, ktorú sme zadali v súbore "možnosti pptpd", Namiesto „*“ môžete zadať pevnú IP adresu. Vo výsledku je súbor "kap-tajomstvá" by mal vyzerať takto:
Ak chcete použiť nastavenia, resetujte pptpd a pridajte ju do automatického načítavania.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Konfigurácia servera je dokončená.
Konfigurácia klienta
Otvorený "Štart" - "Nastavenie" - Sieť a internet - „VPN“ a kliknite na tlačidlo „Pridať pripojenie VPN“
V otvorenom okne zadajte parametre pripojenia a kliknite „Uložiť“
- Poskytovateľ VPN: „Windows (vstavaný)“
- Názov pripojenia: „vpn_connect“ (môžete si vybrať ľubovoľný názov)
- Názov alebo adresa servera: (uveďte externú IP adresu servera)
- Typ VPN: „Automaticky“
- Typ prihlasovacích údajov: „Používateľské meno a heslo“
- Užívateľské meno: vpnuser (názov uvedený v súbore „chap-secrets“ na serveri)
- heslo: 1 (ako v súbore „chap-secrets“)
Po uložení parametrov uvidíte v okne nové pripojenie VPN. Kliknite ľavým tlačidlom myši na pripojenie a vyberte "Pripojiť". V prípade úspešného pripojenia uvidíte „Pripojené“ status.
V Možnostiach nájdete interné adresy klienta a servera. Pole “Cieľová adresa” zobrazí adresu externého servera.
Po pripojení interná IP adresa servera, 172.16.0.1 v našom prípade sa stane predvolenou bránou pre všetky odchádzajúce pakety.
Pomocou akejkoľvek online služby sa môžete uistiť, že externá adresa IP počítača je teraz rovnaká ako adresa IP vášho servera VPN.
Server OpenVPN
Konfigurácia servera
Podporme úroveň povolení aktuálneho používateľa, pretože pre našu ďalšiu konfiguráciu budeme potrebovať prístup root.
sudo -s
Nainštalujte všetky potrebné pakety. Budeme potrebovať “Easy-RSA” paket na správu šifrovacích kľúčov.
apt install openvpn easy-rsa iptables-persistent
Povoliť prichádzajúce pripojenia na porte 1194 cez protokol UDP a použiť pravidlá iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Vytvorte adresár so skopírovanými súbormi z balíka „Easy-RSA“ a prejdite doň.
make-cadir ~/openvpn
cd ~/openvpn
Generovanie infraštruktúry verejných kľúčov (PKI).
./easyrsa init-pki
Vygenerujte koreňový certifikát certifikačnej autority (CA).
./easyrsa build-ca
Počas procesu vytvárania budete vyzvaní na nastavenie a zapamätanie si hesla. Budete tiež musieť odpovedať na otázky a zadať informácie o vlastníkovi kľúča. Predvolené hodnoty uvedené v hranatých zátvorkách môžete ponechať. Stlačením klávesu „Enter“ dokončíte zadanie.
Vygenerujte súkromný kľúč a žiadosť o certifikát. Ako argument zadajte ľubovoľný názov, v našom prípade „vpn-server“.
./easyrsa gen-req vpn-server nopass
Hodnotu Bežný názov ponechajte ako predvolenú.
Podpíšte vygenerovanú žiadosť o certifikát servera.
./easyrsa sign-req server vpn-server
V tomto kroku odpovedzte „áno“ na potvrdenie podpisu a potom zadajte heslo, ktoré bolo vytvorené počas generovania koreňového certifikátu.
Generovanie parametrov Diffie-Hellmanovho testu. Tieto parametre sa používajú na bezpečnú výmenu kľúčov medzi serverom a klientom.
./easyrsa gen-dh
Všetky potrebné súbory boli vygenerované. Vytvorme priečinok „keys“ v pracovnom adresári OpenVPN na uloženie kľúčov a skopírujme tam vytvorené súbory.
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
Konfigurácia NAT pomocou iptables pravidlá. Vytvorte súbor s názvom nat a otvorte ho na úpravu v /etc/openvpn/ adresára.
#!/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 súbor a spustite ho.
sudo chmod 755 /etc/openvpn/nat
Skopírujte šablónu konfigurácie servera.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Otvorte súbor "/etc/openvpn/server.conf" na úpravu sa uistite, že obsahuje nasledujúce riadky a v prípade potreby ich 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
Povoľte presmerovanie prevádzky na serveri.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Spustite OpenVPN, aby ste použili konfiguráciu.
systemctl restart openvpn@server
Konfigurácia servera je dokončená!
Konfigurácia klienta
Prejdite na oficiálnu webovú stránku OpenVPN “https://openvpn.net“, prejdite na "KOMUNITA" Sekcia.
Prejdite nadol a stiahnite si inštalátor pre vašu verziu operačného systému. V našom prípade je to Windows 11 ARM64.
Nainštalujte aplikáciu a ponechajte všetky parametre v predvolenom nastavení.
V ďalšej fáze budete musieť pripraviť nasledujúci súbor na serveri a preniesť ho do klientskeho počítača:
- verejné a súkromné kľúče;
- kópia kľúča certifikačného centra;
- šablóna konfiguračného súboru.
Pripojte sa k serveru, zvýšte privilégiá a prejdite do vytvoreného adresára. "~/openvpn".
sudo -s
cd ~/openvpn
Vygenerujte súkromný kľúč a žiadosť o certifikát pre klienta. Ako argument zadajte ľubovoľný názov; v našom prípade je to „client1“.
./easyrsa gen-req client1 nopass
Zadajte heslo, ktoré sme nastavili pri vytváraní koreňového certifikátu, a hodnotu Common Name ponechajte ako predvolenú.
Podpíšte vygenerovanú žiadosť o klientsky certifikát.
./easyrsa sign-req client client1
V tomto kroku odpovedzte „áno“ na potvrdenie podpisu a potom zadajte heslo, ktoré bolo vytvorené počas generovania koreňového certifikátu.
Pre lepšiu orientáciu vytvorme v domovskom adresári priečinok s názvom „client1“ a skopírujme doň všetky súbory určené na prenos do klientskeho počítača.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Skopírujte šablónu konfiguračného súboru klienta do rovnakého adresára. Zmeňte príponu súboru na „.ovpn“ pri kopírovaní.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Zmeňte vlastníka adresára a všetkých súborov „~/client1/“ aby ich bolo možné distribuovať klientovi. Poďme robiť "mihail" v našom prípade majiteľ.
chown -R mihail:mihail ~/client1
Prejdite na klientsky počítač a skopírujte obsah súboru „~/client1/“ priečinok. Môžete to urobiť pomocou "PSCP" užitočnosť, ktorá ide s Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Môžete uložiť kľúčové súbory "ca.crt", "client1.crt", "klient1.kľúč" kam len chcete. V našom prípade sú v tomto priečinku „c:\Program Files\OpenVPN\keys“a upravíme konfiguračný súbor "client.ovpn" do „c:\Program Files\OpenVPN\config“ adresára.
Teraz poďme ku konfigurácii klienta. Otvorte súbor „c:\Program Files\OpenVPN\config\client.ovpn“ v textovom editore a upravte nasledujúce riadky:
#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
Zvyšok nechajte nedotknutý.
Uložte súbor a spustite klientsku aplikáciu "OpenVPN GUI".
Kliknite pravým tlačidlom myši na ikonu aplikácie na paneli úloh a vyberte "Pripojiť". Ak je pripojenie úspešné, ikona sa zmení na zelenú.
Použite akúkoľvek online službu, aby ste sa uistili, že sa vaša verejná IP adresa zmenila a je teraz rovnaká ako IP adresa servera.