ProHoster > Blog > Pentadbiran > Menyediakan pengesahan dalam rangkaian L2TP menggunakan Rutoken EDS 2.0 dan Rutoken PKI
Menyediakan pengesahan dalam rangkaian L2TP menggunakan Rutoken EDS 2.0 dan Rutoken PKI
Isu
Baru-baru ini, ramai yang tidak tahu bagaimana rasanya bekerja dari rumah. Pandemik telah mengubah keadaan di dunia secara dramatik; setiap orang telah mula menyesuaikan diri dengan keadaan semasa, iaitu hakikat bahawa ia menjadi tidak selamat untuk meninggalkan rumah. Dan ramai yang terpaksa mengatur kerja dari rumah dengan cepat untuk pekerja mereka.
Walau bagaimanapun, kekurangan pendekatan yang cekap untuk memilih penyelesaian untuk kerja jauh boleh membawa kepada kerugian yang tidak dapat dipulihkan. Kata laluan pengguna boleh dicuri, dan ini akan membolehkan penyerang menyambung tanpa kawalan ke rangkaian dan sumber IT perusahaan.
Itulah sebabnya keperluan untuk mencipta rangkaian VPN korporat yang boleh dipercayai kini telah meningkat. Saya akan memberitahu anda tentang boleh dipercayai, selamat ΠΈ mudah dalam menggunakan rangkaian VPN.
Ia berfungsi mengikut skema IPsec/L2TP, yang menggunakan kunci dan sijil yang tidak boleh didapatkan semula yang disimpan pada token untuk mengesahkan pelanggan, dan juga menghantar data melalui rangkaian dalam bentuk yang disulitkan.
Pelayan dengan CentOS 7 (alamat: centos.vpn.server.ad) dan klien dengan Ubuntu 20.04, serta klien dengan Windows 10, digunakan sebagai singkatan demonstrasi untuk konfigurasi.
Penerangan sistem
VPN akan berfungsi mengikut skema IPSec + L2TP + PPP. Protokol Protokol Point-to-Point (PPP) beroperasi pada lapisan pautan data model OSI dan menyediakan pengesahan pengguna dan penyulitan data yang dihantar. Datanya terkandung dalam data protokol L2TP, yang sebenarnya memastikan penciptaan sambungan dalam rangkaian VPN, tetapi tidak menyediakan pengesahan dan penyulitan.
Data L2TP dikapsulkan dalam IPSec, yang juga menyediakan pengesahan dan penyulitan, tetapi tidak seperti PPP, pengesahan dan penyulitan berlaku pada peringkat peranti, bukan pada peringkat pengguna.
Ciri ini membolehkan anda mengesahkan pengguna hanya dari peranti tertentu. Kami akan menggunakan protokol IPSec sebagaimana adanya dan membenarkan pengesahan pengguna dari mana-mana peranti.
Pengesahan pengguna menggunakan kad pintar akan dilakukan pada peringkat protokol PPP menggunakan protokol EAP-TLS.
Maklumat lebih terperinci tentang pengendalian litar ini boleh didapati di artikel ini.
Mengapakah skim ini memenuhi ketiga-tiga keperluan rangkaian VPN yang baik?
Kebolehpercayaan skim ini telah diuji oleh masa. Ia telah digunakan untuk menggunakan rangkaian VPN sejak tahun 2000.
Pengesahan pengguna selamat disediakan oleh protokol PPP. Pelaksanaan standard protokol PPP yang dibangunkan oleh Paul Mackerras tidak menyediakan tahap keselamatan yang mencukupi, kerana Untuk pengesahan, dalam kes terbaik, pengesahan menggunakan log masuk dan kata laluan digunakan. Kita semua tahu bahawa kata laluan log masuk boleh diintip, diteka atau dicuri. Walau bagaimanapun, untuk masa yang lama kini pemaju Jan Just Keijser Π² pelaksanaannya Protokol ini membetulkan isu ini dan menambahkan keupayaan untuk menggunakan protokol berdasarkan penyulitan asimetri, seperti EAP-TLS, untuk pengesahan. Di samping itu, beliau menambah keupayaan untuk menggunakan kad pintar untuk pengesahan, yang menjadikan sistem lebih selamat.
Pada masa ini, rundingan aktif sedang dijalankan untuk menggabungkan kedua-dua projek ini dan anda boleh yakin bahawa lambat laun ini akan berlaku juga. Sebagai contoh, versi PPP yang ditampal telah berada dalam repositori Fedora untuk masa yang lama, menggunakan protokol selamat untuk pengesahan.
Sehingga baru-baru ini, rangkaian ini hanya boleh digunakan oleh pengguna Windows, tetapi rakan sekerja kami dari Moscow State University Vasily Shokov dan Alexander Smirnov mendapati projek klien L2TP lama untuk Linux dan mengubahsuainya. Bersama-sama, kami membetulkan banyak pepijat dan kekurangan dalam kerja pelanggan, memudahkan pemasangan dan konfigurasi sistem, walaupun semasa membina daripada sumber. Yang paling ketara daripada mereka ialah:
Memperbaiki masalah keserasian pelanggan lama dengan antara muka versi baharu openssl dan qt.
Mengalih keluar pppd daripada menghantar PIN token melalui fail sementara.
Memperbaiki pelancaran program permintaan kata laluan yang salah melalui antara muka grafik. Ini dilakukan dengan memasang persekitaran yang betul untuk perkhidmatan xl2tpd.
Binaan daemon L2tpIpsecVpn kini dijalankan bersama-sama dengan binaan klien itu sendiri, yang memudahkan proses binaan dan konfigurasi.
Untuk kemudahan pembangunan, sistem Azure Pipelines disambungkan untuk menguji ketepatan binaan.
Menambah keupayaan untuk menurunkan taraf secara paksa tahap keselamatan dalam konteks openssl. Ini berguna untuk menyokong sistem pengendalian baharu dengan betul di mana tahap keselamatan standard ditetapkan kepada 2, dengan rangkaian VPN yang menggunakan sijil yang tidak memenuhi keperluan keselamatan tahap ini. Pilihan ini berguna untuk bekerja dengan rangkaian VPN lama sedia ada.
Versi yang diperbetulkan boleh didapati di repositori ini.
Pelanggan ini menyokong penggunaan kad pintar untuk pengesahan, dan juga menyembunyikan sebanyak mungkin semua kesusahan dan kepayahan untuk menyediakan skim ini di bawah Linux, menjadikan persediaan pelanggan semudah dan secepat mungkin.
Sudah tentu, untuk sambungan yang mudah antara PPP dan GUI pelanggan, tidak mungkin tanpa suntingan tambahan untuk setiap projek, tetapi bagaimanapun ia diminimumkan dan dikurangkan kepada minimum:
tetap ralat dalam susunan memuatkan konfigurasi dan memulakan konteks openssl. Ralat ini tidak membenarkan kami memuatkan apa-apa daripada fail konfigurasi /etc/ppp/openssl.cnf setempat kecuali maklumat tentang enjin openssl untuk bekerja dengan kad pintar, yang merupakan kesulitan yang serius jika, sebagai contoh, sebagai tambahan kepada maklumat tentang enjin, kami mahu menetapkan sesuatu yang lain. Contohnya, betulkan tahap keselamatan semasa membuat sambungan.
Sekarang anda boleh mula menyediakan.
Penalaan Pelayan
Mari pasang semua pakej yang diperlukan.
Memasang strongswan (IPsec)
Pertama sekali, mari kita konfigurasikan tembok api untuk operasi ipsec
Kami juga akan menetapkan kata laluan log masuk biasa. Kata laluan yang dikongsi mesti diketahui oleh semua peserta rangkaian untuk pengesahan. Kaedah ini jelas tidak boleh dipercayai, kerana kata laluan ini boleh diketahui dengan mudah oleh individu yang kami tidak mahu memberikan akses kepada rangkaian.
Walau bagaimanapun, walaupun fakta ini tidak akan menjejaskan keselamatan rangkaian, kerana Penyulitan data asas dan pengesahan pengguna dijalankan oleh protokol PPP. Tetapi dalam keadilan, perlu diperhatikan bahawa strongswan menyokong teknologi yang lebih selamat untuk pengesahan, contohnya, menggunakan kunci peribadi. Strongswan juga mempunyai keupayaan untuk menyediakan pengesahan menggunakan kad pintar, tetapi setakat ini hanya rangkaian terhad peranti yang disokong dan oleh itu pengesahan menggunakan token Rutoken dan kad pintar masih sukar. Mari kita tetapkan kata laluan umum melalui fail /etc/strongswan/ipsec.secrets:
Oleh itu, kami telah selesai dengan persediaan pelayan asas. Selebihnya konfigurasi pelayan melibatkan penambahan pelanggan baharu.
Menambah pelanggan baharu
Untuk menambah pelanggan baharu pada rangkaian, anda mesti menambah sijilnya pada senarai yang dipercayai untuk klien ini.
Jika pengguna ingin menjadi ahli rangkaian VPN, dia mencipta pasangan kunci dan aplikasi sijil untuk pelanggan ini. Jika pengguna dipercayai, maka aplikasi ini boleh ditandatangani, dan sijil yang terhasil boleh ditulis ke direktori sijil:
NOTA
Untuk mengelakkan kekeliruan, adalah lebih baik: Nama Biasa, nama fail sijil dan nama pengguna adalah unik.
Ia juga bernilai menyemak bahawa nama pengguna yang kami tambahkan tidak muncul di mana-mana dalam fail pengesahan lain, jika tidak, akan ada masalah dengan cara pengguna disahkan.
Sijil yang sama mesti dihantar semula kepada pengguna.
Menjana pasangan kunci dan sijil
Untuk pengesahan yang berjaya, pelanggan mesti:
menjana pasangan kunci;
mempunyai sijil akar CA;
mempunyai sijil untuk pasangan kunci anda yang ditandatangani oleh CA akar.
untuk pelanggan di Linux
Mula-mula, mari kita hasilkan pasangan kunci pada token dan buat aplikasi untuk sijil:
Hantar aplikasi client.req yang muncul kepada CA. Sebaik sahaja anda menerima sijil untuk pasangan kunci anda, tuliskannya pada token dengan id yang sama seperti kunci:
untuk pelanggan Windows dan Linux (kaedah yang lebih universal)
Kaedah ini lebih universal, kerana membolehkan anda menjana kunci dan sijil yang akan berjaya diiktiraf oleh pengguna Windows dan Linux, tetapi ia memerlukan mesin Windows untuk menjalankan prosedur penjanaan kunci.
Sebelum menjana permintaan dan mengimport sijil, anda mesti menambah sijil akar rangkaian VPN pada senarai yang dipercayai. Untuk melakukan ini, bukanya dan dalam tetingkap yang terbuka, pilih pilihan "Pasang sijil":
Dalam tetingkap yang terbuka, pilih memasang sijil untuk pengguna tempatan:
Mari pasang sijil dalam stor sijil akar yang dipercayai CA:
Selepas semua tindakan ini, kami bersetuju dengan semua perkara selanjutnya. Sistem kini dikonfigurasikan.
Selepas ini, kami akan menjana pasangan kunci dan membuat permohonan untuk sijil. Untuk melakukan ini, buka powershell dan masukkan arahan berikut:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Hantar client.req aplikasi yang dibuat ke CA anda dan tunggu sijil client.pem diterima. Ia boleh ditulis pada token dan ditambah ke kedai sijil Windows menggunakan arahan berikut:
certreq.exe -accept .client.pem
Perlu diingat bahawa tindakan serupa boleh dihasilkan semula menggunakan antara muka grafik program mmc, tetapi kaedah ini lebih memakan masa dan kurang boleh diprogramkan.
Menyediakan klien Ubuntu
NOTA
Menyediakan pelanggan di Linux pada masa ini agak memakan masa, kerana... memerlukan membina program berasingan daripada sumber. Kami akan cuba memastikan semua perubahan dimasukkan ke dalam repositori rasmi dalam masa terdekat.
Untuk memastikan sambungan pada tahap IPSec ke pelayan, pakej strongswan dan daemon xl2tp digunakan. Untuk memudahkan penyambungan ke rangkaian menggunakan kad pintar, kami akan menggunakan pakej l2tp-ipsec-vpn, yang menyediakan cangkerang grafik untuk persediaan sambungan yang dipermudahkan.
Mari mulakan memasang elemen langkah demi langkah, tetapi sebelum itu kami akan memasang semua pakej yang diperlukan untuk VPN berfungsi secara langsung:
sudo apt-get install xl2tpd strongswan libp11-3
Memasang perisian untuk bekerja dengan token
Pasang perpustakaan librtpkcs11ecp.so terkini daripada laman web ini, juga perpustakaan untuk bekerja dengan kad pintar:
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
Memasang klien L2tpIpsecVpn
Pada masa ini, pelanggan juga perlu disusun daripada kod sumber. Ini dilakukan menggunakan urutan arahan berikut:
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
Menyediakan klien L2tpIpsecVpn
Lancarkan klien yang dipasang:
Selepas pelancaran, applet L2tpIpsecVPN harus dibuka. Klik kanan padanya dan konfigurasikan sambungan:
Untuk bekerja dengan token, pertama sekali, kami menunjukkan laluan ke enjin opensc enjin OpenSSL dan perpustakaan PKCS#11. Untuk melakukan ini, buka tab "Keutamaan" untuk mengkonfigurasi parameter openssl:
.
Mari tutup tetingkap tetapan OpenSSL dan teruskan untuk menyediakan rangkaian. Mari tambah rangkaian baharu dengan mengklik butang Tambah... dalam panel tetapan dan masukkan nama rangkaian:
Selepas ini, rangkaian ini akan tersedia dalam panel tetapan. Klik dua kali kanan pada rangkaian baharu untuk mengkonfigurasinya. Pada tab pertama anda perlu membuat tetapan IPsec. Mari kita tetapkan alamat pelayan dan kunci awam:
Selepas ini, pergi ke tab tetapan PPP dan nyatakan di sana nama pengguna yang mana kami ingin mengakses rangkaian:
Selepas ini, buka tab Properties dan tentukan laluan ke kunci, sijil pelanggan dan CA:
Mari tutup tab ini dan lakukan tetapan akhir; untuk melakukan ini, buka tab "tetapan IP" dan tandai kotak di sebelah pilihan "Dapatkan alamat pelayan DNS secara automatik":
Pilihan ini akan membolehkan pelanggan menerima alamat IP peribadi dalam rangkaian daripada pelayan.
Selepas semua tetapan, tutup semua tab dan mulakan semula klien:
Sambungan rangkaian
Selepas tetapan, anda boleh menyambung ke rangkaian. Untuk melakukan ini, buka tab applet dan pilih rangkaian yang ingin kami sambungkan:
Semasa proses penubuhan sambungan, pelanggan akan meminta kami memasukkan kod PIN Rutoken:
Jika pemberitahuan muncul dalam bar status bahawa sambungan telah berjaya diwujudkan, ini bermakna persediaan telah berjaya:
Jika tidak, ia patut memikirkan mengapa sambungan tidak diwujudkan. Untuk melakukan ini, anda harus melihat log program dengan memilih arahan "Maklumat sambungan" dalam applet:
Menyediakan klien Windows
Menyediakan klien pada Windows adalah lebih mudah daripada Linux, kerana... Semua perisian yang diperlukan telah dibina ke dalam sistem.
Persediaan Sistem
Kami akan memasang semua pemacu yang diperlukan untuk bekerja dengan Rutokens dengan memuat turunnya dari daripada. tapak.
Mengimport sijil akar untuk pengesahan
Muat turun sijil akar pelayan dan pasangkannya pada sistem. Untuk melakukan ini, bukanya dan dalam tetingkap yang terbuka, pilih pilihan "Pasang sijil":
Dalam tetingkap yang terbuka, pilih memasang sijil untuk pengguna tempatan. Jika anda mahu sijil tersedia kepada semua pengguna pada komputer, maka anda harus memilih untuk memasang sijil pada komputer tempatan:
Mari pasang sijil dalam stor sijil akar yang dipercayai CA:
Selepas semua tindakan ini, kami bersetuju dengan semua perkara selanjutnya. Sistem kini dikonfigurasikan.
Menyediakan sambungan VPN
Untuk menyediakan sambungan VPN, pergi ke panel kawalan dan pilih pilihan untuk membuat sambungan baharu.
Dalam tetingkap pop timbul, pilih pilihan untuk membuat sambungan untuk menyambung ke tempat kerja anda:
Dalam tetingkap seterusnya, pilih sambungan VPN:
dan masukkan butiran sambungan VPN, dan juga tentukan pilihan untuk menggunakan kad pintar:
Persediaan masih belum lengkap. Yang tinggal hanyalah untuk menentukan kunci kongsi untuk protokol IPsec; untuk melakukan ini, pergi ke tab "Tetapan sambungan rangkaian" dan kemudian pergi ke tab "Properties untuk sambungan ini":
Dalam tetingkap yang terbuka, pergi ke tab "Keselamatan", tentukan "Rangkaian L2TP/IPsec" sebagai jenis rangkaian dan pilih "Tetapan Lanjutan":
Dalam tetingkap yang terbuka, nyatakan kunci IPsec yang dikongsi:
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Selepas melengkapkan persediaan, anda boleh cuba menyambung ke rangkaian:
Semasa proses sambungan, kami akan dikehendaki memasukkan kod PIN token:
Kami telah menyediakan rangkaian VPN yang selamat dan memastikan bahawa ia tidak sukar.
Ucapan terima kasih
Saya ingin sekali lagi mengucapkan terima kasih kepada rakan sekerja kami Vasily Shokov dan Alexander Smirnov atas kerja yang telah mereka lakukan bersama untuk memudahkan penciptaan sambungan VPN untuk pelanggan Linux.