Paano Mag-set Up ng OpenVPN Server sa Ubuntu 20.04

Pinakamahusay na gabay sa pag-set up ng isang secure na OpenVPN Server sa Ubuntu 20.04

Binibigyang-daan ka ng Virtual Private Network (VPN) na secure at pribado na kumonekta sa isang malayong pribadong network, halimbawa, sa iyong network ng opisina, o sa Internet sa paraang parang direktang konektado ka sa isang pribadong network.

Gumagana ang VPN sa isang arkitektura ng server-client. Ang isang VPN server ay naka-deploy sa isang makina at naa-access ng publiko sa Internet. Ang VPN server ay maaaring i-configure upang payagan ang pagkonekta sa isang pribadong LAN, tulad ng isang network ng opisina, o payagan ang mga koneksyon sa Internet. Kumokonekta ang user sa VPN server gamit ang isang VPN client sa kanyang lokal na makina. Ang komunikasyon sa pagitan ng VPN server at kliyente ay nagaganap gamit ang isang secure na tunneling protocol. Sa Internet, tila ang destinasyon ng trapiko ay ang VPN server; gayunpaman, ang trapiko ay dumadaan sa kliyente sa pamamagitan ng server.

Maraming gamit ang VPN sa pang-araw-araw na buhay, tulad ng secure na pagkonekta sa isang pampublikong Wifi network, na kadalasang nakompromiso o pag-bypass sa mga geo-restrictions sa ilang partikular na website sa pamamagitan ng pagkonekta sa isang VPN na nakabase sa isang bansa na pinapayagan ng website.

Ang OpenVPN ay isang malawakang ginagamit na pagpapatupad ng VPN na nagbibigay-daan sa isang malawak na hanay ng mga pagsasaayos at pagpipilian. Gumagamit ito ng Secure Sockets Layer (SSL) protocol para sa pag-encrypt ng data at mga pre-shared na key, username/password o mga certificate para sa authentication ng VPN client. Sa artikulong ito, makikita natin kung paano mag-set up ng VPN server at VPN client sa Ubuntu 20.04.

Pag-install

Available ang OpenVPN sa mga opisyal na repositoryo ng Ubuntu sa package openvpn. Ini-install ng package na ito ang parehong OpenVPN server pati na rin ang kliyente.

sudo apt install openvpn

Tulad ng nabanggit kanina, ang OpenVPN ay gumagamit ng mga SSL certificate upang i-encrypt ang data sa pagitan ng server at ng kliyente. Kailangan naming mag-set up ng sarili naming certificate authority (CA) para mag-isyu ng mga certificate para sa VPN. Tandaan na dapat itong i-set up sa ibang machine kaysa sa kung saan naka-set up ang OpenVPN; ang dahilan ay kung ito ay nasa parehong server at kung ito ay makompromiso, maaaring ma-access ng isang umaatake ang pribadong key at sa gayon ay aatakehin ang koneksyon ng VPN.

Gagamit kami ng tool na tinatawag na 'Easy-RSA' para i-set up ang certificate authority. Upang i-install ito, patakbuhin ang sumusunod sa CA machine, ang OpenVPN server machine at ang client machine, dahil ang configuration ay kinakailangan sa lahat ng tatlong ito upang i-setup ang CA.

sudo apt install easy-rsa

Iko-configure muna namin ngayon ang awtoridad ng certificate sa CA machine at gagawa ng ilang kinakailangang hakbang sa pagsasaayos para sa pareho sa Open VPN server machine.

Pag-setup ng Awtoridad ng Sertipiko

Paunang setup sa CA machine

Ngayon, nag-i-install ang package na ito ng command na tinatawag gumawa-cadir na ginagamit upang lumikha ng isang folder para sa pagsasaayos ng awtoridad ng sertipiko. Gumawa tayo ng folder gamit ito at ilagay ang folder.

make-cadir cert_authority && cd cert_authority

Buksan ang file na tinatawag vars nilikha sa direktoryong ito. Ang file na ito ay naglalaman ng ilang mga variable ng pagsasaayos na kailangan naming baguhin. Ang mga halaga na kailangang baguhin ay nasa mga linya 91-96, pagkatapos ng komento tungkol sa Mga Larangan ng Organisasyon na naglalarawan sa mga larangang ito. Alisin sa komento ang mga linya at punan ang naaangkop na mga halaga bilang kapalit ng mga sample na halaga.

I-save at lumabas sa file. Kung gumagamit ka ng vim editor, pindutin ang Esc, uri :wq at pindutin Pumasok upang i-save at lumabas.

Susunod, patakbuhin namin ang easyrsa programa sa direktoryo para i-set up ang public key infrastructure (PKI), na gagamitin para bumuo ng public key at mga certificate.

./easyrsa init-pki

Ang susunod na hakbang ay bubuo ng CA key at certificate. Kapag nag-prompt ang command para sa isang password, magpasok ng password para sa CA key. Gayundin, maglagay ng karaniwang pangalan kapag sinenyasan. Kung iiwan mo itong blangko, gagamitin ang default na pangalang Easy-RSA CA na pangalan.

./easyrsa build-ca

Tulad ng nakikita natin mula sa output ang sertipiko at susi ay nabuo. Gagamitin ang susi na ito para lagdaan ang mga sertipiko ng kliyente at server, kaya hindi ito dapat hawakan/baguhin.

Ngayon, mayroon kaming setup ng PKI. Ang susunod na hakbang ay gumawa ng server key at certificate sa makina na gagamitin namin bilang OpenVPN server. Ang sertipikong ito ay lalagdaan ng makina ng CA.

Pagbuo ng Server Key at Certificate sa Server machine

Na-install na namin ang Easy RSA sa server machine. Ngayon gawin ang tatlong hakbang sa server machine, na dati naming ginawa sa CA machine, viz. paglikha ng isang direktoryo ng CA gamit ang gumawa-cadir at pagpunta sa loob nito, binabago ang mga variable sa vars file at pagbuo ng PKI gamit ang ./easyrsa init-pki utos.

Susunod, kailangan nating patakbuhin ang utos upang makabuo ng kahilingan at susi ng sertipiko ng server.

./easyrsa gen-req server nopass

Tandaan na naipasa namin ang opsyon nopass para hindi kami i-prompt ng command na magpasok ng password para sa server key. Ito ay mag-prompt pa rin para sa isang karaniwang pangalan para sa server, na maaari mong ipasok ang anumang bagay, o iwanan itong walang laman para sa default na pangalan (server) gagamitin.

Ilipat ang nabuong key file sa loob ng /etc/openvpn direktoryo.

sudo mv pki/private/server.key /etc/openvpn

Ipadala ang kahilingan sa sertipiko sa makina ng CA. Gagamitin natin ang command scp para sa layuning ito.

scp pki/reqs/server.req user@CA_MACHINE_HOSTNAME:/directory

Sa screenshot sa itaas, ang host na 45.79.125.41 ay ang CA machine. Kinopya namin ang certificate sa /root directory.

Ngayon, ang sertipiko ng server ay nakopya na sa makina ng CA. Ang susunod na hakbang ay bumalik sa makina ng CA at lagdaan ang sertipikong ito.

Pagpirma sa sertipiko ng server sa CA

Una, i-verify natin kung ang file ng kahilingan sa sertipiko mula sa server ay nakopya sa makina ng CA. Pumunta sa direktoryo kung saan namin kinopya ang file (/root sa aking halimbawa) at tumakbo ls.

:~# cd /root && ls cert_authority server.req

Tulad ng nakikita natin, ang file server.req ay naroroon. Susunod, pumunta sa direktoryo ng CA at i-import ang kahilingang ito.

cd cert_authority ./easyrsa import-req /root/server.req server

Upang lagdaan ang kahilingang ito, patakbuhin ang sumusunod na command.

./easyrsa sign-req server server

Dito ang unang argumento ay ang uri ng kahilingan, ibig sabihin, server, at ang pangalawang argumento ay ang karaniwang pangalan ng server machine, kung saan ginamit namin dati ang default na halaga, ibig sabihin, server.

Ipasok ang parirala oo, at ang password para sa CA key kapag sinenyasan.

Ngayon ay maaari na nating alisin ang file ng kahilingan sa sertipiko at kopyahin ang nabuong sertipiko para sa server, gayundin ang pampublikong sertipiko ng CA pabalik sa makina ng server.

rm /root/server.req scp pki/issued/server.crt [email protected]:/root scp pki/ca.crt [email protected]:/root

Susunod, kailangan naming magsagawa ng ilang higit pang mga hakbang upang matiyak ang secure na koneksyon ng VPN.

Pagbuo ng Mga Parameter ng DH

Ang DH (Diffie-Hellman) key exchange ay isang algorithm upang matiyak ang secure na pagpapalitan ng mga crypto key sa isang hindi secure na channel. Una, ilipat natin ang natanggap na certificate at CA public certificate sa /etc/openvpn.

mv /root/ca.crt /root/server.crt /etc/openvpn

Pumunta sa folder ng CA sa server machine at patakbuhin ang sumusunod na command upang makabuo ng mga parameter ng DH. Maaaring tumagal ng mahabang panahon upang mabuo.

./easyrsa gen-dh

Ngayon, ilipat ang nabuong file sa /etc/openvpn.

mv /root/cert_authority/pki/dh.pem /etc/openvpn

Pagbuo ng mga TA key

Gumagamit ang OpenVPN ng isa pang karagdagang hakbang sa seguridad gamit ang TLS auth key. Upang buuin ang TLS auth key, patakbuhin ang:

openvpn --genkey --secret tls_auth.key

At ilipat ang susi sa /etc/openvpn.

mv tls_auth.key /etc/openvpn

Tapos na ang server key configuration at certificate authority setup. Lumipat tayo sa aktwal na pagsasaayos ng VPN server ngayon.

Configuration ng OpenVPN Server

Ang configuration file para sa OpenVPN server ay hindi awtomatikong nagagawa, gayunpaman maaari kaming gumamit ng template configuration file mula sa openvpn pakete.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz

Buksan ang file gamit ang vim o anumang editor na gusto mo.

cd /etc/openvpn vim server.conf

Kailangan nating ilagay ang mga karaniwang pangalan ng mga susi at sertipiko na nabuo natin dati. Pumunta sa linya no. 78. Dahil ginamit namin ang lahat ng default na pangalan, pinapanatili namin ang mga ito na hindi nagbabago. Pagkatapos ay suriin ang pangalan para sa DH parameter file sa linya 85. Ginamit namin ang pangalang dh.pem, kaya palitan natin ito.

Susunod, baguhin natin ang mga pribilehiyo para sa OpenVPN server. Pumunta sa linya 274 at 275 at alisin ang nangunguna ; para i-uncomment ito.

Katulad nito, pumunta sa linya 192 at alisin ang semicolon. Ang direktiba na ito ay nagbibigay-daan sa trapiko ng lahat ng mga kliyente na dumaan sa VPN.

I-save at lumabas sa file.

Baguhin ang pagmamay-ari ng folder /etc/openvpn sa root.

sudo chown -R root:root /etc/openvpn

Networking at pag-setup ng Firewall

Kailangan naming payagan ang IP forwarding sa server upang payagan ang mga packet na maipasa mula at sa VPN client. Alisin sa komento ang linya 28 sa /etc/sysctl.conf:

I-save at lumabas sa file.

I-restart systemctl para maganap ang mga pagbabagong ito.

sudo sysctl -p

Kailangan nating i-set up ang Network Address Translation (NAT) sa server gamit ang isang UFW firewall upang payagan ang VPN Client na ma-access ang Internet gamit ang IP Address ng VPN server. Una, paganahin natin ang packet forwarding sa configuration ng firewall. Bukas /etc/default/ufw at baguhin ang variable sa linya 19 sa ACCEPT.

I-save at lumabas sa file.

Ngayon idagdag ang mga sumusunod na panuntunan sa file /etc/ufw/before.rules bago ang salain linya sa file.

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

Ilagay ang iyong network interface bilang kapalit ng . Maaari mong makita ang iyong network interface gamit ang command ifconfig.

Payagan ang trapiko para sa serbisyo ng OpenVPN sa Firewall at payagan ang port 1194.

sudo ufw allow openvpn && sudo ufw allow 1194

I-reload ang serbisyo ng firewall.

sudo ufw reload

Maaari na nating i-restart ang Open VPN server daemon sa pamamagitan ng pagpapatakbo:

sudo service openvpn restart

Paganahin itong magsimula sa oras ng boot sa pamamagitan ng pagpapatakbo:

sudo systemctl paganahin ang openvpn

Ang OpenVPN server ay na-configure na at nagsimula na. Magpatuloy tayo ngayon sa kahilingan sa sertipiko ng kliyente at pagbuo ng susi at iba pang configuration.

Configuration ng OpenVPN Client

Kailangan naming bumuo ng isang susi at isang kahilingan sa sertipiko para sa kliyente. Ang pamamaraan para gawin ito ay kapareho ng para sa server.

Bagama't ang isang client key at kahilingan sa sertipiko ay maaaring gawin sa client machine at pagkatapos ay ilipat sa CA machine, inirerekumenda na gawin ito sa server machine. Ang bentahe ng paggawa nito sa server ay maaari kang lumikha ng isang script para sa pagsasagawa ng lahat ng kinakailangang hakbang sa server na ginagawang mas madali para sa isang bagong kliyente na sumali sa VPN.

Pumunta sa folder ng CA sa server at patakbuhin ang sumusunod:

cd ~/cert_authority ./easyrsa gen-req client nopass

Sa katulad na paraan tulad ng ginawa dati, maglagay ng karaniwang pangalan kapag sinenyasan, o hayaan itong walang laman upang gamitin ang default na karaniwang pangalan, ibig sabihin, kliyente.

Kopyahin natin ngayon ang nabuong kahilingan sa certificate ng kliyente sa CA machine.

scp pki/reqs/client.req [email protected]:/root

I-import natin ang kahilingang ito sa CA machine:

./easyrsa import-req /root/client.req client

At pirmahan natin ito ngayon:

./easyrsa sign-req client client

Pumasokoo kapag sinenyasan na magpatuloy. Ilagay ang password para sa CA key kapag tinanong.

Maaari na naming alisin ang hiniling na file para sa kliyente at kopyahin ang kahilingan pabalik sa VPN server machine.

rm /root/client.req scp pki/issued/client.crt [email protected]:/root

Gumawa tayo ng isang folder na tinatawag kliyente upang panatilihin ang lahat ng mga file na nauugnay sa kliyente sa VPN server. Ililipat namin ang client key at ang certificate sa folder na ito.

mkdir ~/client sudo mv ~/client.crt ~/cert_authority/pki/private/client.key ~/client

Ngayon, gumawa tayo ng configuration file mula sa isang available na template, katulad ng kung paano namin ginawa ang configuration file ng server.

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client

Buksan ang file kliyente.conf. Sa linya 42, ilagay ang hostname o IP Address ng iyong server machine bilang kapalit ng my-server-1.

Alisin sa komento ang mga linya 61 at 62 sa pamamagitan ng pag-alis sa nangungunang semicolon, upang i-downgrade ang mga pribilehiyo para sa file.

Susunod, magkomento sa mga linya 88-90 at linya 108. Ang dahilan ay gusto naming idagdag nang manu-mano ang mga nilalaman ng mga nabanggit na file sa halip na gamitin ang mga lokasyon ng file. Ang layunin ng paggawa nito ay ang client configuration file ay ililipat sa ibang pagkakataon sa client, kung saan wala talaga kaming client key at mga certificate file; kaya kinokopya namin ang mga nilalaman ng mga nasa configuration file mismo.

Idagdag ang sumusunod sa file ng pagsasaayos ng kliyente. Ilagay ang mga nilalaman ng file ng kani-kanilang mga file sa loob ng ibinigay na mga tag.

 # Idikit ang nilalaman ng ca.crt file dito # Idikit ang nilalaman ng client.crt file dito # Idikit ang nilalaman ng client.key file dito key-direction 1 # Idikit ang nilalaman ng tls_auth.key file dito 

I-save at lumabas sa file. Palitan ang pangalan ng file na ito mula sa kliyente.conf sa kliyente.ovpn, dahil ang huli ay ang extension na kinakailangan para sa mga configuration file na maaaring i-import bilang mga network configuration.

Ngayon, ilipat ang file kliyente.ovpn sa kliyente, ibig sabihin, lokal na makina.

Takbo scp sa iyong client machine upang maglipat ng file mula sa server machine patungo sa iyong lokal na makina.

scp user@server_ip:/path_to_file local_destination_path

Sa wakas, kailangan nating gamitin ang configuration file na ito para kumonekta sa VPN server. Magagawa ito pareho sa pamamagitan ng command line pati na rin sa GUI.

Upang simulan ang VPN client mula sa command line, patakbuhin ang:

sudo openvpn --config client.ovpn

At iyon ang tanging utos na kailangan mong patakbuhin upang simulan ang VPN Client.

Upang simulan ang VPN client sa pamamagitan ng GUI, gawin ang mga sumusunod na hakbang.

Pumunta sa Mga Setting » Network sa iyong client machine.

Mag-click sa + button sa seksyong VPN at piliin ang ‘Import mula sa file…’ mula sa mga opsyon.

Mag-click sa 'Idagdag' upang simulan ang paggamit ng VPN.

Tandaan na sa ilalim ng 'Gateway', ito ay ang IP Address ng server.

Panghuli, i-toggle ang button na ‘client VPN’ para paganahin ang VPN sa makina.

Maaaring tumagal ng ilang segundo upang makapagtatag ng koneksyon sa VPN. May lalabas na bagong logo ng pag-unlad para sa VPN sa kaliwang sulok sa itaas ng iyong screen habang ito ay sine-set up, at ito ay magiging isang logo ng VPN kapag na-set up na ito.

Upang i-verify kung gumagana nang tama ang VPN, patakbuhin ang sumusunod:

curl //ipinfo.io/ip

Dapat nitong ibalik ang IP address ng iyong server machine. O kung hindi, maaari mo ring suriin ang iyong IP address sa pamamagitan lamang ng paghahanap sa 'My IP' sa Google. Dapat nitong ipakita ang IP address ng iyong VPN server kung gumagana nang maayos ang aming pag-setup ng VPN.

Konklusyon

Sa artikulong ito, nakita namin kung paano i-configure ang isang OpenVPN server, isang Certificate Authority at isang OpenVPN Client. Upang magdagdag ng higit pang mga kliyente sa VPN, kailangan na nating sundin ang pamamaraan upang bumuo at pumirma ng isang sertipiko para sa kliyente at gamitin ang parehong file ng pagsasaayos na ginawa dito, na ang susi ng kliyente at mga halaga ng sertipiko lamang ang nagbago.

Sa kaso ng mas mabagal na koneksyon sa internet, posible na kung ang UDP ay ginagamit para sa komunikasyon, mayroong malaking packet loss. Maaaring lumipat ang user sa TCP sa pamamagitan ng pag-uncomment sa linya proto tcp at nagkomento sa linya proto udp sa file ng pagsasaayos ng server.

Gayundin, kung sakaling may iba pang mga error, maaari mong itakda ang antas ng pag-log gamit ang pandiwa direktiba sa parehong mga file ng pagsasaayos ng server at kliyente. Maaari kang magpasok ng mga halaga sa pagitan ng 0 at 9. Kung mas mataas ang halaga ng direktiba na ito, mas maraming verbose ang magiging log.