ProHoster > Blog > Pangangasiwa > Pag-set up ng pagpapatunay sa L2TP network gamit ang Rutoken EDS 2.0 at Rutoken PKI
Pag-set up ng pagpapatunay sa L2TP network gamit ang Rutoken EDS 2.0 at Rutoken PKI
Mga isyu
Kamakailan lamang, marami ang hindi alam kung ano ang pakiramdam ng pagtatrabaho mula sa bahay. Ang pandemya ay kapansin-pansing binago ang sitwasyon sa mundo; lahat ay nagsimulang umangkop sa kasalukuyang mga pangyayari, lalo na sa katotohanan na naging hindi ligtas na umalis ng bahay. At marami ang kailangang mabilis na ayusin ang trabaho mula sa bahay para sa kanilang mga empleyado.
Gayunpaman, ang kakulangan ng karampatang diskarte sa pagpili ng mga solusyon para sa malayong trabaho ay maaaring humantong sa hindi maibabalik na pagkalugi. Maaaring manakaw ang mga password ng user, at magbibigay-daan ito sa isang attacker na hindi makontrol na kumonekta sa network at mga mapagkukunan ng IT ng enterprise.
Iyon ang dahilan kung bakit ang pangangailangan para sa paglikha ng maaasahang mga corporate VPN network ay tumaas na ngayon. sasabihin ko sa iyo ang tungkol sa maaasahan, ligtas ΠΈ simple sa paggamit ng VPN network.
Gumagana ito ayon sa scheme ng IPsec/L2TP, na gumagamit ng mga hindi nakukuhang key at certificate na nakaimbak sa mga token upang patotohanan ang mga kliyente, at nagpapadala rin ng data sa network sa naka-encrypt na anyo.
Ang isang server na may CentOS 7 (address: centos.vpn.server.ad) at isang kliyente na may Ubuntu 20.04, pati na rin ang isang kliyente na may Windows 10, ay ginamit bilang demonstration na kumakatawan sa configuration.
Paglalarawan ng System
Ang VPN ay gagana ayon sa IPSec + L2TP + PPP scheme. Protocol Point-to-Point Protocol (PPP) gumagana sa layer ng data link ng modelong OSI at nagbibigay ng pagpapatunay at pag-encrypt ng user ng ipinadalang data. Ang data nito ay naka-encapsulated sa data ng L2TP protocol, na talagang tinitiyak ang paglikha ng isang koneksyon sa VPN network, ngunit hindi nagbibigay ng pagpapatunay at pag-encrypt.
Ang L2TP data ay naka-encapsulated sa IPSec, na nagbibigay din ng authentication at encryption, ngunit hindi tulad ng PPP, ang authentication at encryption ay nangyayari sa antas ng device, hindi sa antas ng user.
Binibigyang-daan ka ng feature na ito na patotohanan ang mga user mula lamang sa ilang partikular na device. Gagamitin namin ang IPSec protocol kung ano ito at pahihintulutan ang pag-authenticate ng user mula sa anumang device.
Ang pag-authenticate ng user gamit ang mga smart card ay isasagawa sa antas ng PPP protocol gamit ang EAP-TLS protocol.
Ang mas detalyadong impormasyon tungkol sa pagpapatakbo ng circuit na ito ay matatagpuan sa artikulong ito.
Bakit natutugunan ng scheme na ito ang lahat ng tatlong kinakailangan ng isang mahusay na network ng VPN?
Ang pagiging maaasahan ng pamamaraan na ito ay nasubok ng oras. Ito ay ginamit upang mag-deploy ng mga network ng VPN mula noong 2000.
Ang secure na pagpapatunay ng user ay ibinibigay ng PPP protocol. Karaniwang pagpapatupad ng PPP protocol na binuo ni Paul Mackerras ay hindi nagbibigay ng sapat na antas ng seguridad, dahil Para sa pagpapatunay, sa pinakamahusay na kaso, ang pagpapatunay gamit ang isang pag-login at password ay ginagamit. Alam nating lahat na ang isang password sa pag-login ay maaaring tiktikan, hulaan o manakaw. Gayunpaman, para sa isang mahabang panahon ngayon ang developer Jan Just Keijser Π² pagpapatupad nito Itinama ng protocol na ito ang isyung ito at nagdagdag ng kakayahang gumamit ng mga protocol batay sa asymmetric encryption, gaya ng EAP-TLS, para sa pagpapatunay. Bilang karagdagan, idinagdag niya ang kakayahang gumamit ng mga smart card para sa pagpapatunay, na ginawang mas secure ang system.
Sa kasalukuyan, ang mga aktibong negosasyon ay isinasagawa upang pagsamahin ang dalawang proyektong ito at makatitiyak ka na sa malao't madali ay mangyayari pa rin ito. Halimbawa, ang isang patched na bersyon ng PPP ay nasa mga repositoryo ng Fedora sa loob ng mahabang panahon, gamit ang mga secure na protocol para sa pagpapatunay.
Hanggang kamakailan lamang, ang network na ito ay magagamit lamang ng mga gumagamit ng Windows, ngunit natagpuan ng aming mga kasamahan mula sa Moscow State University na sina Vasily Shokov at Alexander Smirnov lumang L2TP client project para sa Linux at binago ito. Magkasama, naayos namin ang maraming mga bug at pagkukulang sa trabaho ng kliyente, pinasimple ang pag-install at pagsasaayos ng system, kahit na ang pagbuo mula sa pinagmulan. Ang pinakamahalaga sa kanila ay:
Inayos ang mga problema sa compatibility ng lumang client na may interface ng mga bagong bersyon ng openssl at qt.
Inalis ang pppd sa pagpasa ng token PIN sa pamamagitan ng pansamantalang file.
Inayos ang maling paglulunsad ng programa ng paghiling ng password sa pamamagitan ng graphical na interface. Ginawa ito sa pamamagitan ng pag-install ng tamang kapaligiran para sa serbisyong xl2tpd.
Ang build ng L2tpIpsecVpn daemon ay isinasagawa na ngayon kasama ng build ng client mismo, na nagpapasimple sa proseso ng build at configuration.
Para sa kadalian ng pagbuo, ang Azure Pipelines system ay konektado upang subukan ang kawastuhan ng build.
Nagdagdag ng kakayahang mag-force downgrade antas ng seguridad sa konteksto ng openssl. Ito ay kapaki-pakinabang para sa wastong pagsuporta sa mga bagong operating system kung saan ang karaniwang antas ng seguridad ay nakatakda sa 2, na may mga VPN network na gumagamit ng mga certificate na hindi nakakatugon sa mga kinakailangan sa seguridad ng antas na ito. Ang pagpipiliang ito ay magiging kapaki-pakinabang para sa pagtatrabaho sa mga umiiral nang lumang VPN network.
Ang naitama na bersyon ay matatagpuan sa imbakan na ito.
Sinusuportahan ng kliyenteng ito ang paggamit ng mga smart card para sa pagpapatotoo, at itinatago rin hangga't maaari ang lahat ng paghihirap at paghihirap ng pag-set up ng scheme na ito sa ilalim ng Linux, na ginagawang simple at mabilis ang pag-setup ng kliyente hangga't maaari.
Siyempre, para sa isang maginhawang koneksyon sa pagitan ng PPP at ng client GUI, hindi ito posible nang walang karagdagang mga pag-edit sa bawat isa sa mga proyekto, ngunit gayunpaman sila ay pinaliit at nabawasan sa pinakamababa:
Nakapirming error sa pagkakasunud-sunod ng pag-load ng configuration at pagsisimula ng openssl na konteksto. Hindi kami pinayagan ng error na ito na mag-load ng anuman mula sa lokal na /etc/ppp/openssl.cnf configuration file maliban sa impormasyon tungkol sa mga openssl engine para sa pagtatrabaho sa mga smart card, na isang malubhang abala kung, halimbawa, bilang karagdagan sa impormasyon tungkol sa mga engine, gusto naming magtakda ng ibang bagay. Halimbawa, ayusin ang antas ng seguridad kapag nagtatatag ng koneksyon.
Ngayon ay maaari ka nang magsimulang mag-set up.
Pag-tune ng Server
I-install natin ang lahat ng kinakailangang pakete.
Pag-install ng strongswan (IPsec)
Una sa lahat, i-configure natin ang firewall para sa operasyon ng ipsec
Pagkatapos ng pag-install, kailangan mong i-configure ang strongswan (isa sa mga pagpapatupad ng IPSec). Upang gawin ito, i-edit ang file /etc/strongswan/ipsec.conf :
Magtatakda din kami ng karaniwang password sa pag-log in. Ang nakabahaging password ay dapat malaman ng lahat ng kalahok sa network para sa pagpapatunay. Ang pamamaraang ito ay malinaw na hindi mapagkakatiwalaan, dahil ang password na ito ay madaling malaman ng mga indibidwal na hindi namin gustong magbigay ng access sa network.
Gayunpaman, kahit na ang katotohanang ito ay hindi makakaapekto sa seguridad ng network, dahil Ang basic data encryption at user authentication ay isinasagawa ng PPP protocol. Ngunit sa pagiging patas, nararapat na tandaan na ang strongswan ay sumusuporta sa mas ligtas na mga teknolohiya para sa pagpapatunay, halimbawa, gamit ang mga pribadong key. Ang Strongswan ay mayroon ding kakayahang magbigay ng pagpapatunay gamit ang mga smart card, ngunit hanggang ngayon ay limitado lamang ang hanay ng mga device at samakatuwid ay mahirap pa rin ang pagpapatotoo gamit ang mga Rutoken token at smart card. Magtakda tayo ng pangkalahatang password sa pamamagitan ng file /etc/strongswan/ipsec.secrets:
Kaya, tapos na kami sa pangunahing pag-setup ng server. Ang natitirang configuration ng server ay nagsasangkot ng pagdaragdag ng mga bagong kliyente.
Pagdaragdag ng bagong kliyente
Upang magdagdag ng bagong kliyente sa network, dapat mong idagdag ang sertipiko nito sa listahan ng mga pinagkakatiwalaan para sa kliyenteng ito.
Kung gusto ng isang user na maging miyembro ng isang VPN network, gagawa siya ng key pair at isang certificate application para sa client na ito. Kung pinagkakatiwalaan ang user, maaaring mapirmahan ang application na ito, at ang resultang certificate ay maaaring isulat sa direktoryo ng mga certificate:
NOTA
Upang maiwasan ang pagkalito, mas mabuti na: Karaniwang Pangalan, pangalan ng file ng sertipiko at pangalan ng gumagamit ay natatangi.
Ito rin ay nagkakahalaga ng pagsuri na ang pangalan ng user na aming idinaragdag ay hindi lilitaw kahit saan sa iba pang mga file ng pagpapatunay, kung hindi, magkakaroon ng mga problema sa paraan ng pagpapatotoo ng gumagamit.
Ang parehong sertipiko ay dapat ipadala pabalik sa gumagamit.
Pagbuo ng key pair at certificate
Para sa matagumpay na pagpapatunay, ang kliyente ay dapat:
bumuo ng isang key pares;
magkaroon ng CA root certificate;
magkaroon ng certificate para sa iyong key pair na nilagdaan ng root CA.
para sa kliyente sa Linux
Una, bumuo tayo ng key pair sa token at gumawa ng application para sa certificate:
Ipadala ang client.req application na lalabas sa CA. Kapag nakatanggap ka ng certificate para sa iyong key pair, isulat ito sa isang token na may parehong id bilang key:
para sa mga kliyente ng Windows at Linux (mas unibersal na paraan)
Ang pamamaraang ito ay mas unibersal, dahil nagbibigay-daan sa iyo na bumuo ng isang susi at sertipiko na matagumpay na makikilala ng mga gumagamit ng Windows at Linux, ngunit nangangailangan ito ng isang makina ng Windows upang isagawa ang pamamaraan ng pagbuo ng susi.
Bago bumuo ng mga kahilingan at mag-import ng mga certificate, dapat mong idagdag ang root certificate ng VPN network sa listahan ng mga pinagkakatiwalaan. Upang gawin ito, buksan ito at sa window na bubukas, piliin ang opsyon na "I-install ang sertipiko":
Sa window na bubukas, piliin ang pag-install ng certificate para sa lokal na user:
I-install natin ang certificate sa pinagkakatiwalaang root certificate store ng CA:
Pagkatapos ng lahat ng mga pagkilos na ito, sumasang-ayon kami sa lahat ng karagdagang punto. Naka-configure na ngayon ang system.
Gumawa tayo ng file cert.tmp na may sumusunod na nilalaman:
Pagkatapos nito, bubuo kami ng key pair at gagawa kami ng application para sa certificate. Upang gawin ito, buksan ang powershell at ipasok ang sumusunod na command:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Ipadala ang nilikhang application client.req sa iyong CA at hintaying matanggap ang certificate ng client.pem. Maaari itong isulat sa isang token at idagdag sa Windows certificate store gamit ang sumusunod na command:
certreq.exe -accept .client.pem
Ito ay nagkakahalaga ng pagpuna na ang mga katulad na aksyon ay maaaring kopyahin gamit ang graphical na interface ng mmc program, ngunit ang pamamaraang ito ay mas matagal at hindi gaanong ma-program.
Pagse-set up ng Ubuntu client
NOTA
Ang pagse-set up ng isang kliyente sa Linux ay kasalukuyang medyo matagal, dahil... nangangailangan ng pagbuo ng mga hiwalay na programa mula sa pinagmulan. Susubukan naming tiyakin na ang lahat ng mga pagbabago ay kasama sa mga opisyal na repositoryo sa malapit na hinaharap.
Upang matiyak ang koneksyon sa antas ng IPSec sa server, ginagamit ang strongswan package at ang xl2tp daemon. Upang pasimplehin ang pagkonekta sa network gamit ang mga smart card, gagamitin namin ang l2tp-ipsec-vpn package, na nagbibigay ng graphical na shell para sa pinasimpleng pag-setup ng koneksyon.
Simulan natin ang pag-assemble ng mga elemento nang sunud-sunod, ngunit bago iyon i-install natin ang lahat ng kinakailangang mga pakete para gumana nang direkta ang VPN:
sudo apt-get install xl2tpd strongswan libp11-3
Pag-install ng software para sa pagtatrabaho sa mga token
I-install ang pinakabagong librtpkcs11ecp.so library mula sa ΡΠ°ΠΉΡΠ°, mga aklatan din para sa pagtatrabaho sa mga smart card:
sudo apt-get -y install git make gcc libssl-dev
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make install
Pag-install ng L2tpIpsecVpn client
Sa ngayon, kailangan ding i-compile ang kliyente mula sa source code. Ginagawa ito gamit ang sumusunod na pagkakasunud-sunod ng mga utos:
sudo apt-get -y install git qt5-qmake qt5-default build-essential libctemplate-dev libltdl-dev
git clone "https://github.com/Sander80/l2tp-ipsec-vpn"
cd l2tp-ipsec-vpn
make -j4
sudo make install
Pagse-set up ng L2tpIpsecVpn client
Ilunsad ang naka-install na kliyente:
Pagkatapos ng paglunsad, dapat mabuksan ang L2tpIpsecVPN applet. Mag-right-click dito at i-configure ang koneksyon:
Upang gumana sa mga token, una sa lahat, ipinapahiwatig namin ang landas ng opensc engine ng OpenSSL at ang PKCS#11 library. Upang gawin ito, buksan ang tab na "Mga Kagustuhan" upang i-configure ang mga parameter ng openssl:
.
Isara natin ang window ng mga setting ng OpenSSL at magpatuloy sa pag-set up ng network. Magdagdag tayo ng bagong network sa pamamagitan ng pag-click sa Add... button sa panel ng mga setting at ilagay ang pangalan ng network:
Pagkatapos nito, magiging available ang network na ito sa panel ng mga setting. I-double-right-click sa bagong network upang i-configure ito. Sa unang tab kailangan mong gumawa ng mga setting ng IPsec. Itakda natin ang address ng server at pampublikong key:
Pagkatapos nito, pumunta sa tab na mga setting ng PPP at ipahiwatig doon ang user name kung saan nais naming ma-access ang network:
Pagkatapos nito, buksan ang tab na Properties at tukuyin ang path sa key, certificate ng kliyente at CA:
Isara natin ang tab na ito at gawin ang mga huling setting; upang gawin ito, buksan ang tab na "Mga setting ng IP" at lagyan ng check ang kahon sa tabi ng opsyon na "Awtomatikong makuha ang address ng DNS server":
Ang pagpipiliang ito ay magpapahintulot sa kliyente na makatanggap ng isang personal na IP address sa loob ng network mula sa server.
Pagkatapos ng lahat ng mga setting, isara ang lahat ng mga tab at i-restart ang client:
Koneksyon sa network
Pagkatapos ng mga setting, maaari kang kumonekta sa network. Upang gawin ito, buksan ang tab na applet at piliin ang network kung saan gusto naming kumonekta:
Sa panahon ng proseso ng pagtatatag ng koneksyon, hihilingin sa amin ng kliyente na ipasok ang Rutoken PIN code:
Kung may lumabas na notification sa status bar na matagumpay na naitatag ang koneksyon, nangangahulugan ito na matagumpay ang pag-setup:
Kung hindi, sulit na malaman kung bakit hindi naitatag ang koneksyon. Upang gawin ito, dapat mong tingnan ang log ng programa sa pamamagitan ng pagpili sa command na "Impormasyon ng koneksyon" sa applet:
Pag-set up ng Windows client
Ang pag-set up ng isang kliyente sa Windows ay mas madali kaysa sa Linux, dahil... Ang lahat ng kinakailangang software ay nakapaloob na sa system.
Pag-ayos ng sistema
I-install namin ang lahat ng kinakailangang driver para sa pagtatrabaho sa Rutokens sa pamamagitan ng pag-download sa kanila mula sa ng. lugar.
Pag-import ng root certificate para sa pagpapatunay
I-download ang server root certificate at i-install ito sa system. Upang gawin ito, buksan ito at sa window na bubukas, piliin ang opsyon na "I-install ang sertipiko":
Sa window na bubukas, piliin ang pag-install ng certificate para sa lokal na user. Kung gusto mong maging available ang certificate sa lahat ng user sa computer, dapat mong piliin na i-install ang certificate sa lokal na computer:
I-install natin ang certificate sa pinagkakatiwalaang root certificate store ng CA:
Pagkatapos ng lahat ng mga pagkilos na ito, sumasang-ayon kami sa lahat ng karagdagang punto. Naka-configure na ngayon ang system.
Pag-set up ng koneksyon sa VPN
Upang mag-set up ng koneksyon sa VPN, pumunta sa control panel at piliin ang opsyong gumawa ng bagong koneksyon.
Sa pop-up window, piliin ang opsyong gumawa ng koneksyon para kumonekta sa iyong lugar ng trabaho:
Sa susunod na window, pumili ng koneksyon sa VPN:
at ipasok ang mga detalye ng koneksyon sa VPN, at tukuyin din ang opsyong gumamit ng smart card:
Hindi pa kumpleto ang setup. Ang natitira na lang ay tukuyin ang nakabahaging key para sa IPsec protocol; upang gawin ito, pumunta sa tab na "Mga setting ng koneksyon sa network" at pagkatapos ay pumunta sa tab na "Properties para sa koneksyon na ito":
Sa window na bubukas, pumunta sa tab na "Seguridad", tukuyin ang "L2TP/IPsec Network" bilang uri ng network at piliin ang "Mga Advanced na Setting":
Sa window na bubukas, tukuyin ang nakabahaging IPsec key:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Pagkatapos makumpleto ang pag-setup, maaari mong subukang kumonekta sa network:
Sa proseso ng koneksyon, kakailanganin naming ilagay ang token PIN code:
Nag-set up kami ng secure na VPN network at tiniyak namin na hindi ito mahirap.
Mga Pasasalamat
Nais kong muling pasalamatan ang aming mga kasamahan na sina Vasily Shokov at Alexander Smirnov para sa gawaing pinagsama-sama nilang ginawa upang gawing simple ang paglikha ng mga koneksyon sa VPN para sa mga kliyente ng Linux.