Manapság a VPN technológia egyre népszerűbb. A hétköznapi felhasználók VPN-t használnak az internet biztonságos eléréséhez. Ezenkívül segít megkerülni a helyileg blokkolt webhelyeket és szolgáltatásokat, és megvédi az esetleges külső rosszindulatú viselkedést. Amikor VPN-kiszolgálóhoz csatlakozik, biztonságos alagút van a számítógép és a szerver között, amely kívülről nem érhető el, így a VPN-kiszolgáló válik az Ön internet-hozzáférési pontjává. Rengeteg VPN-szolgáltatás létezik, ingyenes és fizetős is, de ha ezek valamilyen okból nem működnek az Ön számára, bármikor beállíthatja saját VPN-kiszolgálóját.
Saját VPN futtatásához VPS szervert kell bérelned . Különböző szoftverek léteznek, amelyek lehetővé teszik VPN-kapcsolat létrehozását. Ezek a támogatott operációs rendszerekben és a használt algoritmusokban különböznek egymástól. Két független megközelítést fogunk megvizsgálni egy VPN szerver beállításához. Az első a PPTP protokollon alapul, amelyet már elavultnak és nem biztonságosnak tartanak, de nagyon könnyen konfigurálható. A másik modern és biztonságos OpenVPN szoftvert használ, de egy harmadik féltől származó kliensalkalmazás telepítését és alaposabb beállítási folyamatot igényel.
Tesztkörnyezetünkben egy virtuális szervert fogunk használni, amelyet Ubuntu Server 18.04 hajt. A tűzfalat ki fogjuk kapcsolni a szerveren, mert a konfigurációja külön cikket érdemel. Leírjuk a Windows 10 telepítési folyamatát.
Előkészítés
Függetlenül attól, hogy melyik VPN-kiszolgálót választja, az internet-hozzáférést az operációs rendszer integrált eszközeivel állítják be. Ahhoz, hogy egy külső szolgáltatási interfészen keresztül meg lehessen nyitni az internet-hozzáférést, engedélyezni kell a csomagtovábbítást az interfészek között, és be kell állítani a hálózati címfordítást.
A csomagtovábbítás bekapcsolásához nyissa meg az „/etc/sysctl.conf” fájlt , és módosítsa a „net.ipv4.ip_forward” paraméter értékét 1 -re.
Ha a módosításokat a számítógép újraindítása nélkül szeretné alkalmazni, futtassa a parancsot
sudo sysctl -p /etc/sysctl.conf
A hálózati címfordítás az iptables segítségével konfigurálható . Először ellenőrizze a külső hálózati interfész nevét az „ip link show” parancs futtatásával - a következő lépésben szüksége lesz rá. A mi nevünk „ens3”.
Engedélyezze a hálózati cím fordítását a külső interfészen az összes helyi hálózati csomópont számára.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Vegye figyelembe, hogy meg kell adnia a szerver interfészének valódi nevét, ez eltérhet a miénktől.
Alapértelmezés szerint az iptables által létrehozott összes szabály visszaáll az eredeti állapotába a szerver újraindítása után. Ennek megakadályozására használja az „iptables-persistent” segédprogramot. Telepítse a következő csomagot:
sudo apt install iptables-persistent
A telepítési folyamat során egy konfigurációs ablak jelenik meg, amely felajánlja az aktuális iptables szabályok mentését. Mivel a szabályok már definiálva vannak, csak erősítse meg őket, és kattintson kétszer az „Igen” gombra . Mivel most a szabályok a szerver újraindítása után automatikusan érvénybe lépnek.
PPTP szerver
Szerver konfiguráció
Telepítse a csomagot:
sudo apt install pptpd
A telepítés befejezése után nyisd meg az „/etc/pptpd.conf” fájlt egy tetszőleges szövegszerkesztőben, és szerkeszd így:
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
Ezután szerkessze az „/etc/ppp/pptpd-options” fájlt . A paraméterek többsége alapértelmezés szerint be van állítva.
#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
A következő lépésben létre kell hoznia egy rekordot a klienskapcsolatokhoz. Tegyük fel, hogy hozzá szeretne adni egy „vpnuser” felhasználót „1” jelszóval , és engedélyezni szeretné a dinamikus címzést számára. Nyissa meg az „/etc/ppp/chap-secrets” fájlt , és adja hozzá a felhasználó paramétereit tartalmazó következő sort a fájl végéhez:
vpnuser pptpd 1 *
A „pptpd” érték a szolgáltatás neve, amelyet a „pptpd-options” fájlban adtunk meg. A „*” helyett fix IP-címet is megadhatunk. Ennek eredményeként a „chap-secrets” fájlnak így kell kinéznie:
A beállítások alkalmazásához állítsa alaphelyzetbe a pptpd szolgáltatást, és adja hozzá az automatikus betöltéshez.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
A szerver konfigurálása befejeződött.
Kliens konfiguráció
Nyissa meg a „Start” - „Beállítások” - „Hálózat és internet” - „VPN” menüpontot , majd kattintson a „VPN-kapcsolat hozzáadása” gombra.
A megnyíló ablakban adja meg a csatlakozási paramétereket, majd kattintson a „Mentés” gombra.
- VPN-szolgáltató: „Windows (beépített)”
- Kapcsolat neve: „vpn_connect” (bármilyen nevet választhat)
- Szerver neve vagy címe: (adja meg a szerver külső IP-címét)
- VPN típusa: „Automatikus”
- Bejelentkezési adatok típusa: „Felhasználónév és jelszó”
- Felhasználónév: vpnuser (a szerver „chap-secrets” fájljában megadott név)
- Jelszó: 1 (mint a „chap-secrets” fájlban)
A paraméterek mentése után az ablakban látni fogja az új VPN-kapcsolatot. Kattintson a bal egérgombbal a kapcsolatra, és válassza a „Csatlakozás” lehetőséget . Sikeres kapcsolat esetén a „Csatlakoztatva” állapot jelenik meg.
A Beállítások részben megtalálja a kliens és a szerver belső címét. A „Célcím” mezőben a külső szerver címe látható.
Csatlakozáskor a szerver belső IP-címe, esetünkben a 172.16.0.1 , lesz az alapértelmezett átjáró az összes kimenő csomag számára.
Bármely online szolgáltatás használatával megbizonyosodhat arról, hogy a számítógép külső IP-címe most megegyezik a VPN-kiszolgáló IP-címével.
OpenVPN szerver
Szerver konfiguráció
Növeljük az aktuális felhasználó jogosultsági szintjét, mert további beállításunkhoz root hozzáférésre lesz szükségünk.
sudo -s
Telepítse az összes szükséges csomagot. Szükségünk lesz az „Easy-RSA” csomagra a titkosítási kulcsok kezeléséhez.
apt install openvpn easy-rsa iptables-persistent
Engedélyezze a bejövő kapcsolatokat az 1194-es porton UDP protokollon keresztül, és alkalmazza az iptables szabályokat.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Hozz létre egy könyvtárat az „Easy-RSA” csomagból másolt fájlokkal, és navigálj bele.
make-cadir ~/openvpn
cd ~/openvpn
Nyilvános kulcsú infrastruktúra (PKI) létrehozása.
./easyrsa init-pki
Hozza létre a hitelesítésszolgáltató (CA) főtanúsítványát.
./easyrsa build-ca
A létrehozási folyamat során a rendszer kérni fogja, hogy állítson be és jegyezzen meg egy jelszót. Ezenkívül kérdésekre is válaszolnia kell, és meg kell adnia a kulcs tulajdonosával kapcsolatos információkat. A szögletes zárójelben megadott alapértelmezett értékeket meghagyhatja. A bevitel véglegesítéséhez nyomja meg az „Enter” billentyűt.
Generáljon egy privát kulcsot és egy tanúsítványkérelmet. Argumentumként adjon meg egy tetszőleges nevet; esetünkben ez „vpn-szerver”.
./easyrsa gen-req vpn-server nopass
A Közös név értéket hagyja alapértelmezettként.
Írja alá a létrehozott szervertanúsítvány-kérelmet.
./easyrsa sign-req server vpn-server
Ebben a lépésben válaszoljon „igennel” az aláírás megerősítéséhez, majd adja meg a gyökértanúsítvány létrehozásakor létrehozott jelszót.
Diffie-Hellman paraméterek generálása. Ezeket a paramétereket a szerver és a kliens közötti biztonságos kulcscserére használják.
./easyrsa gen-dh
Minden szükséges fájl generálva lett. Hozzunk létre egy "keys" mappát az OpenVPN munkakönyvtárában a kulcsok tárolásához, és másoljuk oda a létrehozott fájlokat.
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
NAT konfigurálása a következővel: iptables szabályok. Hozz létre egy fájlt, melynek neve nat és nyissa meg szerkesztésre a /etc/openvpn/ könyvtárban.
#!/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
Mentse el a fájlt, és tegye futtathatóvá.
sudo chmod 755 /etc/openvpn/nat
Másolja a kiszolgáló konfigurációs sablonját.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Nyisd meg szerkesztésre az „/etc/openvpn/server.conf” fájlt , győződj meg róla, hogy tartalmazza a következő sorokat, és szükség esetén szerkeszd őket:
#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
Engedélyezze a forgalom továbbítását a szerveren.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Indítsa el az OpenVPN-t a konfiguráció alkalmazásához.
systemctl restart openvpn@server
A szerver konfigurálása befejeződött!
Kliens konfiguráció
Látogasson el az OpenVPN hivatalos weboldalára: „ https://openvpn.net ”, majd a „KÖZÖSSÉG” részhez.
Görgess lejjebb, és töltsd le az operációs rendszered verziójának megfelelő telepítőt. Esetünkben ez a Windows 11 ARM64.
Telepítse az alkalmazást úgy, hogy alapértelmezés szerint minden paramétert meghagy.
A következő lépésben elő kell készítenie a következő fájlt a szerveren, és át kell vinnie azokat a kliens számítógépre:
- nyilvános és privát kulcsok;
- a hitelesítési központ kulcsának másolata;
- konfigurációs fájl sablon.
Csatlakozz a szerverhez, emeld a jogosultságaidat, és navigálj a létrehozott könyvtárba. "~/openvpn".
sudo -s
cd ~/openvpn
Generáljon egy privát kulcsot és egy tanúsítványkérelmet a kliens számára. Argumentumként adjon meg egy tetszőleges nevet; esetünkben ez „kliens1”.
./easyrsa gen-req client1 nopass
Adja meg a gyökértanúsítvány létrehozásakor beállított jelszót, és hagyja meg a Common Name értéket alapértelmezettként.
Írja alá a létrehozott klienstanúsítvány-kérelmet.
./easyrsa sign-req client client1
Ebben a lépésben válaszoljon „igennel” az aláírás megerősítéséhez, majd adja meg a gyökértanúsítvány létrehozásakor létrehozott jelszót.
A kényelem kedvéért hozzunk létre egy 'client1' nevű mappát a kezdőkönyvtárban, és másoljuk ide az összes, a kliens számítógépre átvinni kívánt fájlt.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Másold át a kliens konfigurációs fájl sablonját ugyanabba a könyvtárba. Másolás közben változtasd meg a fájlkiterjesztést „.ovpn” -re.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Változtasd meg a könyvtár és az összes „~/client1/” fájl tulajdonosát , hogy terjeszteni lehessen őket a kliensnek. Esetünkben legyen a tulajdonos „mihail” .
chown -R mihail:mihail ~/client1
Menj a kliens számítógépre és másold át a „~/client1/” mappa tartalmát . Ezt a Puttyhoz tartozó „PSCP” segédprogrammal teheted meg .
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
A „ca.crt” , „client1.crt” és „client1.key” kulcsfájlokat bárhol tárolhatod . Esetünkben ezek a „c:\Program Files\OpenVPN\keys” mappában találhatók, mi pedig a „client.ovpn” konfigurációs fájlt a „c:\Program Files\OpenVPN\config” könyvtárba másoltuk.
Most pedig térjünk rá a kliens konfigurálására. Nyissuk meg a „c:\Program Files\OpenVPN\config\client.ovpn” fájlt egy szövegszerkesztőben, és szerkesszük a következő sorokat:
#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
A többit hagyd érintetlenül.
Mentse el a fájlt, és indítsa el az „OpenVPN GUI” kliensalkalmazást.
Kattintson jobb gombbal az alkalmazás ikonjára a tálcán, és válassza a „Csatlakozás” lehetőséget . Ha a kapcsolat sikeres, az ikon zöldre vált.
Bármely online szolgáltatás segítségével győződjön meg arról, hogy nyilvános IP-címe megváltozott, és most megegyezik a szerver IP-címével.