Nå for tiden blir VPN-teknologi mer populær. Vanlige brukere bruker VPN for sikker tilgang til Internett. Det hjelper også å komme seg rundt lokalt blokkerte nettsteder og tjenester og beskytte mot mulig ekstern ondsinnet oppførsel. Når du kobler til en VPN-server, er det en sikker tunnel mellom datamaskinen og serveren som ikke kan nås utenfra, så VPN-serveren blir ditt Internett-tilgangspunkt. Det er mange VPN-tjenester der ute, både gratis og betalte, men hvis de av en eller annen grunn ikke fungerer for deg, kan du alltid konfigurere din egen VPN-server.
For å kjøre oun VPN, bør du leie VPS-server. Det er forskjellig programvare som lar deg opprette en VPN-tilkobling. Det skiller seg fra hverandre med operativsystemer som støttes og algoritmer som brukes. Vi vil ta en titt på to uavhengige tilnærminger for å sette opp en VPN-server. Den første er basert på PPTP-protokollen som allerede anses som foreldet og ikke sikker, men som er veldig enkel å konfigurere. Den andre bruker moderne og sikker programvare OpenVPN, men krever installasjon av en tredjeparts klientapplikasjon og en mer grundig oppsettprosess.
I vårt testmiljø skal vi bruke en virtuell server drevet av Ubuntu Server 18.04. En brannmur vil bli slått av på serveren fordi konfigurasjonen fortjener en egen artikkel. Vi vil beskrive installasjonsprosessen på Windows 10.
Forberedelse
Uansett hvilken VPN-server du velger, vil Internett-tilgangen settes opp ved hjelp av integrert operativsystem. For å åpne Internett-tilgang gjennom et eksternt tjenestegrensesnitt må du tillate pakkevideresending mellom grensesnittene og konfigurere nettverksadresseoversettelse.
Åpne filen for å slå på pakkevideresending "/etc/sysctl.conf" og endre «net.ipv4.ip_forward» parameterverdi inn 1.
For å bruke endringer uten å starte datamaskinen på nytt, kjør kommandoen
sudo sysctl -p /etc/sysctl.conf
Nettverksadresseoversettelse konfigureres ved hjelp av iptables. Kontroller først navnet på det eksterne nettverksgrensesnittet som kjører kommandoen "ip-link show" - du trenger det på neste trinn. Vårt navn er "ens3".
Aktiver nettverksadresseoversettelse ved ditt eksterne grensesnitt for alle lokale nettverksnoder.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Merk at du må spesifisere det virkelige navnet på serverens grensesnitt, det kan være forskjellig fra vårt.
Som standard blir alle regler opprettet av iptables tilbakestilt etter omstart av serveren. For å forhindre det, bruk "iptables-vedvarende" nytte. Installer følgende pakke:
sudo apt install iptables-persistent
På et tidspunkt under installasjonsprosessen vil du se et konfigurasjonsvindu som foreslår at du lagrer gjeldende iptables-regler. Siden reglene allerede er definert, er det bare å bekrefte og klikke "Ja" to ganger. Siden nå vil reglene bli brukt automatisk etter omstart av serveren.
PPTP-server
Server konfigurasjon
Installer pakken:
sudo apt install pptpd
Etter at installasjonen er avsluttet, åpne filen "/etc/pptpd.conf" i et hvilket som helst tekstredigeringsprogram og rediger det slik:
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
Etter det, rediger filen "/etc/ppp/pptpd-options". De fleste parametere er satt opp som standard.
#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
På neste trinn må du opprette en post for klienttilkoblinger. La oss si at du vil legge til en bruker "vpnuser" med passord "1" og tillate dynamisk adressering for ham. Åpne filen "/etc/ppp/chap-secrets" og legg til følgende linje med brukerens parametere på slutten av filen:
vpnuser pptpd 1 *
"pptpd" verdi er navnet på tjenesten vi spesifiserte i filen "pptpd-alternativer". I stedet for "*" du kan angi en fast IP-adresse. I resultatet, filen "chap-hemmeligheter" skal se slik ut:
For å bruke innstillingene tilbakestill pptpd tjenesten og legg den til autoloading.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
Serverkonfigurasjonen er fullført.
Klientkonfigurasjon
Open "Start" - “Innstillinger” - Nettverk og Internett - "VPN" og klikk "Legg til en VPN-tilkobling"
Skriv inn tilkoblingsparametrene i vinduet som åpnes og klikk "Lagre"
- VPN-leverandør: "Windows (innebygd)"
- Tilkoblingsnavn: "vpn_connect" (du kan velge hvilket som helst navn)
- Servernavn eller adresse: (spesifiser den eksterne IP-adressen til serveren)
- VPN-type: "Auto"
- Type påloggingsinformasjon: «Brukernavn og passord»
- Brukernavn: vpbruker (navnet spesifisert i "chap-secrets"-filen på serveren)
- Passord: 1 (som i "chap-secrets"-filen)
Etter å ha lagret parametere, vil du se den nye VPN-tilkoblingen i vinduet. Venstreklikk på tilkoblingen og velg "Connect". I tilfelle av en vellykket tilkobling, vil du se "Tilkoblet" status.
I Alternativer finner du interne adresser til klienten og serveren. Felt "Destinasjonsadresse" viser den eksterne serveradressen.
Når den er tilkoblet, den interne IP-adressen til serveren, 172.16.0.1 i vårt tilfelle blir standard gateway for alle utgående pakker.
Ved å bruke en hvilken som helst nettjeneste kan du sørge for at den eksterne IP-adressen til datamaskinen nå er den samme som VPN-serverens IP-adresse.
OpenVPN-server
Server konfigurasjon
La oss fremme tillatelsesnivået til den nåværende brukeren fordi for vår videre konfigurasjon trenger vi root-tilgang.
sudo -s
Installer alle nødvendige pakker. Vi trenger "Easy-RSA" pakke for å administrere krypteringsnøkler.
apt install openvpn easy-rsa iptables-persistent
Tillat innkommende tilkoblinger på port 1194 via UDP-protokollen og bruk iptables-regler.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Opprett en katalog med kopierte filer fra «Easy-RSA»-pakken og naviger til den.
make-cadir ~/openvpn
cd ~/openvpn
Generer offentlig nøkkelinfrastruktur (PKI).
./easyrsa init-pki
Generer rotsertifikatet for sertifiseringsinstansen (CA).
./easyrsa build-ca
Under opprettelsesprosessen blir du bedt om å angi og huske et passord. Du må også svare på spørsmål og legge inn informasjon om nøkkeleieren. Du kan la standardverdiene stå i hakeparenteser. Trykk «Enter» for å fullføre inntastingen.
Generer en privat nøkkel og en sertifikatforespørsel. Som argument, angi et vilkårlig navn; i vårt tilfelle er det «vpn-server».
./easyrsa gen-req vpn-server nopass
La standardverdien for Fellesnavn være satt til standardverdien.
Signer den genererte serversertifikatforespørselen.
./easyrsa sign-req server vpn-server
På dette trinnet svarer du «ja» for å bekrefte signaturen, og skriver deretter inn passordet som ble opprettet under genereringen av rotsertifikatet.
Generer Diffie-Hellman-parametere. Disse parameterne brukes for sikker nøkkelutveksling mellom serveren og klienten.
./easyrsa gen-dh
Alle nødvendige filer er generert. La oss opprette en "keys"-mappe i OpenVPN-arbeidskatalogen for å lagre nøklene og kopiere de opprettede filene dit.
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
Konfigurer NAT ved hjelp av iptables regler. Opprett en fil med navnet nat og åpne den for redigering i /etc/openvpn/ katalogen.
#!/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
Lagre filen og gjør den kjørbar.
sudo chmod 755 /etc/openvpn/nat
Kopier serverkonfigurasjonsmalen.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Åpne filen "/etc/openvpn/server.conf" for redigering, sørg for at den inneholder følgende linjer, og rediger dem om nødvendig:
#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
Aktiver videresending av trafikk på serveren.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Start OpenVPN for å bruke konfigurasjonen.
systemctl restart openvpn@server
Serverkonfigurasjonen er fullført!
Klientkonfigurasjon
Gå til den offisielle nettsiden til OpenVPN "https://openvpn.net", gå til «FELLESSKAP» seksjon.
Bla ned og last ned installasjonsprogrammet for operativsystemversjonen din. I vårt tilfelle er det Windows 11 ARM64.
Installer applikasjonen og la alle parametere være som standard.
På neste trinn må du klargjøre følgende fil på serveren og overføre dem til klientdatamaskinen:
- offentlige og private nøkler;
- kopi av sertifiseringssenternøkkelen;
- konfigurasjonsfilmal.
Koble til serveren, hev privilegiene og naviger til den opprettede katalogen vår "~/openvpn".
sudo -s
cd ~/openvpn
Generer en privat nøkkel og en sertifikatforespørsel for klienten. Som argument, angi et vilkårlig navn; i vårt tilfelle er det «klient1».
./easyrsa gen-req client1 nopass
Skriv inn passordet vi anga da vi opprettet rotsertifikatet, og la standardverdien for Fellesnavn være beholdt.
Signer den genererte klientsertifikatforespørselen.
./easyrsa sign-req client client1
På dette trinnet svarer du «ja» for å bekrefte signaturen, og skriver deretter inn passordet som ble opprettet under genereringen av rotsertifikatet.
For enkelhets skyld, la oss opprette en mappe med navnet 'client1' i hjemmekatalogen og kopiere alle filene som er ment for overføring til klientdatamaskinen, inn i den.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Kopier klientkonfigurasjonsfilmalen til samme katalog. Endre filtypen til ".ovpn" mens du kopierer.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Endre eieren av katalogen og alle filene «~/klient1/» for å kunne distribuere dem til klienten. La oss lage "mihail" eieren i vårt tilfelle.
chown -R mihail:mihail ~/client1
Gå til klientdatamaskinen og kopier innholdet i «~/klient1/» mappe. Det kan du gjøre ved hjelp av "PSCP" verktøyet, som følger med Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Du kan lagre nøkkelfiler «ca.crt», "klient1.crt", "klient1.nøkkel" hvor du vil. I vårt tilfelle ligger de i denne mappen "c:\Program Files\OpenVPN\keys", og vi moduser konfigurasjonsfilen "client.ovpn" inn "c:\Program Files\OpenVPN\config" katalogen.
La oss nå komme til å konfigurere klienten. Åpne filen "c:\Program Files\OpenVPN\config\client.ovpn" i et tekstredigeringsprogram og rediger følgende linjer:
#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
La resten stå urørt.
Lagre filen og start klientapplikasjonen "OpenVPN GUI".
Høyreklikk på appikonet på oppgavelinjen og velg "Connect". Hvis tilkoblingen er vellykket, blir ikonet grønt.
Bruk en hvilken som helst nettjeneste for å sikre at den offentlige IP-adressen din er endret og nå er den samme som serverens IP-adresse.