Limang libong tawag sa OpenVPN. Pagtatakda ng mga parameter ng protocol ng Diffie-Hellman. Pag-configure ng OpenVPN para sa pag-access ng kliyente sa mga mapagkukunan ng lokal na network

Ang OpenVPN ay isang software package na nagbibigay-daan sa iyong protektahan ang trapiko sa Internet ng user mula sa eavesdropping, na nagbibigay ng naka-encrypt na paglilipat ng data mula sa device ng kliyente patungo sa server na may naka-install na OpenVPN. Mahusay para sa paggamit ng publiko mga puntos ng wifi access kung saan ang impormasyon ay maaaring maharang ng mga third party. O sa kaso kapag ang iyong IP ay naharang sa isang partikular na site at kailangan mong ligtas na i-bypass ang paghihigpit na ito.

Bilang karagdagan sa pag-install at pag-configure ng OpenVPN sa server, dapat mong mai-configure ang kliyente para sa pag-access mula sa isang computer kung saan, bilang operating system Windows ang gagamitin.

Gamit ang isang karaniwang manager ng package, i-install ang openvpn.

# aptitude install openvpn

Kinakailangan ng OpenVPN ang pagbuo ng mga sertipiko para sa server at mga kliyente. Ito ay lohikal, dahil ang koneksyon mula sa kliyente sa server ay dapat na naka-encrypt.

Pumunta sa openvpn folder:

# cd /etc/openvpn

Bubuo kami ng mga susi gamit ang easy-rsa.

Gumawa ng folder na may mga configuration file at mga link sa mga script ng pagbuo ng certificate:

# make-cadir rsa # cd rsa

Buksan ang configuration file vars at baguhin ang mga parameter:

I-export ang KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL=" [email protected]"

KEY_COUNTRY— ipahiwatig ang code ng bansa (RU, UA, atbp.);
KEY_PROVINCE— ang puntong ito ay hindi nauugnay kung hindi ka nakatira sa USA. :) Maaaring palitan ng XX;
KEY_CITY— ang iyong lungsod kung saan ka nakatira;
KEY_EMAIL— ang iyong email address.

At alisin din ang komento sa linya ng pag-export ng KEY_CN, tukuyin ang pangalan ng server bilang halaga:

I-export ang KEY_CN="example.com"

Ang lahat ng mga variable ay puno ng mga Latin na character.

I-save ang file at patakbuhin ito:

# . vars

Pagkatapos ay patakbuhin ang pag-alis ng mga lumang certificate:

# ./clean-all

Gumawa ng root certificate:

# ./build-ca

Kung kapag bumubuo ng root certificate ay natanggap mo ang error na error:0E065068:configuration file routines:STR_COPY:variable has no value:conf_def.c:618:line 198 , idagdag ito sa file vars linya:

I-export ang KEY_ALTNAMES="something"

At pagkatapos ay muling isagawa ang mga nakaraang utos: . vars, ./clean-all, ./build-ca.

Ang susunod na hakbang ay upang lumikha ng isang susi at sertipiko ng server.

# ./build-key-server server

Pagkatapos ay lumikha ng isang sertipiko at susi para sa kliyente:

# ./build-key client

Pakitandaan na dapat kang bumuo ng iyong sariling sertipiko at susi para sa bawat kliyente. Kailangan mo lamang tukuyin ang iba't ibang mga pangalan (sa halip na kliyente) at baguhin ang mga landas patungo sa kanila sa mga file ng pagsasaayos. Kasabay nito, maaari mong protektahan ang mga susi ng kliyente gamit ang isang password upang gawin ito, gamitin ang command build-key-pass sa halip na build-key.

# ./build-dh

At ang susi para sa pagpapatunay ng tls:

# openvpn --genkey --secret /etc/openvpn/ta.key

Ngayon ay kailangan mong kopyahin ang mga sertipiko ng server at mga susi sa folder ng mga setting ng OpenVPN:

# cp keys/ca.crt keys/server.crt keys/server.key keys/dh2048.pem /etc/openvpn/

At magtakda din ng mga karapatan sa kanila na nagpapahintulot sa pagbabasa at pagbabago para lamang sa kanilang may-ari.

# chmod 0600 /etc/openvpn/ca.crt /etc/openvpn/server.crt /etc/openvpn/server.key /etc/openvpn/dh2048.pem /etc/openvpn/ta.key

Siguraduhing kopyahin ito sa iyong computer, halimbawa, sa iyong desktop, mula sa folder mga susi mga susi na kinakailangan upang ikonekta ang kliyente: kliyente.crt, kliyente.susi, ca.crt, ta.susi.

Kinukumpleto nito ang proseso ng paghahanda ng mga sertipiko.

Setup ng server

Ang /usr/share/doc/openvpn/ na direktoryo ay naglalaman ng isang halimbawang file para sa pag-set up ng Openvpn server. Kopyahin ito sa /etc/openvpn/ direktoryo at i-unzip ito:

Cd /etc/openvpn;cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/;gunzip server.conf.gz

Ngayon tingnan natin ang mga parameter na kinakailangan para gumana ang openvpn.

Ang port kung saan tatanggapin ng Openvpn ang mga koneksyon. Ang default ay 1194. Inirerekomenda kong baguhin ito para sa mga layunin ng pagtatago. Maaari mo ring itago ang OpenVPN bilang isang Web server sa pamamagitan ng pagtukoy sa port 80.

Port 20100

Inirerehistro namin ang mga landas patungo sa certificate at server key file.

Ca.crt cert server.crt key server.key

Path sa Diffie-Hellman key.

Dh dh2048.pem

Maaaring tukuyin ang mga path na may kaugnayan sa /etc/openvpn directory (kung ang mga file ay matatagpuan dito) o absolute.

Hanapin at alisin sa komento ang linya:

Itulak ang "redirect-gateway def1 bypass-dhcp"

Ito ay kinakailangan upang ma-access ang Internet sa pamamagitan ng OpenVPN server. Kung hindi mo ito aalisin ng komento, ang mga computer lamang sa loob ng network ang maa-access.

Kailangan mo ring tukuyin ang mga DNS server para sa pagkonekta ng mga kliyente.

Itulak ang "dhcp-option DNS 213.183.57.55" itulak ang "dhcp-option DNS 87.98.175.85"

Depende sa lokasyon ng server, maaari kang pumili ng iba pang mga DNS server, halimbawa, sa proyekto ng OpenNIC.

Tls-auth ta.key 0

Pansin! Sa mga setting ng kliyente, ang huling digit ng parameter na ito ay dapat mapalitan ng 1 - tls-auth ta.key 1.

Sa ibaba ng file ng pagsasaayos ay mayroong isang listahan ng mga magagamit na cipher. Alisin sa komento ang cipher AES-128-CBC.

Cipher AES-128-CBC#AES

Kung kinakailangan, maaari itong palitan ng AES-256-CBC. Ang cipher sa client configuration file ay dapat na kapareho ng server cipher.

Idagdag din ang auth parameter. Bilang default, ang mga sha1 key na may haba na 160 bits ay ginagamit para sa pagpapatunay, ngunit ang sha1 algorithm ay kinikilala bilang vulnerable. Ang pagtukoy sa sumusunod na parameter ay gagamit ng mga 512-bit na SHA512 key.

Awtomatikong SHA512

At gayundin ang parameter na tls-version-min, na tumutukoy sa bersyon ng tls na gagamitin. SA sa kasong ito, pinakabagong bersyon 1.2. Pansin! Hindi sinusuportahan ng Network Manager (sa oras ng pagsulat) ang opsyong ito. Samakatuwid, kung plano mong kumonekta sa VPN server sa pamamagitan ng Network Manager, kung gayon ang parameter na ito ay HINDI tinukoy sa mga setting ng server.

Tls-bersyon-min 1.2

Ang OpenVPN ay hindi dapat patakbuhin bilang ugat. Kaya alisin sa komento ang mga linya:

User nobody group nogroup

Magandang ideya na paganahin ang mga log para sa OpenVPN. Lalo na sa mga unang yugto ng paggamit pagkatapos mag-set up para maghanap ng mga error, atbp.

Mag-log /var/log/openvpn.log

Iwanan ang lahat ng iba pang parameter ng configuration file /etc/openvpn/server.conf na may mga default na value. Kinukumpleto nito ang pag-setup ng OpenVPN server.

I-activate ang openvpn gamit ang command:

# systemctl paganahin ang openvpn

At i-restart:

# service openvpn restart

Magiging magandang ideya din na suriin ang log para sa mga error.

I-redirect ang trapiko sa pamamagitan ng OpenVPN

Upang ma-access ang Internet sa pamamagitan ng OpenVPN server, kailangan mong gumawa ng isang bagay para dito.

1. I-configure ang sysctl

Sa console, patakbuhin ang command:

# sysctl net.ipv4.ip_forward

Kung ang output ng command ay katumbas ng net.ipv4.ip_forward = 1, pagkatapos ay walang kailangang baguhin. Kung ang halaga ng variable ay 0, pagkatapos ay sa file /etc/sysctl.conf kailangan mong idagdag ang linya:

Net.ipv4.ip_forward = 1

At i-reload ang mga patakaran gamit ang utos:

# sysctl -p

2. I-configure ang mga iptable

Patakbuhin ang sumusunod na mga utos sa console nang paisa-isa:

# iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT # iptables -A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT # iptables -t nat -A POSTROUTING - s 10.8.0.0/24 -o eth0 -j MASQUERADE

Kaya, papayagan namin ang trapiko na dumaan sa OpenVPN server para sa 10.8.0.0 subnet sa loob ng balangkas ng mga naitatag nang koneksyon.

Kung ang kliyente ng openvpn ay kailangang magtalaga ng isang partikular na panlabas na IP address sa server, sa halip na ang huling utos mula sa listahan ng mga nauna para sa mga iptable, kailangan mong patakbuhin ito:

A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 127.0.0.1

Saan pagkatapos ng parameter --sa-pinagmulan dapat mong tukuyin ang panlabas na IP ng server.

OpenVPN client para sa Windows

Simulan natin ang pag-set up ng Openvpn client sa Windows. Ang lahat ay simple dito: i-install mula sa opisyal na website, lumikha ng isang configuration file at ilunsad.

Ito ay nagkakahalaga ng pagpuna na dapat mong patakbuhin ang OpenVPN sa Windows na may mga karapatan ng administrator kung ang User Account Control ay aktibo.

Kung hindi mo binago ang landas ng pag-install, kung gayon ang mga halimbawa ng mga file ng pagsasaayos sa iyong PC ay matatagpuan sa direktoryo C:\Program Files\OpenVPN\sample-config. Kopyahin ang file mula dito kliyente.ovpn at ilagay ito sa isang direktoryo C:\Program Files\OpenVPN\config.

Tandaan ang mga certificate na ginawa para sa kliyente? Dapat din silang ma-download mula sa server at makopya sa direktoryong ito.

Buksan ang configuration file ng client.ovpn at hanapin ang parameter remote my-server-1 1194. Sa halip na my-server, tukuyin ang ip o domain name iyong server. Tapos yung port na pinalitan namin kanina. Bilang resulta, ang linya ay maaaring magmukhang ganito:

Ca ca.crt cert client.crt key client.key

Dapat mo ring alisin sa komento ang parameter na tumutukoy sa path sa tls key.

Tls-auth ta.key 1

Sinabi na kanina na ang huling digit sa server ay dapat na 0, sa kliyente - 1.

At ang mga huling parameter ay ang mga cipher na na-install mo sa server.

Cipher AES-128-CBC auth SHA512 tls-version-min 1.2

Ito lang ang kailangan para i-configure ang client. Subukang patakbuhin ang OpenVPN client at kumonekta sa iyong server. Ang kinakailangang impormasyon sa koneksyon ay ipapakita sa openvpn gui window.

OpenVPN sa NetworkManager

Pag-install ng isang graphical na interface para sa Network Manager.

# aptitude install network-manager-openvpn-gnome

At restart namin.

# service network-manager ang mag-restart

Kinokopya namin ang mga certificate na nabuo para sa kliyente sa isang arbitrary na folder sa computer. Halimbawa, sa /home/user/.openvpn/.

Mag-right click sa icon tagapamahala ng network, piliin ang item na "baguhin ang mga koneksyon", magdagdag ng bagong koneksyon ng uri ng "OpenVPN".

Ipinapahiwatig namin:

  • Pangalan ng koneksyon
  • Gateway (domain o server ip)
  • Uri: mga sertipiko

Ang certificate ng user ay ang certificate na nabuo namin sa simula para sa client (client.crt).
CA certificate - ca.crt file.
Ang pribadong key ay ang client key (client.key).

Mag-click sa pindutang "Advanced". Sa window na bubukas, sa tab na "General" kakailanganin mong baguhin ang ilang mga item.

  • Gumamit ng ibang gateway port (kung tumukoy ka ng hindi karaniwan kapag nagse-set up ng server)
  • Gumamit ng lzo compression

Lumipat sa tab na "Seguridad". Piliin ang cipher tulad ng sa mga parameter ng server. Ang halaga ng parameter na "Hmac Authentication" ay dapat itakda sa algorithm, tulad ng sa halaga ng pagpapatunay ng server. Sa artikulong pinili namin ang SHA512.

Buksan ang tab na "TLS Authentication" at lagyan ng check ang mga kahon:

  • I-verify ang peer...
  • Gumamit ng opsyonal na pagpapatotoo ng TLS

Para sa huling parameter, tukuyin ang path sa ta.key file, piliin ang 1 bilang pangunahing direksyon mula sa drop-down na listahan Katulad ng configuration file para sa Windows.

I-save namin ang koneksyon at subukang kumonekta. :)

Kung sakali, tingnan natin kung ano ang isinusulat ng NM kapag kumokonekta sa log ng system:

# tail -f /var/log/syslog

Ang kubo na ito ay isang sipi mula sa maraming artikulo na may kaunting paglalarawan ng mga hakbang at walang tubig. Ipinapalagay na ang awtoridad sa sertipikasyon at ang OpenVPN server ay matatagpuan sa parehong host. Bilang karagdagan, pagod na akong mag-googling tungkol sa paksang ito sa bawat oras, dahil... Ang karamihan sa mga manual ay luma na, na nangangahulugang nangangailangan ng maraming oras upang i-upgrade ang serbisyo.

Pagse-set up ng OpenVPN para sa access ng kliyente sa mga mapagkukunan ng lokal na network

Server

Config ng server

I-install ang OpenVPN at lumikha ng user ng parehong pangalan kung saan tatakbo ang daemon:

Apt install openvpn adduser --system --no-create-home --disabled-login --group openvpn

Lumikha ng openvpn server config na may sumusunod na nilalaman:

Mcedit /etc/openvpn/server.conf port 1194 proto udp dev tun0 #user openvpn #group openvpn dh /etc/openvpn/keys/dh.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys /vpn-server.crt key /etc/openvpn/keys/vpn-server.key tls-auth /etc/openvpn/keys/ta.key 0 #crl-verify /etc/openvpn/keys/crl.pem script-security 2 cipher AES-256-CBC tls-server comp-lzo mute 10 persist-key persist-tun max-clients 50 keepalive 10 900 client-config-dir /etc/openvpn/ccd ifconfig-pool-persist /etc/openvpn/ccd /ipp.txt server 10.15.0.0 255.255.255.0 ### Ang mga opsyong ito ay nangangailangan ng ilang paliwanag. # Itulak (ilipat sa kliyente) ang iyong DNS server itulak ang "dhcp-option DNS 192.168.0.1" # Itulak ang domain name push "dhcp-option DOMAIN mydomain.com" # Itulak ang lokal na ruta ng subnet. Upang magkaroon ng access ang mga kliyente dito, itulak ang "ruta 192.168.0.0 255.255.254.0" ### status /var/log/openvpn/openvpn-status.log 1 status-version 3 log-append /var/log/openvpn / openvpn-server.log verb 5

Lumikha ng mga direktoryo para sa mga log at pag-iimbak ng mga IP address ng kliyente:

Mkdir /var/log/openvpn/ mkdir /etc/openvpn/ccd

Sentro ng pahintulot at mga susi

Pumunta sa direktoryo ng tahanan, i-download at i-unpack ang easyrsa 3 na bersyon:

Cd wget https://github.com/OpenVPN/easy-rsa/archive/master.zip unzip master.zip

Pumunta sa direktoryo ng easyrsa3 at magdeklara ng mga variable para dito:

Cd ~/easy-rsa-master/easyrsa3 cp ~/easy-rsa-master/easyrsa3/vars.example ~/easy-rsa-master/easyrsa3/vars

Simulan ang PKI (Public Key Infrastructure):

./easyrsa init-pki

Gumawa ng root certificate. Kinakailangang pumasok kumplikadong password at Karaniwang Pangalan ng server, halimbawa ang aking vpn server:

./easyrsa build-ca

Lumikha ng Diffie-Hellman key:

./easyrsa gen-dh

Gumawa ng kahilingan sa sertipiko para sa OVPN server. Pakitandaan na ang certificate ay walang password (ang nopass parameter), kung hindi, hihilingin ng OpenVPN ang password na ito sa tuwing magsisimula ka:

./easyrsa gen-req vpn-server nopass

Lumikha ng sertipiko ng server ng OVPN mismo:

./easyrsa sign-req server vpn-server

Kopyahin ang natanggap na mga key sa openvpn working directory:

Mkdir -p /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/ca.crt /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/issued/vpn-server. crt /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/private/vpn-server.key /etc/openvpn/keys cp ~/easy-rsa-master/easyrsa3/pki/dh.pem / atbp/openvpn/keys

Gumawa ng "HMAC firewall" upang maprotektahan laban sa mga pag-atake ng DoS at UDP port flooding:

Cd /etc/openvpn/keys/ openvpn --genkey --secret ta.key

Ilunsad ang openvpn:

/etc/init.d/openvpn simulan

Kliyente

Mga susi

Paglikha ng kahilingan para sa susi na protektado ng password para sa isang kliyente (kinakailangan na maipasok sa tuwing kumonekta ka) gamit ang pangalang User:

Cd ~/easy-rsa-master/easyrsa3 ./easyrsa gen-req User

./easyrsa gen-req User nopass

Paglikha ng user key (bilang default mula sa mga vars sa loob ng 10 taon):

./easyrsa sign-req client User

O may limitasyon sa bisa ng certificate na 90 araw (pagkatapos ng pag-expire, maaari mo lang itong i-isyu muli):

./easyrsa sign-req client User -days 90

Ilipat ang mga file na ito sa kliyente:

~/easy-rsa-master/easyrsa3/pki/issued/User.crt ~/easy-rsa-master/easyrsa3/pki/private/User.key ~/easy-rsa-master/easyrsa3/pki/ca.crt / etc/openvpn/keys/ta.key

Config

client dev tun proto udp remote xxx.xxx.xxx.xxx 1194 cipher AES-256-CBC tls-client ca "ca.crt" tls-auth "ta.key" 1 cert "User.crt" key "User.key" remote-cert-tls server comp-lzo tun-mtu 1500 mssfix 1450 verb 3 nobind resolv-retry infinite

Para sa kaginhawahan, lahat ng limang file ng kliyente ay maaaring

Pagbawi ng mga sertipiko

Pagbuo ng binawi na key file:

Cd ~/easy-rsa-master/easyrsa3 ./easyrsa gen-crl

Ln -s ~/easy-rsa-master/easyrsa3/pki/crl.pem /etc/openvpn/keys

Idagdag ang linya sa /etc/openvpn/server.conf

Crl-verify /etc/openvpn/keys/crl.pem

Pagbawi ng sertipiko ng User:

./easyrsa bawiin ang User

Sa bawat oras na bawiin mo ang isang sertipiko, dapat mong i-update ang crl.pem upang gumawa ng mga pagbabago dito:

./easyrsa gen-crl

Tandaan: hindi makakagawa ng key file na may parehong pangalan hanggang sa mabawi ang luma. Kung susubukan mong gumawa ng certificate na may kasalukuyang pangalan, makakatanggap ka ng error:

Nabigong i-update ang database ng Easy-RSA na error: nabigo ang pag-sign (maaaring may higit pang detalye ang openssl na output sa itaas)

Minimal Iptables configuration para sa OpenVPN client access sa lokal na network

# Paganahin ang forward sa kernel echo "1" > /proc/sys/net/ipv4/ip_forward # Payagan ang mga papasok na koneksyon sa OVPN port iptables -A INPUT -p UDP --dport 1194 -j ACCEPT # Payagan ang forward sa pagitan ng subnet ng OVPN at ang lokal na # Bukod dito, ilagay ang mga ito sa simula ng chain, kung maraming mga panuntunan iptables -A FORWARD -s 10.15.0.0/24 -d 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.15.0.0 /24 -s 192.168.0.0/ 24 -j TANGGAPIN

Pagse-set up ng OpenVPN para ma-access ang Internet

Nakatagpo ako ng isang thread, natawa at nagpasyang idagdag sa tala. Kung kailangan ng OpenVPN para ma-access ang Internet, kailangan mong gawing default na gateway ang OpenVPN at ayusin ang mga panuntunan ng iptables.
Sa totoo lang, ang config para sa server:

Port 1194 proto udp dev tun0 dh /etc/openvpn/keys/dh.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/vpn-server.crt key /etc/openvpn/keys/vpn -server.key tls-auth /etc/openvpn/keys/ta.key 0 crl-verify /etc/openvpn/keys/crl.pem script-security 2 cipher AES-256-CBC tls-server comp-lzo mute 10 nanatili -key persist-tun max-clients 50 keepalive 10 900 client-config-dir /etc/openvpn/ccd ifconfig-pool-persist /etc/openvpn/ccd/ipp.txt server 10.15.0.0 255.255.255.0 push "redirect-gateway def1" status /var/log/openvpn/openvpn-status.log 1 status-version 3 log-append /var/log/openvpn/openvpn-server.log verb 5

Ang config para sa kliyente ay hindi mag-iiba mula sa itaas.

Minimum na configuration ng Iptables para sa mga kliyente ng OpenVPN upang ma-access ang Internet

Mga panuntunan sa iptables:

# Paganahin ang forward sa kernel echo "1" > /proc/sys/net/ipv4/ip_forward # Payagan ang mga papasok na koneksyon sa OVPN port iptables -A INPUT -p UDP --dport 1194 -j ACCEPT # Payagan ang mga transit packet para sa OpenVPN iptables subnet -A FORWARD -s 10.15.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.15.0.0/24 -j ACCEPT # x.x.x.x - external IP ng server, kung ito ay static na iptables -t nat -A POSTROUTING - s 10.15.0.0/ 24 -j SNAT --to-source x.x.x.x # Kung dynamic ang external IP ng server, gamitin ito sa halip na ang nakaraang panuntunan # iptables -t nat -A POSTROUTING -s 10.15.0.0/24 - j MASQUERADE

Ilang tala

Upang ibukod ang posibilidad ng isang mitm attack, ang error na ganito ang hitsura sa mga log ng kliyente:

BABALA: Walang na-enable na paraan ng pag-verify ng certificate ng server. Tingnan ang http://openvpn.net/howto.html#mitm para sa higit pang impormasyon.

Ginagamit ang parameter na remote-cert-tls server, na nasa client config na.

Listahan ng wasto at binawi na mga sertipiko

Ang listahan ng mga valid at binawi na certificate ay maaaring tingnan sa file na ~/easy-rsa-master/easyrsa3/pki/index.txt. Ang simula ng linya ng paglalarawan para sa bawat certificate ay nagsisimula sa mga letrang V o R, na nangangahulugang Wasto at Binawi, halimbawa:

V 241019110411Z 01 hindi alam /CN=vpn-server R 241019110842Z 141202085241Z 02 hindi alam /CN=User1 R 241020105823Z 141019110842Z 141202085241Z 02 hindi alam /CN=User1 R 241020105823Z 141201103442Z 30111 Z 14120103442Z 202085814Z 04 hindi kilala /CN=User2 V 141203091049Z 05 hindi kilala /CN=User3

Tulad ng nakikita mo, ang una at ikalimang sertipiko ay may bisa, 2-4 ay binawi.

Kung ang kliyente ay nasa Windows

I-install ang OpenVPN GUI sa pamamagitan ng pag-download mula dito. Kopyahin ang mga susi ng kliyente sa C:\Program Files\OpenVPN\config\ . Kopyahin ang client config at ilagay ito sa client.ovpn file at ilagay ito doon. Dapat mayroong kabuuang limang file sa direktoryong ito - User.crt, User.key, ca.crt, ta.key, client.ovpn.
Tiyaking patakbuhin ang OpenVPN GUI bilang administrator, kung hindi, ang mga ruta ay hindi itataas sa system, at kumonekta i-double click sa pamamagitan ng icon sa tray (ang lugar na malapit sa orasan, kadalasan sa kanang sulok sa ibaba).

Hunyo 19, 2018 11:32 am 2,171 view | Walang komento

1: I-install ang OpenVPN

I-update ang index ng package:

Available ang OpenVPN package sa mga default na repository, kaya maaari mong gamitin ang apt para sa pag-install. Kakailanganin mo rin ang easy-rsa package, na makakatulong sa iyong lumikha ng internal certificate authority (CA) para sa VPN.

apt-get install openvpn easy-rsa

2: Pag-set up ng OpenVPN

Ang sample na file ng pagsasaayos ng VPN ay dapat na i-extract mula sa /etc/openvpn at idagdag sa iyong pag-install. Upang gawin ito, gamitin ang utos:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Pagkatapos ay buksan ang server.conf sa isang text editor:

nano /etc/openvpn/server.conf

Mayroong ilang mga pagbabago na kailangan mong gawin sa file.

  • Mas protektahan ang server mataas na antas pag-encrypt
  • I-redirect ang trapiko sa web sa destinasyon
  • Pigilan ang pag-leak ng mga query sa DNS sa labas ng koneksyon sa VPN
  • Itakda ang mga karapatan sa pag-access.

Una, i-double ang haba ng RSA key. Upang gawin ito, hanapin ang linya:

# Diffie hellman parameter.
# Bumuo ng iyong sarili gamit ang:
# openssl dhparam -out dh1024.pem 1024
# Substitute 2048 for 1024 kung gumagamit ka
#2048 bit key.
dh dh1024.pem

At baguhin ang halaga nito sa dh2048.pem:

dh dh2048.pem

Hanapin ang seksyon ng redirect-gateway at alisin ang semicolon sa simula ng linya ng redirect-gateway upang alisin ang komento dito. Papayagan nito ang kliyente na i-redirect ang trapiko nito sa pamamagitan ng OpenVPN server.

# Kung pinagana, ang direktiba na ito ay magko-configure
# lahat ng kliyente upang i-redirect ang kanilang default
# network gateway sa pamamagitan ng VPN, na nagiging sanhi
# lahat ng trapiko ng IP tulad ng pag-browse sa web at
# at DNS lookup upang dumaan sa VPN
# (Maaaring kailanganin ng OpenVPN server machine na NAT
# o i-bridge ang TUN/TAP interface sa internet
# upang ito ay gumana ng maayos).
; itulak ang "redirect-gateway def1 bypass-dhcp"

Bilang resulta, ang linya ay dapat magmukhang ganito:

itulak ang "redirect-gateway def1 bypass-dhcp"

Dapat mo ring payagan ang server na gumamit ng OpenDNS para sa paglutas ng DNS kung maaari. Makakatulong ito na maiwasan ang pagtulo ng mga query sa DNS sa labas ng koneksyon sa VPN.

# Ilang partikular na setting ng network na tukoy sa Windows
# ay maaaring itulak sa mga kliyente, gaya ng DNS
# o WINS server address. CAVEAT:
# http://openvpn.net/faq.html#dhcpcaveats
# Ang mga address sa ibaba ay tumutukoy sa publiko
# DNS server na ibinigay ng openns.com.
; itulak ang "dhcp-option DNS 208.67.222.222"
; itulak ang "dhcp-option DNS 208.67.220.220"

I-uncomment ang mga linya na itulak ang "dhcp-option DNS 208.67.222.222" at itulak ang "dhcp-option DNS 208.67.220.220".

itulak ang "dhcp-option DNS 208.67.222.222"
itulak ang "dhcp-option DNS 208.67.220.220"

Ngayon tukuyin ang mga pahintulot sa server.conf:

# kaya mo i-uncomment ito sa
# na hindi Windows system.
;walang tao
;grupo nogroup

Alisin sa komento ang parehong linya:

user walang tao
pangkat nogroup

Bilang default, tumatakbo ang OpenVPN bilang root user at sa gayon ay may ganap na root access sa system. Ang OpenVPN ay kailangang paghigpitan sa mga pahintulot, at para dito kailangan mong gumamit ng walang sinuman at walang grupo. Isa itong unprivileged user na walang kakayahan sa pag-log in bilang default, kadalasang nakalaan para sa pagpapatakbo ng mga hindi pinagkakatiwalaang application.

I-save at isara ang file.

3: Packet Routing

Ito ay isang parameter ng sysctl na nagsasabi sa kernel ng server na ipasa ang trapiko mula sa mga device ng kliyente patungo sa Internet. Kung hindi, hihinto ang trapiko sa server. Maaari mong paganahin ang packet forwarding gamit ang command na ito:

echo 1 > /proc/sys/net/ipv4/ip_forward

Gawing permanente ang halagang ito upang maibalik ito pagkatapos ng pag-reboot:

nano /etc/sysctl.conf

Hanapin ang linyang net.ipv4.ip_forward.


#net.ipv4.ip_forward=1

Alisin sa komento ito:

# Alisin ang komento sa susunod na linya upang paganahin ang packet forwarding para sa IPv4
net.ipv4.ip_forward=1

I-save at isara ang file.

4: Pag-configure ng ufw firewall

Ang ufw ay isang interface ng iptables. Ang pag-set up ng ufw ay medyo simple. Kailangan mong magdagdag ng ilang panuntunan at gumawa ng ilang pagbabago sa configuration at pagkatapos ay paganahin ito.

I-install ang ufw:

apt-get install ufw

Paganahin ang suporta sa SSH:

Sa manual, gumagana ang OpenVPN sa UDP, buksan ang trapikong ito sa port 1194.

ufw payagan ang 1194/udp

Dapat mo ring i-configure ang patakaran sa pagruruta ng UFW. Gagawin namin ito sa pangunahing file ng pagsasaayos ng UFW.

nano /etc/default/ufw

Hanapin ang DEFAULT_FORWARD_POLICY="DROP". Palitan ang halaga sa mga panipi ng ACCEPT.

DEFAULT_FORWARD_POLICY="ACCEPT"

I-save at isara ang file.

Pagkatapos ay magdagdag ng mga karagdagang panuntunan sa ufw para sa pagsasalin ng address ng network at pagbabalatkayo ng IP ng mga konektadong kliyente.

nano /etc/ufw/before.rules

Ang simula ng before.rules file ay kailangang i-edit tulad ng ipinapakita sa ibaba. Kailangan mong idagdag ang seksyong naka-highlight sa pula:

#rules.noon
#
# Mga panuntunan na dapat patakbuhin bago ang ufw command line ay nagdagdag ng mga panuntunan. Custom
Dapat na idagdag ang # na panuntunan sa isa sa mga chain na ito:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# MAGSIMULA NG OPENVPN RULES

# Mga panuntunan sa talahanayan ng NAT

*nat

: POSTROUTING ACCEPT


# Payagan ang trapiko mula sa OpenVPN client hanggang eth0


-Isang POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE


COMMIT

# WAKAS ANG OPENVPN RULES
# Huwag tanggalin ang mga kinakailangang linyang ito, kung hindi, magkakaroon ng mga error
*filter

I-save at isara ang file.

Ngayon ay maaari mong paganahin ang firewall:

paganahin ang ufw
Ang utos ay maaaring makagambala sa mga kasalukuyang ssh na koneksyon. Magpatuloy sa pagpapatakbo (y|n)?

Piliin ang y:

Ang firewall ay aktibo at pinagana sa system startup

Ngayon suriin ang mga panuntunan at katayuan ng firewall:

katayuan ng ufw
Katayuan: aktibo
Mula sa Pagkilos
-- ------ ----
22 PAHINTULOT Kahit saan
1194/udp PAHINTULOT Kahit saan
22 (v6) PAYAW Kahit Saan (v6)
1194/udp (v6) PAYAW Kahit Saan (v6)

5: Paglikha ng Awtoridad ng Sertipiko

Gumagamit ang OpenVPN ng mga sertipiko upang i-encrypt ang trapiko.

Sa seksyong ito, gagawa kami ng CA sa dalawang yugto: ang una ay ang pagtatakda ng mga variable, ang pangalawa ay pagbuo ng CA.

Sinusuportahan ng OpenVPN ang bidirectional na pagpapatunay na nakabatay sa sertipiko, na nangangahulugan na ang kliyente ay dapat na patunayan ang sertipiko ng server at ang server ay dapat na patotohanan ang sertipiko ng kliyente upang maitaguyod ang tiwala sa isa't isa.

Kopyahin ang mga script ng Easy-RSA:

cp -r /usr/share/easy-rsa/ /etc/openvpn

Lumikha ng isang direktoryo para sa mga susi:

mkdir /etc/openvpn/easy-rsa/keys

Nagbibigay ang Easy-RSA ng variable na file na maaaring i-edit upang lumikha ng mga certificate na may mga paunang natukoy na default na mga halaga. Ang impormasyong ito ay kinokopya sa mga sertipiko at mga susi at makakatulong sa pagtukoy ng mga susi sa ibang pagkakataon.

nano /etc/openvpn/easy-rsa/vars

Ang mga halaga na naka-highlight sa pula ay dapat mapalitan ng iyong sariling data:

i-export ang KEY_COUNTRY="US "
i-export ang KEY_PROVINCE="TX "
i-export ang KEY_CITY="Dallas"
export KEY_ORG="Aking Pangalan ng Kumpanya "
i-export ang KEY_EMAIL=" [email protected] "
i-export ang KEY_OU="MYOrganizationalUnit "

Sa parehong vars file, i-edit ang linya sa ibaba. Para sa pagiging simple, inirerekomenda namin ang paggamit ng server bilang pangalan. Kung gusto mong gumamit ng ibang pangalan, kakailanganin mong i-update ang mga file ng pagsasaayos ng OpenVPN na tumutukoy sa server.key at server.crt. Hanapin:

#X509 Patlang ng Paksa
i-export ang KEY_NAME="EasyRSA "

At baguhin ang halaga nito:

#X509 Patlang ng Paksa
i-export ang KEY_NAME="server"

I-save at isara ang file.

Ngayon kailangan naming bumuo ng isang Diffie-Hellman key; maaaring tumagal ito ng ilang minuto. Ang -out na flag ay tumutukoy kung saan magse-save ng mga bagong parameter.

openssl dhparam -out /etc/openvpn/dh2048.pem 2048

Pumunta sa direktoryo:

cd /etc/openvpn/easy-rsa

Simulan ang PKI (Public Key Infrastructure). Tandaan ang tuldok (.) at espasyo bago ang ./varscommand. Tinutukoy nito ang kasalukuyang gumaganang direktoryo.

Ibabalik ng command ang sumusunod na resulta. Dahil wala pa sa direktoryo ng mga susi, ito ay normal na output.

TANDAAN: Kung tatakbo ka ./clean-all, gagawa ako ng rm -rf sa /etc/openvpn/easy-rsa/keys

Ngayon ay kailangan mong i-clear ang iyong gumaganang direktoryo ng anumang posibleng lumang key o sample na mga file upang magkaroon ng puwang para sa mga bagong key.

Ang huling utos na ito ay lumilikha ng isang awtoridad sa sertipiko (CA) sa pamamagitan ng pagtawag sa OpenSSL interactive na utos. Hihilingin sa iyo ng output na kumpirmahin ang mga variable na dati mong tinukoy sa Easy-RSA file (pangalan ng bansa, organisasyon, atbp.).

Upang tanggapin ang mga default na halaga, pindutin lamang ang Enter.

Handa na ang CA.

6: Pagbuo ng mga susi at sertipiko ng server

Ang pananatili sa /etc/openvpn/easy-rsa na direktoryo, ngayon ay ilagay ang command para gawin ang server key. Ang value ng server ay ang export KEY_NAME variable na itinakda mo sa Vars Easy-RSA file.

./build-key-server server

Ang utos ay bubuo ng halos parehong output tulad ng pagpapatakbo ng ./build-ca, at maaari mong pindutin muli ang Enter upang tanggapin ang mga default. Gayunpaman, sa pagkakataong ito ay may dalawa pang linya:



Isang hamon na password:
Isang opsyonal na pangalan ng kumpanya:

Iwanang blangko ang parehong linya sa pamamagitan lamang ng pagpindot sa Enter.

Sa dulo ay magkakaroon ng dalawa pang linya kung saan kailangan mong sagutin ang y:

Pirmahan ang sertipiko?

Ang huling linya ay maglalabas ng:


Na-update ang Data Base

7: Paglipat ng Server Keys at Certificates

Hahanapin ng OpenVPN ang CA, certificate at server key sa /etc/openvpn. Kopyahin ang mga ito sa tamang lokasyon.

cp /etc/openvpn/easy-rsa/keys/(server.crt,server.key,ca.crt) /etc/openvpn

Maaari mong i-verify na matagumpay ang operasyon:

Dapat mong makita ang sertipiko ng server at mga pangunahing file.

Ang OpenVPN server ay handa na ngayong magsimula. Patakbuhin ito at suriin ang katayuan:

pagsisimula ng serbisyo ng openvpn
katayuan ng openvpn ng serbisyo

Ang huling utos ay tutugon:

* openvpn.service - Serbisyo ng OpenVPN
Na-load: na-load (/lib/systemd/system/openvpn.service; pinagana)
Aktibo: aktibo (umalis) mula Huwebes 2015-06-25 02:20:18 EDT; 9s nakaraan
Proseso: 2505 ExecStart=/bin/true (code=exited, status=0/ SUCCESS)
Pangunahing PID: 2505 (code=exit, status=0/TAGUMPAY)

Gumagana ang OpenVPN server!

Kung iniulat ng command na hindi gumagana ang VPN, suriin ang /var/log/syslog:

Error sa mga opsyon: --key ay nabigo sa "server.key": Walang ganoong file o direktoryo

Sinasabi ng error na ito na hindi nakopya nang tama ang server.key sa /etc/openvpn. Kopyahin itong muli at subukang simulan ang server.

8: Pagbuo ng mga certificate at key ng kliyente

Dati, na-install at na-configure mo ang OpenVPN server, lumikha ng isang awtoridad sa sertipiko at isang sertipiko at susi ng server. Sa puntong ito, kailangan mong gamitin ang CA ng server upang lumikha ng mga certificate at key para sa bawat device ng kliyente na kumokonekta sa VPN.

Paglikha ng mga susi at sertipiko

Tandaan: Bilang default, hindi sinusuportahan ng OpenVPN ang sabay-sabay na koneksyon ng kliyente sa server na ginawa gamit ang parehong certificate at key (tingnan ang duplicate-cn sa /etc/openvpn/server.conf).

Upang lumikha ng mga indibidwal na kredensyal para sa bawat device na pinaplano mong kumonekta sa VPN, dapat mong ulitin ang seksyong ito para sa bawat isa (ngunit dapat mong baguhin ang pangalan ng kliyente, gaya ng client2 o iphone2). Kung mayroon kang mga indibidwal na kredensyal, maaaring isa-isang i-deactivate ang mga device. Sa tutorial na ito, ang pangalan ng kliyente na ginamit sa mga halimbawa ay client1.

Kolektahin ang susi para sa client client1 sa /etc/openvpn/easy-rsa directory.

./build-key client1

Muli kang sasabihan na baguhin o kumpirmahin ang mga variable at ang dalawang linyang ito, na dapat ay walang laman. Pindutin ang Enter upang tanggapin ang mga default na halaga.

Pakipasok ang mga sumusunod na "dagdag" na katangian
na ipapadala kasama ng iyong kahilingan sa sertipiko
Isang hamon na password:
Isang opsyonal na pangalan ng kumpanya:

Tulad ng dati, ang susunod na dalawang linya sa dulo ng proseso ng pagbuo ay nangangailangan ng y tugon:

Pirmahan ang sertipiko?
1 sa 1 mga kahilingan sa sertipiko ay na-certify, gumawa?

Kung ang key assembly ay matagumpay, ang resulta ay magiging ganito muli:

Sumulat ng database na may 1 bagong entry
Na-update ang Data Base

Ang isang halimbawang file ng configuration ng client ay dapat makopya sa Easy-RSA na direktoryo ng key at gamitin bilang isang template na mada-download sa mga device ng kliyente para sa pag-edit. Sa proseso ng pagkopya, kailangan mong baguhin ang pangalan ng file mula sa client.conf patungong client.ovpn dahil dapat gamitin ng mga kliyente ang .ovpn extension.

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

Ulitin ang seksyong ito para sa lahat ng iyong mga kliyente, na pinapalitan ang pangalan ng kliyente.

Tandaan: Ang duplicate na pangalan na client.ovpn ay hindi kailangang iugnay sa client device. Gagamitin ng OpenVPN client application ang filename bilang isang identifier para sa koneksyon ng VPN mismo. Kopyahin ang client.ovpn na may pangalang gagamit ng VPN sa iyong operating system. Halimbawa: work.ovpn ay tutukuyin bilang network ng trabaho, paaralan.ovpn – tulad ng paaralan, atbp.

Kailangan mo ring baguhin ang bawat file ng kliyente at tukuyin ang IP address ng OpenVPN server upang malaman ng kliyente kung ano ang ikokonekta. Buksan ang client.ovpn gamit ang nano o isa pang text editor.

nano /etc/openvpn/easy-rsa/keys/client.ovpn

Palitan ang my-server-1 ng VPN IP address sa remote na linya.

# Ang hostname/IP at port ng server.
# Maaari kang magkaroon ng maramihang malayuang entry
# upang mag-load ng balanse sa pagitan ng mga server.
remote my-server-1 1194

Pagkatapos ay hanapin ang seksyong ito at i-uncomment ang user nobody at group nogroup gaya ng ginawa mo sa server.conf. Hindi ito nalalapat sa Windows OS.

# I-downgrade ang mga pribilehiyo pagkatapos ng pagsisimula (hindi Windows lang)
user walang tao
grupo walang grupo

Paglilipat ng mga susi at certificate sa mga device ng kliyente

Alalahanin na ang mga certificate at key ng kliyente ay naka-store sa OpenVPN server sa /etc/openvpn/easy-rsa/keys directory.

Ngayon ay kailangan mong ilipat ang client certificate, key at profile file sa isang folder sa client device na ito.

Halimbawa, sa kasong ito ang mga file ay dapat na matatagpuan sa etc/openvpn/easy-rsa/keys/client1.crt at /etc/openvpn/easy-rsa/keys/client1.key

Ang mga ca.crt at client.ovpn file ay pareho para sa lahat ng kliyente. I-download ang dalawang file na ito; Tandaan na ang ca.crt file ay nasa ibang direktoryo.

  • /etc/openvpn/easy-rsa/keys/client.ovpn
  • /etc/openvpn/ca.crt

Ang transfer application na pipiliin mo ay nasa iyo at sa operating system ng iyong device, ngunit inirerekomendang pumili ng mga application na sumusuporta sa SFTP (SSH File Transfer Protocol) o SCP (Secure Copy). Ililipat nito ang mga file ng kliyente sa isang naka-encrypt na koneksyon.

Nasa ibaba ang isang halimbawa ng isang SCP command. Inilalagay nito ang file client1.key sa direktoryo ng Mga Download sa lokal na computer.

scp root@your-server-ip:/etc/openvpn/easy-rsa/keys/client1.key Downloads/

Maaari mo ring gamitin ang mga sumusunod na application at manual:

Pagkatapos ay tiyaking nasa client device ang mga file na ito:

  • kliyente1.crt
  • kliyente1.susi
  • kliyente.ovpn
  • ca.crt

9: Lumikha ng isang profile ng OpenVPN para sa mga kliyente

Mayroong ilang mga paraan upang pamahalaan ang mga file ng kliyente, ngunit ang pinakasimpleng ay ang paggamit solong profile. Ang profile ay nilikha sa pamamagitan ng pagbabago sa client.ovpn template file at pagdaragdag ng CA ng server, certificate ng client, at client key. Pagkatapos nito, ang client.ovpn profile lang ang kailangang ma-import sa OpenVPN application ng kliyente.

Sa seksyon sa ibaba, kailangan mong magkomento ng tatlong linya upang maisama ang certificate at key nang direkta sa client.ovpn file. Dapat itong magmukhang ganito:

# SSL/TLS parms.
# . . .
;ca ca.crt
;cert client.crt
;key client.key

I-save at isara ang client.ovpn file.

Maaari kang magdagdag ng mga sertipiko gamit ang code. Idagdag muna ang CA:

echo" " >> /etc/openvpn/easy-rsa/keys/client.ovpn
pusa /etc/openvpn/ca.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo"
" >> /etc/openvpn/easy-rsa/keys/client.ovpn

Pagkatapos ay idagdag ang sertipiko:

echo" " >> /etc/openvpn/easy-rsa/keys/client.ovpn
pusa /etc/openvpn/easy-rsa/keys/client1.crt >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo"
" >> /etc/openvpn/easy-rsa/keys/client.ovpn

Sa dulo idagdag ang susi:

echo" " >> /etc/openvpn/easy-rsa/keys/client.ovpn
pusa /etc/openvpn/easy-rsa/keys/client1.key >> /etc/openvpn/easy-rsa/keys/client.ovpn
echo"
" >> /etc/openvpn/easy-rsa/keys/client.ovpn

Mayroon ka na ngayong isang profile na maaaring kopyahin sa device ng kliyente.

10: Pag-set up ng profile ng kliyente

Marami pa sa iba't ibang platform maginhawang mga aplikasyon upang kumonekta sa OpenVPN server. Makakakita ka ng mga tagubilin para sa pag-install ng mga kliyente sa iba't ibang platform sa seksyon 5 ng manwal.

Konklusyon

Mayroon ka na ngayong ganap na gumaganang virtual private network sa iyong OpenVPN server. Maaari kang mag-surf sa web at mag-download ng nilalaman nang hindi nababahala tungkol sa pagsubaybay ng mga hacker sa iyong mga aktibidad.

Kapag nakapagtatag ka ng isang matagumpay na koneksyon sa kliyente, maaari mong i-verify na ang trapiko ay nai-ruta sa pamamagitan ng VPN.

Paano ito gumagana?

Kapag kumpleto na ang pag-setup ng OpenVPN, matatanggap at mai-redirect ng server ang panlabas na SSL secure mga koneksyon sa network sa virtual network adapter (tun/tap) na nilikha noong inilunsad ang serbisyo ng VPN, nang hindi naaapektuhan ang mga patakaran para sa pagproseso ng trapiko ng iba pang mga interface (panlabas na Internet adapter, atbp.) Salamat sa teknolohiyang ito, maaari mong bigyan ang iyong sarili ng access sa isang remote server at isang pangkat na matatagpuan sa mga lokal na device ng network nito kahit na ang pangunahing Internet adapter ng server na ito ay hindi tumatanggap ng mga papasok na koneksyon mula sa mga pampublikong network at/o hindi sila dinadala sa mga kinakailangang makina na matatagpuan sa LAN network nito.

Kung kinakailangan, maaari mo ring i-configure ang pagruruta ng trapiko sa Internet ng mga kliyente ng OpenVPN sa pamamagitan ng VPN server (ang mga hakbang na kinakailangan para dito ay inilarawan sa manwal na ito). Sa ganitong pag-redirect, gagawin din ng host na nagpoproseso ng mga koneksyon sa VPN ang function ng isang proxy server (Proxy) - pag-isahin ang mga patakaran para sa aktibidad ng user network at tunnel client Internet traffic sa ngalan nito.

Mga kinakailangan sa system

Bago mo simulan ang pag-install ng OpenVPN, siguraduhin na ang mga kinakailangang setting ay na-configure nang tama sa iyong server. pangunahing mga parameter, ibinigay sa ibaba. (kung gumagamit ka virtual server, ang tatlong hakbang na ito ay nakumpleto na at maaaring laktawan):

  1. Ang server ay may hindi bababa sa isang static na panlabas na IP address (sa kahalili, maaari mong gamitin ang mga serbisyo ng DynamicDNS na awtomatikong nag-a-update ng impormasyon tungkol sa kasalukuyang IP address ng device, halimbawa, DynDNS)
  2. Pinapayagan na mag-download ng mga software package mula sa mga opisyal na repositoryo. Upang suriin ito, buksan ang file sa server /etc/apt/sources.list at siguraduhin mo yan mga address ng network mabait "deb http://..." naroroon at hindi nagkomento (wala # sa simula ng linya na may url ng repositoryo). Ito ay, halimbawa, kung ano ang hitsura ng American mirror ng Ubuntu Precise repository na idinagdag sa sources.list: # Tingnan ang http://help.ubuntu.com/community/UpgradeNotes para sa kung paano mag-upgrade sa
    # mas bagong bersyon ng pamamahagi.
    deb http://us.archive.ubuntu.com/ubuntu/ precise main restricted
    deb-src http://us.archive.ubuntu.com/ubuntu/ precise main restricted
  3. Ang mga parameter ng network ay tama: hostname, (mga) IP address ng iyong server at ang mga parameter ng DNS nito(ang huling parameter ay kakailanganin para sa pagruruta ng trapiko sa Internet ng kliyente). Hanapin ang nakalista mga setting ng network posible sa file /etc/hosts.

Upang matiyak ang isang katanggap-tanggap na antas ng seguridad ng makina, inirerekomenda din namin na basahin mo muna ang aming panimulang artikulo sa pag-configure ng mga tool sa seguridad ng Linux.

Pag-install ng OpenVPN sa server

Upang i-install ang package openvpn sa server, dapat mong patakbuhin ang mga sumusunod na command nang sunud-sunod:

  1. I-update ang mga repository ng package:
    apt-get update
  2. Mag-download ng mga available na update para sa mga naka-install na program:
    apt-get upgrade
  3. I-install ang package openvpn:
    apt-get install openvpn
  4. Kasama sa OpenVPN ang isang suite ng mga tool sa pag-encrypt madaling-rsa. Para sa normal na operasyon ng daemon, ang mga madaling-rsa na script ay dapat ilagay sa direktoryo /etc/openvpn:
    cd /etc/openvpn/ && make-cadir easy-rsa

Paghahanda ng mga pampublikong susi (PKI - Pampublikong Key Infrastructure)

Naka-on sa yugtong ito kailangan mong bumuo at pumirma ng mga pares ng user at mga susi ng server. Para i-verify ang mga ginawang pares na gagamitin namin awtoridad sa sertipikasyon (CA - Awtoridad ng Sertipiko), na matatagpuan sa VPN server mismo. Kaya, gumawa tayo ng CA:

  1. Pumunta sa folder /etc/openvpn/easy-rsa: cd /etc/openvpn/easy-rsa
  2. Lumikha simbolikong link openssl-1.0.0.cnf -> openssl.cnf: ln -s openssl-1.0.0.cnf openssl.cnf
  3. Magsimula ng script vars: pinagmulan ./vars
  4. Makakatanggap ka ng sumusunod na notification bilang tugon: TANDAAN: Kung tatakbo ka ./clean-all, gagawa ako ng rm -rf sa /etc/openvpn/easy-rsa/keys
  5. Patakbuhin ang script malinis-lahat: ./linis-lahat
  6. Isagawa ang script build-ca upang lumikha ng awtoridad sa sertipikasyon. Bilang tugon sa mga senyas na lalabas, ilagay ang kinakailangang impormasyon (sa Latin na mga character). Kung hindi mo tinukoy eigenvalues para sa ilan sa mga kinakailangang field, ang default na halaga [ipinapakita sa mga square bracket] ay gagamitin: ./build-ca
  7. Ngayon ay maaari kang magpatuloy sa pagbuo ng isang pampublikong sertipiko/pribadong key na pares para sa VPN server.

Pagbuo ng server key/certificate

  1. Bumuo ng key: ./build-key-server server Punan ang impormasyong katulad ng build-ca. Ang mga field na "Pangalan ng Kumpanya" at "Hamon na Password" ay maaaring iwanang blangko.
  2. Pagkatapos ng matagumpay na pagbuo ng susi, may lalabas na kahilingan para malagdaan ito ng awtoridad sa sertipikasyon. Pumasok oo para sa kumpirmasyon.

Pagbuo ng mga susi ng kliyente

  1. Gumawa ng key pair para sa user: ./build-key client1 Tandaan: nabuong key file kliyente1.susi hindi naka-encrypt bilang default. Nagbibigay-daan ito sa sinumang may access sa file na ito na kumonekta sa iyong virtual private network. Upang maalis ang tampok na ito maaari mong gamitin ang command ./build-key-pass client1 sa halip na ./build-key client1. Sa kasong ito, ie-encrypt ang susi gamit ang password na pipiliin mo.
  2. Ulitin ang pamamaraan ng henerasyon para sa bawat isa sa hinaharap Mga kliyente ng VPN, pinapalitan kliyente1 sa nais na pangalan. Pansin: Ang mga pangunahing pangalan ay dapat na natatangi.
    Maaari kang bumuo ng mga susi ng kliyente sa ibang pagkakataon. Upang gawin ito, kakailanganin mong muling simulan ang script vars(pangkat pinagmulan ./vars), at pagkatapos ay simulan ang pamamaraan para sa pagbuo ng kinakailangang key.

Pagtatakda ng Diffie-Hellman Protocol Parameter

Tinutukoy ng mga parameter ng protocol ng Diffie-Hellman kung paano ipinagpapalit ang data sa pagitan ng OpenVPN server at mga kliyente. Ang pagkakaroon ng paglikha ng file .pem, tutukuyin namin ang mga parameter ayon sa kung saan ang server ay magpapasimula ng mga secure na koneksyon sa mga user.

Ang .pem file ay dapat mabuo gamit ang command: ./build-dh Ang tugon ay magpapakita ng isang set random na mga simbolo, na nagpapahiwatig na ang proseso ng henerasyon ay isinasagawa. Matapos makumpleto ang pamamaraan sa direktoryo atbp/openvpn/easy-rsa/keys lalabas ang file dh1024.pem.

Paglipat ng mga Susi at Sertipiko

Pagkatapos mabuo ang mga susi, kailangan mong ilipat ang mga ito sa mga direktoryo na ginagamit ng OpenVPN server/client application.

Sa server:

  1. Pumunta sa direktoryo kung saan naka-imbak ang mga nilikhang key: cd /etc/openvpn/easy-rsa/keys
  2. Kopyahin ang Certificate Authority (CA) certificate at key, DH settings file, VPN server key at certificate sa direktoryo /etc/openvpn: cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn MAHALAGA: Ang mga file na nakalista sa itaas ay ang batayan para sa functionality at seguridad ng VPN. Ang pagkompromiso sa kanila ay maaaring magkaroon ng masamang kahihinatnan. Itabi ang mga ito sa secure na storage at huwag ilipat ang mga file na ito sa pamamagitan ng mga hindi secure na channel.

Sa device ng kliyente:

Kopyahin ang mga file ca.crt, client1.crt, client1.key sa folder ng device ng kliyente na ginagamit ng OpenVPN application (halimbawa, para sa Linux ito ay /etc/openvpn)

OpenVPN server at configuration ng kliyente

Sa seksyong ito ng mga tagubilin gagawa kami ng dalawang configuration file. Ang una ay ang file ng mga setting para sa OpenVPN server, ang pangalawa ay ang mga parameter ng koneksyon ng VPN para sa device ng kliyente. Ang bawat kliyente ng OpenVPN ay dapat gumamit ng sarili nitong sariling file mga configuration (ang exception ay ang pagkonekta ng ilang user gamit ang isang key pair na karaniwan sa lahat).

Mga setting ng server:

  1. Bilang panimulang punto sa pagsasaayos, maaari mong gamitin ang sample na OpenVPN server configuration file, na naglalaman ng isang listahan ng magagamit na mga parameter ng pagpapatakbo ng programa at mga detalyadong paliwanag ng mga parameter na ito. Kopyahin ang dokumentong ito sa isang direktoryo /etc/openvpn/ upang i-edit ito at pagkatapos ay simulan ang VPN server: gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >/etc/openvpn/server.conf
  2. Ang file na kinopya sa nakaraang hakbang server.conf ay isang ganap na maisasagawa na pagsasaayos. Ito ay sapat na para sa normal na operasyon ng server kung hindi mo kailangang i-tunnel ang lahat ng trapiko sa Internet ng kliyente sa pamamagitan ng isang VPN server o iba pang mga partikular na opsyon.
    Ang tanging bagay na talagang kailangan mong bigyang-pansin ay ang mga pangalan at landas ng server certificate (.crt) at ang key (.key) file nito, pati na rin ang CA certificate (.crt).
    Mga pangalan ng mga susi na matatagpuan sa direktoryo /etc/openvpn dapat ganap na tumugma sa mga pangalan ng mga susi sa config server.conf. Maaari mong suriin ito gamit ang mga sumusunod na command:
    • Alamin ang mga pangalan ng mga pangunahing file (dalawang file.crt at isa.key) sa folder /etc/openvpn gamit ang command: ls /etc/openvpn
    • Sinusuri namin kung ang mga pangalan ng mga file na ipinapakita sa itaas ay tumutugma sa mga pangalan ng mga susi sa file /etc/openvpn/server.conf(pagkatapos ng block # SSL/TLS root certificate (ca), certificate (cert), at pribadong key (key)): nano /etc/server.conf Kung magkaiba ang mga pangalan, gawin ang mga naaangkop na pagsasaayos sa config file (hindi sa mga pangalan ng file sa openvpn folder) at i-save ito (CTRL+X).
    • I-restart ang OpenVPN para ilapat ang mga pagbabago: /etc/init.d/openvpn restart

Mga setting ng kliyente:

  1. Kinokopya namin ang sample na configuration file ng client sa anumang maginhawang direktoryo (sa aming kaso, ang home directory ng user (home), kung kanino namin ipapatupad ang mga command: gunzip -c /usr/share/doc/openvpn/examples/sample- config-files/client.conf. gz>/home/1cloud
  2. Pumunta sa folder mga susi at kopyahin ang mga kinakailangang key file (sa aming kaso: client1.key, client1.crt, ca.crt) sa parehong direktoryo (/home/1cloud): cd /etc/openvpn/easy-rsa/keys > cp client1.key client1.crt ca.crt /home/1cloud
  3. Buksan ang config ng kliyente: nano /home/1cloud/client.conf
  4. Paghahanap ng block # Ang hostname/IP at port ng server at sa halip example.com tukuyin ang IP address ng OpenVPN server: # Ang hostname/IP at port ng server.
    # Maaari kang magkaroon ng maramihang malayuang entry
    # upang mag-load ng balanse sa pagitan ng mga server.
    remote example.com 1194
  5. Sa parehong file nakita namin ang block #SSL/TLS parms. at suriin ang mga pangalan ng user key file (katulad ng kung paano namin ito ginawa sa config ng server): # SSL/TLS parms.
    # Tingnan ang server config file para sa higit pa
    # paglalarawan. Ang pinakamahusay na gamitin
    # isang hiwalay na .crt/.key na pares ng file
    # para sa bawat kliyente. Isang solong ca
    # file ay maaaring gamitin para sa lahat ng mga kliyente.
    caca.crt
    cert client1.crt
    key client1.key
  6. I-save ang configuration file ng kliyente ( CTRL+X).
  7. Ngayon kailangan mong ilipat mga file ng gumagamit client.conf, client1.key, client1.crt, ca.crt sa device ng kliyente kung saan ka ikokonekta sa VPN server. Magagawa ito sa pamamagitan ng FTP, SCP, o sa pamamagitan lamang ng paglikha ng mga file na may magkaparehong pangalan sa device ng user (sa pamamagitan ng nano sa Linux, sa pamamagitan ng Notepad sa Windows) at ganap na pagkopya ng mga nilalaman ng source na dokumento mula sa malayong server papunta sa kanila.
    Pansin! Ang ilang OpenVPN client application (halimbawa sa Android at iOS) ay gumagana sa configuration file extension .ovpn, hindi .conf. Kung nakatagpo ka ng problemang ito, palitan lang ang pangalan ng file ng mga setting ng kliyente nang naaayon.
    Inilalagay namin ang mga inilipat na file sa folder kung saan gumagana ang OpenVPN application na iyong ginagamit (tingnan ang dokumentasyon para sa programa).
  8. Kumonekta sa server. Pagkatapos ng matagumpay na koneksyon, ang virtual network adapter ay isinaaktibo sa client device. Maaari mong suriin ito sa Linux gamit ang command ifconfig(dapat ipakita ang adaptor TUN), sa isang OS na may graphical na interface, maaari mong suriin ang tama ng koneksyon nang direkta sa programa ng koneksyon ng VPN.

Pansin! Dahil hindi pa namin na-configure ang tunneling ng lahat ng trapiko sa Internet sa pamamagitan ng VPN server, hindi na gagana ang Internet access sa client device pagkatapos itong ikonekta sa virtual private network. Ang mga tagubilin para sa pagruruta ng trapiko sa Internet ng mga gumagamit sa pamamagitan ng isang VPN server ay ipinakita sa ibaba.B.

I-tunnel ang lahat ng trapiko ng kliyente ng virtual pribadong network sa pamamagitan ng VPN server

Sa pagsasaayos na ito, iko-configure namin ang pagruruta ng lahat ng trapiko Mga gumagamit ng VPN sa pamamagitan ng OpenVPN server habang pinapanatili ang SSL encryption mula sa kliyente patungo sa server.

  1. Sa server, buksan ang file ng pagsasaayos ng OpenVPN server.conf: nano /etc/openvpn/server.conf
  2. Alisin sa komento ang linya ng config sa ibaba (alisin ang simbolo ; sa simula ng linya): itulak ang "redirect-gateway def1 bypass-dhcp"
  3. I-save at isara ang file (CTRL+X)
  4. Buksan ang file /etc/sysctl.conf:
    nano /etc/sysctl.conf
  5. Alisin sa komento o idagdag ang linya sa ibaba sa bukas na file para matiyak na pinapayagan ang IPv4 traffic forwarding: net.ipv4.ip_forward=1
  6. I-save at isara ang file (CTRL+X)
  7. Ipasok ang command para ilapat ang mga pagbabago sa kasalukuyang session: echo 1 > /proc/sys/net/ipv4/ip_forward
  8. Ipasok ang mga sumusunod na command nang sunud-sunod (isang linya = isang command) upang i-configure ang firewall iptables para sa pagpapasa ng trapiko sa pamamagitan ng VPN:







  9. Idagdag ang parehong listahan ng mga panuntunan sa iptables sa file /etc/rc.local upang mailapat ang mga ito sa tuwing magsisimula ang system: nano /etc/rc.local
    Nilalaman ng file:
    #!/bin/sh -e
    #
    # [...]
    #
    iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -s 10.8.0.0/24 -j TANGGAPIN
    iptables -A FORWARD -j REJECT
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    iptables -A INPUT -i tun+ -j TANGGAPIN
    iptables -A FORWARD -i tun+ -j TANGGAPIN
    iptables -A INPUT -i tap+ -j TANGGAPIN
    iptables -A FORWARD -i tap+ -j TANGGAPIN
    labasan 0
    I-save at isara ang dokumento (CTRL+X)
  10. Ang mga setting sa itaas ay nagbibigay-daan sa lahat ng trapiko ng kliyente, maliban sa mga query sa DNS, na maipasa sa pamamagitan ng VPN server. Upang ipasa ang mga kahilingan sa DNS kailangan mong i-install ang package dnsmasq at gumawa ng mga pagbabago sa file /etc/openvpn/server.conf
  11. I-install ang dnsmasq:
    Kung gumagamit ka ng Ubuntu 12.04: apt-get install dnsmasq && dpkg-reconfigure resolvconf May lalabas na setup wizard. Sa unang punto (maghanda /etc/resolv.conf para sa mga dynamic na update) sagot namin oo, pagkatapos hindi (Idagdag ang orihinal na file sa dynamic na file?)
    Kung gumagamit ka ng Debian 7: apt-get install dnsmasq resolvconf
  12. Ngayon ay kailangan mong i-edit dnsmasq: nano /etc/dnsmasq.conf Siguraduhin na ang mga sumusunod na parameter ay walang komento o idinagdag sa file: listen-address=10.8.0.1
    bind-interfaces
  13. Susunod na kailangan mong idagdag sa file /etc/network/interfaces impormasyon tungkol sa mga DNS server na ginamit. Marahil sa iyong kaso ang impormasyong ito ay naroroon na (tulad ng, halimbawa, sa kaso ng mga server na nirentahan sa site), kung hindi, idagdag ito bilang mga sumusunod:
    Buksan ang file ng pagsasaayos ng interface: nano /etc/network/interfaces Idagdag ang linya ng dns-nameservers na nagsasaad ng mga address ng mga DNS server na iyong ginagamit (halimbawa, isang server mula sa iyong Internet provider at isang pampublikong google server: 8.8.8.8): # Ang pangunahing interface ng network
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers 77.88.8.8 8.8.8.8
  14. Sa karaniwang mga setting Ang dnsmasq utility ay tumatakbo bago magsimula ang OpenVPN virtual tun adapter. Ito ay nagiging sanhi ng mga error at dnsmasq upang wakasan. Upang ayusin ang problemang ito, kailangan mong idagdag sa file /etc/rc.local isang linya na may command na magre-restart ng dnsmasq pagkatapos masimulan ang OpenVPN. Ang linyang ito ay dapat ilagay sa file pagkatapos mga parameter ng iptables, na ipinahiwatig namin kanina: nano /etc/rc.local
    Mga Nilalaman ng File:
    ...
    iptables -A FORWARD -i tun+ -j TANGGAPIN
    iptables -A INPUT -i tap+ -j TANGGAPIN
    iptables -A FORWARD -i tap+ -j TANGGAPIN
    /etc/init.d/dnsmasq i-restart
    labasan 0
  15. Ang huling bagay na dapat gawin ay alisin ang komento sa linya na nagpapahintulot sa mga kliyente ng OpenVPN na gumamit ng mga DNS server sa file /etc/openvpn/server.conf:
    nano /etc/openvpn/server.conf Mga nilalaman ng file: ....
    itulak ang "dhcp-option DNS 10.8.0.1"
  16. I-restart ang server upang ilapat ang lahat ng mga setting at suriin ang tama ng mga ito: i-reboot