Galīgais ceļvedis droša OpenVPN servera iestatīšanai operētājsistēmā Ubuntu 20.04
Virtuālais privātais tīkls (VPN) ļauj droši un privāti izveidot savienojumu ar attālo privāto tīklu, piemēram, biroja tīklu vai internetu tā, it kā jūs būtu tieši savienots ar privāto tīklu.
VPN darbojas servera-klienta arhitektūrā. VPN serveris ir izvietots datorā un ir publiski pieejams internetā. VPN serveri var konfigurēt, lai varētu izveidot savienojumu ar privātu LAN, piemēram, biroja tīklu, vai atļaut savienojumus ar internetu. Lietotājs izveido savienojumu ar VPN serveri, izmantojot VPN klientu savā vietējā datorā. Saziņa starp VPN serveri un klientu notiek, izmantojot drošu tunelēšanas protokolu. Internetam šķiet, ka trafika galamērķis ir VPN serveris; tomēr trafika pāriet uz klientu caur serveri.
Ikdienas dzīvē VPN var izmantot daudzos veidos, piemēram, droša savienojuma izveide ar publisko Wi-Fi tīklu, kas bieži tiek apdraudēta, vai ģeogrāfisko ierobežojumu apiešana noteiktās vietnēs, izveidojot savienojumu ar VPN, kas atrodas valstī, kuru atļauj vietne.
OpenVPN ir plaši izmantota VPN ieviešana, kas nodrošina plašu konfigurāciju un iespēju klāstu. Tas izmanto Secure Sockets Layer (SSL) protokolu, lai šifrētu datus un iepriekš koplietotās atslēgas, lietotājvārdu/paroli vai sertifikātus VPN klienta autentifikācijai. Šajā rakstā mēs redzēsim, kā Ubuntu 20.04 iestatīt VPN serveri un VPN klientu.
Uzstādīšana
OpenVPN ir pieejams iepakojumā esošajos oficiālajos Ubuntu krātuvēs openvpn
. Šī pakotne instalē gan OpenVPN serveri, gan klientu.
sudo apt instalēt openvpn
Kā minēts iepriekš, OpenVPN izmanto SSL sertifikātus, lai šifrētu datus starp serveri un klientu. Mums ir jāizveido sava sertifikātu iestāde (CA), lai izsniegtu sertifikātus VPN. Ņemiet vērā, ka tas ir jāiestata citā datorā, nevis tajā, kurā ir iestatīts OpenVPN; iemesls ir tāds, ka, ja tas atrodas tajā pašā serverī un tas tiek uzlauzts, uzbrucējs var piekļūt privātajai atslēgai un tādējādi uzbrukt VPN savienojumam.
Mēs izmantosim rīku “Easy-RSA”, lai iestatītu sertifikācijas iestādi. Lai to instalētu, CA iekārtā, OpenVPN servera mašīnā un klienta iekārtā palaidiet tālāk norādītās darbības, jo konfigurācijai ir nepieciešama konfigurācija visās trijās, lai iestatītu CA.
sudo apt install easy-rsa
Tagad mēs vispirms konfigurēsim sertifikāta iestādi CA ierīcē un veiksim dažas nepieciešamās konfigurācijas darbības atvērtā VPN servera iekārtā.
Sertifikātu iestādes iestatīšana
Sākotnējā iestatīšana CA ierīcē
Tagad šī pakotne instalē komandu, ko sauc make-cadir
kuru izmanto, lai izveidotu mapi sertifikātu iestādes konfigurācijai. Izveidosim mapi, izmantojot to, un ievadīsim mapi.
make-cadir cert_authority && cd cert_authority
Atveriet failu ar nosaukumu vars
izveidots šajā direktorijā. Šajā failā ir daži konfigurācijas mainīgie, kas mums ir jāmaina. Vērtības, kas jāmaina, ir 91.-96. rindā aiz komentāra par Organizācijas jomas kas apraksta šos laukus. Atceliet rindiņas komentārus un parauga vērtību vietā aizpildiet atbilstošās vērtības.
Saglabājiet un izejiet no faila. Ja izmantojat vim redaktoru, nospiediet Esc
, tips :wq
un nospiediet Ievadiet
lai saglabātu un izietu.
Tālāk mēs palaižam easyrsa
programma direktorijā, lai iestatītu publiskās atslēgas infrastruktūru (PKI), kas tiks izmantota publiskās atslēgas un sertifikātu ģenerēšanai.
./easyrsa init-pki
Nākamajā darbībā tiks ģenerēta CA atslēga un sertifikāts. Kad komanda pieprasa ievadīt paroli, ievadiet CA atslēgas paroli. Ievadiet arī parasto nosaukumu, kad tas tiek prasīts. Ja atstājat šo lauku tukšu, tiks izmantots noklusējuma nosaukums Easy-RSA CA nosaukums.
./easyrsa build-ca
Kā redzams no izvades, sertifikāts un atslēga ir ģenerēti. Šī atslēga tiks izmantota, lai parakstītu klienta un servera sertifikātus, tāpēc tai nekad nevajadzētu pieskarties/mainīt.
Tagad mums ir PKI iestatīšana. Nākamais solis ir izveidot servera atslēgu un sertifikātu mašīnā, ko izmantosim kā OpenVPN serveri. Šo sertifikātu vēlāk parakstīs CA iekārta.
Servera atslēgas un sertifikāta ģenerēšana servera mašīnā
Mēs jau esam instalējuši Easy RSA servera mašīnā. Tagad servera mašīnā veiciet trīs darbības, kuras iepriekš veicām CA mašīnā, proti. izveidojot CA direktoriju, izmantojot make-cadir
un ieiet tajā, modificējot mainīgos vars
failu un ģenerēt PKI, izmantojot ./easyrsa init-pki
komandu.
Pēc tam mums ir jāpalaiž komanda, lai ģenerētu servera sertifikāta pieprasījumu un atslēgu.
./easyrsa gen-req server nopass
Ņemiet vērā, ka mēs izturējām šo opciju nopass
lai komanda neliks mums ievadīt servera atslēgas paroli. Tas joprojām prasīs servera parasto nosaukumu, kurā varat ievadīt jebko vai atstāt to tukšu noklusējuma nosaukumam (serveris) izmantot.
Pārvietojiet ģenerēto atslēgas failu iekšā /etc/openvpn
direktoriju.
sudo mv pki/private/server.key /etc/openvpn
Nosūtiet sertifikāta pieprasījumu uz CA iekārtu. Mēs izmantosim komandu scp
šim nolūkam.
scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/directory
Iepriekš redzamajā ekrānuzņēmumā resursdators 45.79.125.41 ir CA iekārta. Mēs esam nokopējuši sertifikātu / saknes direktorijā.
Tagad servera sertifikāts ir iekopēts CA mašīnā. Nākamais solis ir atgriezties pie CA iekārtas un parakstīt šo sertifikātu.
Servera sertifikāta parakstīšana CA
Vispirms pārbaudīsim, vai sertifikāta pieprasījuma fails no servera ir kopēts CA ierīcē. Dodieties uz direktoriju, kurā mēs nokopējām failu (manā piemērā / root), un palaidiet ls
.
:~# cd /root && ls cert_authority server.req
Kā redzam, fails server.req
ir klāt. Pēc tam dodieties uz CA direktoriju un importējiet šo pieprasījumu.
cd cert_authority ./easyrsa import-req /root/server.req serveris
Lai parakstītu šo pieprasījumu, palaidiet šādu komandu.
./easyrsa sign-req servera serveris
Šeit pirmais arguments ir pieprasījuma veids, t.i., serveris, un otrais arguments ir servera mašīnas parastais nosaukums, kuram mēs iepriekš izmantojām noklusējuma vērtību, t.i., serveris.
Ievadiet frāzi Jā, un CA atslēgas paroli, kad tas tiek prasīts.
Tagad mēs varam noņemt sertifikāta pieprasījuma failu un kopēt serverim ģenerēto sertifikātu, kā arī CA publisko sertifikātu atpakaļ servera mašīnā.
rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root
Tālāk mums ir jāveic vēl dažas darbības, lai nodrošinātu drošu VPN savienojumu.
DH parametru ģenerēšana
DH (Diffie-Hellman) atslēgu apmaiņa ir algoritms, kas nodrošina drošu kriptoatslēgu apmaiņu nedrošā kanālā. Vispirms pārvietosim saņemto sertifikātu un CA publisko sertifikātu uz /etc/openvpn
.
mv /root/ca.crt /root/server.crt /etc/openvpn
Dodieties uz mapi CA servera mašīnā un palaidiet šo komandu, lai ģenerētu DH parametrus. Tā ģenerēšana var aizņemt ilgu laiku.
./easyrsa gen-dh
Tagad pārvietojiet ģenerēto failu uz /etc/openvpn
.
mv /root/cert_authority/pki/dh.pem /etc/openvpn
TA atslēgu ģenerēšana
OpenVPN izmanto citu papildu drošības līdzekli, izmantojot TLS autentifikācijas atslēgu. Lai ģenerētu TLS autentifikācijas atslēgu, palaidiet:
openvpn --genkey --secret tls_auth.key
Un pārvietojiet atslēgu uz /etc/openvpn
.
mv tls_auth.key /etc/openvpn
Servera atslēgas konfigurācija un sertifikātu iestādes iestatīšana tagad ir pabeigta. Tagad pāriesim pie faktiskās VPN servera konfigurācijas.
OpenVPN servera konfigurācija
OpenVPN servera konfigurācijas fails netiek izveidots automātiski, taču mēs varam izmantot veidnes konfigurācijas failu no openvpn
iepakojums.
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz
Atveriet failu, izmantojot vim vai jebkuru jūsu izvēlētu redaktoru.
cd /etc/openvpn vim server.conf
Mums ir jāievada iepriekš ģenerēto atslēgu un sertifikātu vispārējie nosaukumi. Dodieties uz līniju Nr. 78. Tā kā mēs izmantojām visus noklusējuma nosaukumus, mēs tos saglabājam nemainīgus. Pēc tam pārbaudiet DH parametra faila nosaukumu 85. rindā. Mēs esam izmantojuši nosaukumu dh.pem, tāpēc mainīsim to.
Pēc tam modificēsim OpenVPN servera privilēģijas. Dodieties uz 274. un 275. rindu un noņemiet priekšējo daļu ;
lai to komentētu.
Līdzīgi dodieties uz 192. rindu un noņemiet semikolu. Šī direktīva nodrošina visu klientu trafiku, kas šķērso VPN.
Saglabājiet un izejiet no faila.
Mainiet mapes /etc/openvpn īpašumtiesības uz root.
sudo chown -R root:root /etc/openvpn
Tīkla izveide un ugunsmūra iestatīšana
Mums ir jāatļauj IP pārsūtīšana serverī, lai varētu pārsūtīt paketes no VPN klienta un uz to. 28. rindiņa bez komentāriem /etc/sysctl.conf
:
Saglabājiet un izejiet no faila.
Restartēt systemctl
lai šīs izmaiņas notiktu.
sudo sysctl -p
Mums ir jāiestata tīkla adrešu tulkošana (NAT) serverī, izmantojot UFW ugunsmūri, lai ļautu VPN klientam piekļūt internetam, izmantojot VPN servera IP adresi. Vispirms ugunsmūra konfigurācijā iespējosim pakešu pārsūtīšanu. Atvērt /etc/default/ufw
un mainiet mainīgo 19. rindā uz ACCEPT.
Saglabājiet un izejiet no faila.
Tagad pievienojiet failam šādus noteikumus /etc/ufw/before.rules
pirms filtru rindiņu failā.
*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT
Vietā ievadiet savu tīkla interfeisu . Jūs varat redzēt savu tīkla saskarni ar komandu ifconfig
.
Atļaut trafiku OpenVPN pakalpojumam ugunsmūrī un atļaut portu 1194.
sudo ufw atļauj openvpn && sudo ufw atļauj 1194
Pārlādējiet ugunsmūra pakalpojumu.
sudo ufw pārlādēt
Tagad mēs varam restartēt Open VPN servera dēmonu, palaižot:
sudo pakalpojums openvpn restart
Iespējojiet tā palaišanu sāknēšanas laikā, palaižot:
sudo systemctl iespējot openvpn
OpenVPN serveris tagad ir konfigurēts un palaists. Tagad pāriesim pie klienta sertifikāta pieprasījuma un atslēgu ģenerēšanas un citas konfigurācijas.
OpenVPN klienta konfigurācija
Mums ir jāģenerē klientam atslēga un sertifikāta pieprasījums. Procedūra, lai to izdarītu, ir tāda pati kā serverī.
Lai gan klienta atslēgu un sertifikāta pieprasījumu var izveidot klienta mašīnā un pēc tam pārsūtīt uz CA iekārtu, ieteicams to izveidot servera mašīnā. Priekšrocība, to darot serverī, ir tāda, ka varat izveidot skriptu visu nepieciešamo darbību veikšanai serverī, kas atvieglo jauna klienta pievienošanos VPN.
Atveriet servera mapi CA un palaidiet tālāk norādīto.
cd ~/cert_authority ./easyrsa gen-req klienta nopass
Līdzīgi kā iepriekš, ievadiet parasto nosaukumu, kad tas tiek prasīts, vai atstājiet to tukšu, lai izmantotu noklusējuma parasto nosaukumu, t.i., klients.
Tagad kopēsim ģenerēto klienta sertifikāta pieprasījumu uz CA iekārtu.
scp pki/reqs/client.req [email protected]:/root
Importēsim šo pieprasījumu CA mašīnā:
./easyrsa import-req /root/client.req klients
Un tagad parakstīsim to:
./easyrsa sign-req klienta klients
IevadietJā
kad tiek piedāvāts turpināt. Kad tiek prasīts, ievadiet CA atslēgas paroli.
Tagad mēs varam noņemt klientam pieprasīto failu un kopēt pieprasījumu atpakaļ uz VPN servera iekārtu.
rm /root/client.req scp pki/issued/client.crt [email protected]:/root
Izveidosim mapi ar nosaukumu klients
lai VPN serverī saglabātu visus ar klientu saistītos failus. Mēs pārvietosim klienta atslēgu un sertifikātu uz šo mapi.
mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client
Tagad izveidosim konfigurācijas failu no pieejamās veidnes, līdzīgi kā mēs izveidojām servera konfigurācijas failu.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client
Atveriet failu client.conf
. 42. rindiņā ievadiet servera iekārtas resursdatora nosaukumu vai IP adresi vietā mans serveris-1
.
Lai pazeminātu faila privilēģijas, noņemiet komentārus no 61. un 62. rindiņas, noņemot sākuma semikolu.
Tālāk komentējiet 88.-90. un 108. rindiņu. Iemesls ir tāds, ka mēs vēlamies pievienot minēto failu saturu manuāli, nevis izmantot failu atrašanās vietas. Tas tiek darīts, lai klienta konfigurācijas fails vēlāk tiktu pārsūtīts uz klientu, kur mums faktiski nebūs klienta atslēgas un sertifikātu failu; tāpēc mēs kopējam saturu, kas atrodas pašā konfigurācijas failā.
Pievienojiet klienta konfigurācijas failam tālāk norādīto. Dotajos tagos ievadiet attiecīgo failu failu saturu.
# Ielīmējiet ca.crt faila saturu šeit # Ielīmējiet failu client.crt saturu šeit # Ielīmējiet faila client.key saturu šeit atslēgas virziens 1 # Ielīmējiet faila tls_auth.key saturu šeit
Saglabājiet un izejiet no faila. Pārdēvējiet šo failu no client.conf
uz client.ovpn
, jo pēdējais ir paplašinājums, kas nepieciešams konfigurācijas failiem, kurus var importēt kā tīkla konfigurācijas.
Tagad pārsūtiet failu client.ovpn
klientam, t.i., vietējai mašīnai.
Skrien scp
savā klienta mašīnā, lai pārsūtītu failu no servera iekārtas uz vietējo mašīnu.
scp lietotājs@servera_ip:/faila_ceļš vietējais_galamērķa_ceļš
Visbeidzot, mums ir jāizmanto šis konfigurācijas fails, lai izveidotu savienojumu ar VPN serveri. To var izdarīt gan, izmantojot komandrindu, gan GUI.
Lai palaistu VPN klientu no komandrindas, palaidiet:
sudo openvpn --config client.ovpn
Un tā ir vienīgā komanda, kas jāpalaiž, lai palaistu VPN klientu.
Lai palaistu VPN klientu, izmantojot GUI, veiciet tālāk norādītās darbības.
Dodieties uz Iestatījumi » Tīkls savā klienta ierīcē.
Noklikšķiniet uz + pogu VPN sadaļā un no opcijām izvēlieties “Importēt no faila…”.
Noklikšķiniet uz “Pievienot”, lai sāktu lietot VPN.
Ņemiet vērā, ka sadaļā “Vārteja” tā ir servera IP adrese.
Visbeidzot, pārslēdziet pogu “klienta VPN”, lai ierīcē iespējotu VPN.
VPN savienojuma izveide var aizņemt dažas sekundes. Ekrāna augšējā kreisajā stūrī tiks parādīts jauns VPN progresa logotips, kamēr tas tiks iestatīts, un pēc iestatīšanas tas tiks mainīts uz VPN logotipu.
Lai pārbaudītu, vai VPN darbojas pareizi, izpildiet tālāk norādītās darbības.
čokurošanās //ipinfo.io/ip
Tam vajadzētu atgriezt jūsu servera iekārtas IP adresi. Vai arī varat pārbaudīt savu IP adresi, vienkārši Google meklējot “Mans IP”. Ja mūsu VPN iestatīšana darbojas pareizi, tai vajadzētu parādīt jūsu VPN servera IP adresi.
Secinājums
Šajā rakstā mēs redzējām, kā konfigurēt OpenVPN serveri, sertifikācijas iestādi un OpenVPN klientu. Lai VPN pievienotu vairāk klientu, mums tagad ir jāievēro klienta sertifikāta ģenerēšanas un parakstīšanas procedūra un jāizmanto tas pats šeit izveidotais konfigurācijas fails, mainot tikai klienta atslēgu un sertifikāta vērtības.
Ja interneta pieslēgumi ir lēnāki, iespējams, ka, ja saziņai tiek izmantots UDP, rodas ievērojami pakešu zudumi. Lietotājs var pārslēgties uz TCP, atceļot rindiņas komentārus proto tcp
un komentējot līniju proto udp
servera konfigurācijas failā.
Turklāt, ja ir citas kļūdas, varat iestatīt reģistrēšanas līmeni ar darbības vārds
direktīvu gan servera, gan klienta konfigurācijas failos. Varat ievadīt vērtības no 0 līdz 9. Jo augstāka ir šīs direktīvas vērtība, jo žurnāls būs detalizētāks.