ProHoster > ΠΠ»ΠΎΠ³ > Administrasi > Nggawe otentikasi ing jaringan L2TP nggunakake Rutoken EDS 2.0 lan Rutoken PKI
Nggawe otentikasi ing jaringan L2TP nggunakake Rutoken EDS 2.0 lan Rutoken PKI
Masalah
Saiki, akeh sing ora ngerti kepiye kerja ing omah. Pandemi kasebut kanthi dramatis ngganti kahanan ing jagad iki; kabeh wong wis mulai adaptasi karo kahanan saiki, yaiku kasunyatane dadi ora aman kanggo ninggalake omah. Lan akeh sing kudu cepet ngatur kerja saka omah kanggo karyawan.
Nanging, kekurangan pendekatan sing kompeten kanggo milih solusi kanggo karya remot bisa nyebabake kerugian sing ora bisa dibatalake. Tembung sandhi pangguna bisa dicolong, lan iki bakal ngidini panyerang bisa nyambung menyang jaringan lan sumber daya IT perusahaan.
Pramila kabutuhan nggawe jaringan VPN perusahaan sing dipercaya saiki saya tambah. Aku bakal pitutur marang kowe bab dipercaya, aman ΠΈ prasaja ing nggunakake jaringan VPN.
Kerjane miturut skema IPsec / L2TP, sing nggunakake kunci lan sertifikat sing ora bisa dipulihake sing disimpen ing token kanggo otentikasi klien, lan uga ngirim data liwat jaringan kanthi bentuk ndhelik.
Server karo CentOS 7 (alamat: centos.vpn.server.ad) lan klien karo Ubuntu 20.04, uga klien karo Windows 10, digunakake minangka demonstrasi kanggo konfigurasi.
Deskripsi Sistem
VPN bakal bisa digunakake miturut skema IPSec + L2TP + PPP. Protokol Protokol Point-to-Point (PPP) beroperasi ing lapisan link data model OSI lan menehi otentikasi pangguna lan enkripsi data sing dikirim. Data kasebut encapsulated ing data protokol L2TP, sing bener njamin nggawe sambungan ing jaringan VPN, nanging ora menehi otentikasi lan enkripsi.
Data L2TP dienkapsulasi ing IPSec, sing uga nyedhiyakake otentikasi lan enkripsi, nanging ora kaya PPP, otentikasi lan enkripsi dumadi ing tingkat piranti, ora ing tingkat pangguna.
Fitur iki ngidini sampeyan keasliane pangguna mung saka piranti tartamtu. Kita bakal nggunakake protokol IPSec kaya saiki lan ngidini otentikasi pangguna saka piranti apa wae.
Otentikasi pangguna nggunakake kertu pinter bakal ditindakake ing tingkat protokol PPP nggunakake protokol EAP-TLS.
Informasi sing luwih rinci babagan operasi sirkuit iki bisa ditemokake ing artikel iki.
Napa skema iki nyukupi kabeh telung syarat jaringan VPN sing apik?
Keandalan skema iki wis diuji dening wektu. Wis digunakake kanggo nyebarake jaringan VPN wiwit taun 2000.
Otentikasi pangguna sing aman diwenehake dening protokol PPP. Implementasi standar protokol PPP sing dikembangake dening Paul Mackerras ora nyedhiyani tingkat cukup keamanan, amarga Kanggo otentikasi, ing kasus sing paling apik, otentikasi nggunakake login lan sandhi digunakake. Kita kabeh ngerti manawa sandhi mlebu bisa digoleki, ditebak utawa dicolong. Nanging, kanggo dangu saiki pangembang Jan Just Keijser Π² implementasine Protokol iki mbenerake masalah iki lan nambahake kemampuan kanggo nggunakake protokol adhedhasar enkripsi asimetris, kayata EAP-TLS, kanggo otentikasi. Kajaba iku, dheweke nambahake kemampuan kanggo nggunakake kertu pinter kanggo otentikasi, sing nggawe sistem luwih aman.
Saiki, negosiasi aktif ditindakake kanggo nggabungake rong proyek kasebut lan sampeyan bisa yakin manawa cepet utawa mengko iki bakal kedadeyan. Contone, versi PPP sing ditambal wis suwe ana ing repositori Fedora, nggunakake protokol aman kanggo otentikasi.
Nganti saiki, jaringan iki mung bisa digunakake dening pangguna Windows, nanging kanca-kanca saka Moscow State University Vasily Shokov lan Alexander Smirnov nemokake project klien L2TP lawas kanggo Linux lan diowahi. Bebarengan, kita ndandani akeh kewan omo lan kekurangan ing karya klien, nyederhanakake instalasi lan konfigurasi sistem, sanajan mbangun saka sumber. Sing paling penting yaiku:
Ndandani masalah kompatibilitas klien lawas kanthi antarmuka versi anyar openssl lan qt.
Mbusak pppd saka ngliwati PIN token liwat file sementara.
Ndandani peluncuran program panyuwunan sandhi sing salah liwat antarmuka grafis. Iki ditindakake kanthi nginstal lingkungan sing bener kanggo layanan xl2tpd.
Mbangun daemon L2tpIpsecVpn saiki ditindakake bebarengan karo mbangun klien kasebut dhewe, sing nyederhanakake proses mbangun lan konfigurasi.
Kanggo ease pembangunan, sistem Azure Pipelines disambungake kanggo nyoba bener mbangun.
Ditambahake kemampuan kanggo meksa downgrade tingkat keamanan ing konteks openssl. Iki migunani kanggo ndhukung sistem operasi anyar kanthi bener ing ngendi tingkat keamanan standar disetel dadi 2, kanthi jaringan VPN sing nggunakake sertifikat sing ora nyukupi syarat keamanan level iki. Opsi iki bakal migunani kanggo nggarap jaringan VPN lawas sing wis ana.
Versi sing didandani bisa ditemokake ing gudang iki.
Klien iki ndhukung panggunaan kertu pinter kanggo otentikasi, lan uga ndhelikake kabeh kesulitan lan kesulitan kanggo nyetel skema iki ing Linux, nggawe persiyapan klien kanthi gampang lan cepet.
Mesthine, kanggo sambungan sing trep antarane PPP lan GUI klien, ora mungkin tanpa suntingan tambahan kanggo saben proyek, nanging padha diminimalisir lan dikurangi dadi minimal:
Ndandani kesalahan ing urutan loading konfigurasi lan initializing konteks openssl. Kesalahan iki ora ngidini kita mbukak apa-apa saka file konfigurasi lokal /etc/ppp/openssl.cnf kajaba informasi babagan mesin openssl kanggo nggarap kertu pinter, sing dadi ora nyaman yen, contone, saliyane informasi babagan mesin, kita wanted kanggo nyetel mergo. Contone, ndandani tingkat keamanan nalika nggawe sambungan.
Saiki sampeyan bisa miwiti nyetel.
Server Tuning
Ayo nginstal kabeh paket sing dibutuhake.
Nginstal strongswan (IPsec)
Kaping pisanan, ayo ngatur firewall kanggo operasi ipsec
Sawise instalasi, sampeyan kudu ngatur strongswan (salah sawijining implementasi IPSec). Kanggo nindakake iki, sunting file /etc/strongswan/ipsec.conf :
Kita uga bakal nyetel sandhi login umum. Sandi sing dienggo bareng kudu dingerteni kabeh peserta jaringan kanggo otentikasi. Cara iki temenan ora bisa dipercaya, amarga sandhi iki bisa gampang dikenal kanggo individu sing ora pengin menehi akses menyang jaringan.
Nanging, malah kasunyatan iki ora bakal mengaruhi keamanan jaringan, amarga Enkripsi data dhasar lan otentikasi pangguna ditindakake dening protokol PPP. Nanging ing keadilan, perlu dicathet yen strongswan ndhukung teknologi sing luwih aman kanggo otentikasi, contone, nggunakake tombol pribadi. Strongswan uga nduweni kemampuan kanggo menehi bukti asli nggunakake kertu pinter, nanging nganti saiki mung sawetara piranti winates sing didhukung lan mulane otentikasi nggunakake token Rutoken lan kertu pinter isih angel. Ayo nyetel sandhi umum liwat file /etc/strongswan/ipsec.secrets:
Mangkono, kita wis rampung karo persiyapan server dhasar. Konfigurasi server liyane kalebu nambah klien anyar.
Nambahake klien anyar
Kanggo nambah klien anyar menyang jaringan, sampeyan kudu nambah sertifikat menyang dhaptar sing dipercaya kanggo klien iki.
Yen pangguna pengin dadi anggota jaringan VPN, dheweke nggawe pasangan kunci lan aplikasi sertifikat kanggo klien iki. Yen pangguna dipercaya, aplikasi iki bisa ditandatangani, lan sertifikat sing diasilake bisa ditulis ing direktori sertifikat:
CATETAN
Kanggo ngindhari kebingungan, luwih becik: Jeneng Umum, jeneng file sertifikat lan jeneng pangguna unik.
Sampeyan uga kudu dipriksa manawa jeneng pangguna sing kita tambahake ora katon ing endi wae ing file otentikasi liyane, yen ora, bakal ana masalah karo cara pangguna diotentikasi.
Sertifikat sing padha kudu dikirim maneh menyang pangguna.
Ngasilake pasangan kunci lan sertifikat
Kanggo otentikasi sukses, klien kudu:
ngasilake pasangan kunci;
duwe sertifikat ROOT CA;
duwe sertifikat kanggo pasangan kunci sing ditandatangani dening CA ROOT.
kanggo klien ing Linux
Pisanan, ayo nggawe pasangan kunci ing token lan nggawe aplikasi kanggo sertifikat:
Kirimi aplikasi client.req sing katon ing CA. Sawise sampeyan nampa sertifikat kanggo pasangan kunci, tulisake menyang token kanthi id sing padha karo kunci kasebut:
kanggo klien Windows lan Linux (cara sing luwih universal)
Cara iki luwih universal, amarga ngidini sampeyan ngasilake kunci lan sertifikat sing bakal kasil dikenali dening pangguna Windows lan Linux, nanging mbutuhake mesin Windows kanggo nindakake prosedur generasi kunci.
Sadurunge nggawe panjalukan lan ngimpor sertifikat, sampeyan kudu nambah sertifikat root jaringan VPN menyang dhaptar sing dipercaya. Kanggo nindakake iki, bukak lan ing jendhela sing mbukak, pilih opsi "Pasang sertifikat":
Ing jendhela sing mbukak, pilih nginstal sertifikat kanggo pangguna lokal:
Ayo nginstal sertifikat kasebut ing toko sertifikat root sing dipercaya CA:
Sawise kabeh tumindak kasebut, kita setuju karo kabeh poin liyane. Sistem saiki wis diatur.
Ayo nggawe file cert.tmp kanthi isi ing ngisor iki:
Sawise iki, kita bakal ngasilake pasangan kunci lan nggawe aplikasi kanggo sertifikat kasebut. Kanggo nindakake iki, bukak powershell banjur ketik printah ing ngisor iki:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Kirim aplikasi client.req sing digawe menyang CA lan ngenteni sertifikat client.pem ditampa. Bisa ditulis menyang token lan ditambahake menyang toko sertifikat Windows nggunakake printah ing ngisor iki:
certreq.exe -accept .client.pem
Wigati dicathet yen tumindak sing padha bisa digawe kanthi nggunakake antarmuka grafis program mmc, nanging cara iki luwih akeh wektu lan kurang bisa diprogram.
Nyetel klien Ubuntu
CATETAN
Nyiyapake klien ing Linux saiki cukup akeh wektu, amarga ... mbutuhake mbangun program kapisah saka sumber. Kita bakal nyoba kanggo mesthekake yen kabeh owah-owahan kalebu ing repositori resmi ing mangsa cedhak.
Kanggo mesthekake sambungan ing tingkat IPSec menyang server, paket strongswan lan daemon xl2tp digunakake. Kanggo nyederhanakake nyambungake menyang jaringan nggunakake kertu pinter, kita bakal nggunakake paket l2tp-ipsec-vpn, sing nyedhiyakake cangkang grafis kanggo persiyapan sambungan sing disederhanakake.
Ayo miwiti ngrakit unsur kanthi langkah, nanging sadurunge kita bakal nginstal kabeh paket sing dibutuhake supaya VPN bisa langsung:
sudo apt-get install xl2tpd strongswan libp11-3
Nginstal piranti lunak kanggo nggarap token
Instal perpustakaan librtpkcs11ecp.so paling anyar saka situs, uga perpustakaan kanggo nggarap kertu pinter:
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
Nginstal klien L2tpIpsecVpn
Ing wayahe, klien uga kudu dikompilasi saka kode sumber. Iki ditindakake kanthi nggunakake urutan printah ing ngisor iki:
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
Nyetel klien L2tpIpsecVpn
Bukak klien sing diinstal:
Sawise diluncurake, applet L2tpIpsecVPN kudu mbukak. Klik-tengen ing lan konfigurasi sambungan:
Kanggo nggarap token, pisanan, kita nuduhake dalan menyang mesin opensc mesin OpenSSL lan perpustakaan PKCS # 11. Kanggo nindakake iki, bukak tab "Preferensi" kanggo ngatur parameter openssl:
.
Ayo nutup jendhela setelan OpenSSL lan pindhah menyang nyetel jaringan. Ayo nambah jaringan anyar kanthi ngeklik tombol Tambah ... ing panel setelan banjur ketik jeneng jaringan:
Sawise iki, jaringan iki bakal kasedhiya ing panel setelan. Klik-tengen kaping pindho ing jaringan anyar kanggo ngatur. Ing tab pisanan sampeyan kudu nggawe setelan IPsec. Ayo nyetel alamat server lan kunci umum:
Sawise iki, pindhah menyang tab setelan PPP lan tandhani ing kono jeneng pangguna sing arep kita akses menyang jaringan:
Sawise iki, bukak tab Properties lan nemtokake path menyang kunci, sertifikat klien lan CA:
Tutup tab iki lan tindakake setelan pungkasan; kanggo nindakake iki, bukak tab "Setelan IP" lan centhang kothak ing jejere pilihan "Entuk alamat server DNS kanthi otomatis":
Opsi iki bakal ngidini klien nampa alamat IP pribadi ing jaringan saka server.
Sawise kabeh setelan, nutup kabeh tab lan miwiti maneh klien:
Nyambung menyang jaringan
Sawise setelan, sampeyan bisa nyambung menyang jaringan. Kanggo nindakake iki, bukak tab applet banjur pilih jaringan sing arep kita sambungake:
Sajrone proses panyiapan sambungan, klien bakal njaluk kita ngetik kode PIN Rutoken:
Yen kabar katon ing garis status yen sambungan wis kasil digawe, tegese persiyapan wis sukses:
Yen ora, sampeyan kudu ngerti kenapa sambungan kasebut ora digawe. Kanggo nindakake iki, sampeyan kudu ndeleng log program kanthi milih printah "Informasi sambungan" ing applet:
Nggawe klien Windows
Nyiyapake klien ing Windows luwih gampang tinimbang ing Linux, amarga ... kabeh piranti lunak sing dibutuhake wis dibangun ing sistem kasebut.
Setup Sistem
Kita bakal nginstal kabeh driver sing dibutuhake kanggo nggarap Rutokens kanthi ngundhuh saka saka. situs.
Ngimpor sertifikat ROOT kanggo otentikasi
Ngundhuh sertifikat root server lan nginstal ing sistem. Kanggo nindakake iki, bukak lan ing jendhela sing mbukak, pilih opsi "Pasang sertifikat":
Ing jendhela sing mbukak, pilih nginstal sertifikat kanggo pangguna lokal. Yen sampeyan pengin sertifikat kasedhiya kanggo kabeh pangguna ing komputer, sampeyan kudu milih nginstal sertifikat ing komputer lokal:
Ayo nginstal sertifikat kasebut ing toko sertifikat root sing dipercaya CA:
Sawise kabeh tumindak kasebut, kita setuju karo kabeh poin liyane. Sistem saiki wis diatur.
Nggawe sambungan VPN
Kanggo nyiyapake sambungan VPN, pindhah menyang panel kontrol banjur pilih opsi kanggo nggawe sambungan anyar.
Ing jendhela pop-up, pilih pilihan kanggo nggawe sambungan kanggo nyambung menyang papan kerja:
Ing jendela sabanjure, pilih sambungan VPN:
lan ketik rincian sambungan VPN, lan uga nemtokake pilihan kanggo nggunakake kertu pinter:
Persiyapan durung rampung. Kabeh sing isih ana yaiku nemtokake kunci sing dienggo bareng kanggo protokol IPsec; kanggo nindakake iki, pindhah menyang tab "Setelan sambungan jaringan" banjur pindhah menyang tab "Properti kanggo sambungan iki":
Ing jendhela sing mbukak, pindhah menyang tab "Keamanan", nemtokake "Jaringan L2TP/IPsec" minangka jinis jaringan lan pilih "Setelan Lanjut":
Ing jendhela sing mbukak, nemtokake kunci IPsec sing dienggo bareng:
Sambungan
Sawise ngrampungake persiyapan, sampeyan bisa nyoba nyambungake menyang jaringan:
Sajrone proses sambungan, kita kudu ngetik kode PIN token:
Kita wis nyiyapake jaringan VPN sing aman lan mesthekake yen ora angel.
Matur suwun
Aku arep ngucapake matur nuwun maneh marang kolega Vasily Shokov lan Alexander Smirnov kanggo karya sing wis ditindakake bebarengan kanggo nyederhanakake nggawe sambungan VPN kanggo klien Linux.