ProHoster > Blog > Ma'muriyat > Rutoken EDS 2 va Rutoken PKI yordamida L2.0TP tarmog'ida autentifikatsiyani o'rnatish
Rutoken EDS 2 va Rutoken PKI yordamida L2.0TP tarmog'ida autentifikatsiyani o'rnatish
Muammolar
Yaqinda ko'pchilik uyda ishlash nima ekanligini bilmas edi. Pandemiya dunyodagi vaziyatni keskin o'zgartirdi, hamma hozirgi sharoitga moslasha boshladi, ya'ni uydan chiqish shunchaki xavfli bo'lib qolgan. Va ko'pchilik o'z xodimlari uchun uydan ishlashni tezda tashkil etishga majbur bo'ldi.
Biroq, masofaviy ish uchun echimlarni tanlashda vakolatli yondashuvning yo'qligi qaytarib bo'lmaydigan yo'qotishlarga olib kelishi mumkin. Foydalanuvchi parollari o'g'irlanishi mumkin va bu tajovuzkorga korxonaning tarmoq va IT resurslariga nazoratsiz ulanish imkonini beradi.
Shuning uchun ishonchli korporativ VPN tarmoqlarini yaratishga bo'lgan ehtiyoj endi ortdi. Men sizga bu haqda aytib beraman ishonchli, xavfsiz ΠΈ oddiy VPN tarmog'idan foydalanishda.
U IPsec/L2TP sxemasiga muvofiq ishlaydi, u mijozlarni autentifikatsiya qilish uchun tokenlarda saqlangan qaytarib bo'lmaydigan kalitlar va sertifikatlardan foydalanadi, shuningdek, ma'lumotlarni tarmoq orqali shifrlangan shaklda uzatadi.
Konfiguratsiya uchun namoyish stendlari sifatida CentOS 7 serveri (manzil: centos.vpn.server.ad) va Ubuntu 20.04-ga ega mijoz, shuningdek, Windows 10-ga ega mijoz ishlatilgan.
Tizim tavsifi
VPN IPSec + L2TP + PPP sxemasiga muvofiq ishlaydi. Protokol Nuqtadan nuqtaga protokoli (PPP) OSI modelining ma'lumotlar havolasi qatlamida ishlaydi va foydalanuvchi autentifikatsiyasini va uzatilgan ma'lumotlarni shifrlashni ta'minlaydi. Uning ma'lumotlari L2TP protokoli ma'lumotlariga kiritilgan bo'lib, u aslida VPN tarmog'ida ulanishni yaratishni ta'minlaydi, ammo autentifikatsiya va shifrlashni ta'minlamaydi.
L2TP ma'lumotlari IPSec-da inkapsullangan bo'lib, u autentifikatsiya va shifrlashni ham ta'minlaydi, ammo PPP dan farqli o'laroq, autentifikatsiya va shifrlash foydalanuvchi darajasida emas, balki qurilma darajasida sodir bo'ladi.
Bu xususiyat foydalanuvchilarni faqat ma'lum qurilmalardan autentifikatsiya qilish imkonini beradi. Biz IPSec protokolidan avvalgidek foydalanamiz va har qanday qurilmadan foydalanuvchi autentifikatsiyasiga ruxsat beramiz.
Smart kartalar yordamida foydalanuvchi autentifikatsiyasi EAP-TLS protokoli yordamida PPP protokoli darajasida amalga oshiriladi.
Ushbu sxemaning ishlashi haqida batafsil ma'lumotni quyidagi havolada topishingiz mumkin Ushbu maqola.
Nima uchun bu sxema yaxshi VPN tarmog'ining uchta talabiga javob beradi?
Ushbu sxemaning ishonchliligi vaqt sinovidan o'tgan. U 2000 yildan beri VPN tarmoqlarini o'rnatish uchun foydalaniladi.
Xavfsiz foydalanuvchi autentifikatsiyasi PPP protokoli bilan ta'minlanadi. Pol Makerras tomonidan ishlab chiqilgan PPP protokolining standart amalga oshirilishi etarli darajada xavfsizlikni ta'minlamaydi, chunki Autentifikatsiya qilish uchun, eng yaxshi holatda, login va parol yordamida autentifikatsiya qo'llaniladi. Biz hammamiz bilamizki, login paroli josuslik qilish, taxmin qilish yoki o'g'irlash mumkin. Biroq, uzoq vaqtdan beri ishlab chiquvchi Jan Faqat Keyjser Π² uning amalga oshirilishi Ushbu protokol ushbu muammoni tuzatdi va autentifikatsiya qilish uchun EAP-TLS kabi assimetrik shifrlashga asoslangan protokollardan foydalanish imkoniyatini qo'shdi. Bundan tashqari, u autentifikatsiya qilish uchun smart-kartalardan foydalanish imkoniyatini qo'shdi, bu esa tizimni yanada xavfsizroq qildi.
Ayni paytda ushbu ikki loyihani birlashtirish bo'yicha faol muzokaralar olib borilmoqda va ertami-kechmi bu baribir sodir bo'lishiga ishonchingiz komil. Masalan, PPP ning yamalgan versiyasi autentifikatsiya qilish uchun xavfsiz protokollardan foydalangan holda uzoq vaqt davomida Fedora omborlarida mavjud.
Yaqin vaqtgacha ushbu tarmoqdan faqat Windows foydalanuvchilari foydalanishi mumkin edi, ammo Moskva davlat universitetidagi hamkasblarimiz Vasiliy Shokov va Aleksandr Smirnov buni aniqladilar. Linux uchun eski L2TP mijoz loyihasi va uni o'zgartirdi. Birgalikda biz mijozning ishidagi ko'plab xato va kamchiliklarni tuzatdik, tizimni o'rnatish va sozlashni soddalashtirdik, hatto manbadan qurishda ham. Ulardan eng muhimlari:
Openssl va qt ning yangi versiyalari interfeysi bilan eski mijozning moslik muammolari tuzatildi.
Vaqtinchalik fayl orqali token PIN-kodini o'tkazishdan pppd olib tashlandi.
Grafik interfeys orqali parol so'rash dasturining noto'g'ri ishga tushirilishi tuzatildi. Bu xl2tpd xizmati uchun to'g'ri muhitni o'rnatish orqali amalga oshirildi.
L2tpIpsecVpn demonini qurish endi mijozning o'zini qurish bilan birga amalga oshiriladi, bu esa qurish va sozlash jarayonini soddalashtiradi.
Rivojlanish qulayligi uchun Azure Pipelines tizimi tuzilishning to'g'riligini tekshirish uchun ulangan.
Majburiy pasaytirish qobiliyati qo'shildi xavfsizlik darajasi openssl kontekstida. Bu standart xavfsizlik darajasi 2 ga o'rnatilgan yangi operatsion tizimlarni to'g'ri qo'llab-quvvatlash uchun foydalidir, VPN tarmoqlari ushbu darajadagi xavfsizlik talablariga javob bermaydigan sertifikatlardan foydalanadi. Ushbu parametr mavjud eski VPN tarmoqlari bilan ishlash uchun foydali bo'ladi.
Tuzatilgan versiyani quyidagi manzilda topish mumkin bu ombor.
Ushbu mijoz autentifikatsiya qilish uchun smart-kartalardan foydalanishni qo'llab-quvvatlaydi, shuningdek, Linux ostida ushbu sxemani o'rnatishning barcha qiyinchiliklari va qiyinchiliklarini iloji boricha yashiradi, mijozni sozlashni iloji boricha sodda va tez qiladi.
Albatta, PPP va mijoz GUI o'rtasida qulay ulanish uchun loyihalarning har biriga qo'shimcha tahrirlarsiz amalga oshirish mumkin emas edi, ammo shunga qaramay ular minimallashtirildi va minimal darajaga tushirildi:
Tugallangan konfiguratsiyani yuklash va openssl kontekstini ishga tushirish tartibidagi xato. Ushbu xatolik bizga mahalliy /etc/ppp/openssl.cnf konfiguratsiya faylidan smart-kartalar bilan ishlash uchun openssl dvigatellari haqidagi ma'lumotlardan tashqari hech narsani yuklashga imkon bermadi, bu esa, masalan, dvigatellar haqidagi ma'lumotlarga qo'shimcha ravishda, jiddiy noqulaylik tug'dirdi. biz boshqa narsani o'rnatmoqchi edik. Masalan, ulanishni o'rnatishda xavfsizlik darajasini belgilang.
Endi siz sozlashni boshlashingiz mumkin.
Serverni sozlash
Keling, barcha kerakli paketlarni o'rnatamiz.
Strongswan (IPsec) o'rnatilmoqda
Avvalo, ipsec ishlashi uchun xavfsizlik devorini sozlaymiz
Shuningdek, biz umumiy kirish parolini o'rnatamiz. Umumiy parol autentifikatsiya qilish uchun barcha tarmoq ishtirokchilariga ma'lum bo'lishi kerak. Bu usul shubhasiz ishonchsizdir, chunki ushbu parol biz tarmoqqa kirishni istamagan shaxslarga osongina ma'lum bo'lishi mumkin.
Biroq, hatto bu haqiqat tarmoq xavfsizligiga ta'sir qilmaydi, chunki Asosiy ma'lumotlarni shifrlash va foydalanuvchi autentifikatsiyasi PPP protokoli orqali amalga oshiriladi. Ammo adolat uchun shuni ta'kidlash kerakki, strongswan autentifikatsiya qilish uchun xavfsizroq texnologiyalarni qo'llab-quvvatlaydi, masalan, shaxsiy kalitlardan foydalanish. Strongswan, shuningdek, smart-kartalar yordamida autentifikatsiyani ta'minlash imkoniyatiga ega, ammo hozircha faqat cheklangan miqdordagi qurilmalar qo'llab-quvvatlanadi va shuning uchun Rutoken tokenlari va smart-kartalari yordamida autentifikatsiya qilish hali ham qiyin. Fayl orqali umumiy parol o'rnatamiz /etc/strongswan/ipsec.secrets:
Shunday qilib, biz asosiy serverni sozlashni tugatdik. Server konfiguratsiyasining qolgan qismi yangi mijozlarni qo'shishni o'z ichiga oladi.
Yangi mijoz qo'shish
Tarmoqqa yangi mijoz qo'shish uchun uning sertifikatini ushbu mijoz uchun ishonchlilar ro'yxatiga qo'shishingiz kerak.
Agar foydalanuvchi VPN tarmog'iga a'zo bo'lishni istasa, u ushbu mijoz uchun kalit juftligi va sertifikat ilovasini yaratadi. Agar foydalanuvchi ishonchli bo'lsa, u holda ushbu ilova imzolanishi mumkin va natijada sertifikat sertifikatlar katalogiga yozilishi mumkin:
ESLATMA
Chalkashmaslik uchun: Umumiy nom, sertifikat fayli nomi va foydalanuvchi nomi yagona bo'lishi yaxshiroqdir.
Bundan tashqari, biz qo'shayotgan foydalanuvchi nomi boshqa autentifikatsiya fayllarida ko'rinmasligini tekshirishga arziydi, aks holda foydalanuvchi autentifikatsiya qilish usuli bilan bog'liq muammolar paydo bo'ladi.
Xuddi shu sertifikat foydalanuvchiga qaytarilishi kerak.
Kalitlar juftligi va sertifikat yaratish
Muvaffaqiyatli autentifikatsiya qilish uchun mijoz:
kalit juftligini yaratish;
CA ildiz sertifikatiga ega bo'lish;
ildiz CA tomonidan imzolangan kalit juftligingiz uchun sertifikatga ega bo'ling.
Linuxda mijoz uchun
Birinchidan, tokenda kalit juftligini yaratamiz va sertifikat uchun dastur yaratamiz:
CAga paydo bo'lgan client.req ilovasini yuboring. Kalit juftligingiz uchun sertifikat olganingizdan so'ng, uni kalit bilan bir xil identifikatorli tokenga yozing:
Bu usul ko'proq universaldir, chunki Windows va Linux foydalanuvchilari tomonidan muvaffaqiyatli tan olinadigan kalit va sertifikat yaratish imkonini beradi, lekin kalit yaratish jarayonini amalga oshirish uchun Windows mashinasi talab qilinadi.
So'rovlarni yaratish va sertifikatlarni import qilishdan oldin VPN tarmog'ining ildiz sertifikatini ishonchlilar ro'yxatiga qo'shishingiz kerak. Buning uchun uni oching va ochilgan oynada "Sertifikatni o'rnatish" variantini tanlang:
Ochilgan oynada mahalliy foydalanuvchi uchun sertifikat o'rnatishni tanlang:
Keling, sertifikatni CAning ishonchli ildiz sertifikatlari do'koniga o'rnatamiz:
Ushbu harakatlardan so'ng, biz barcha boshqa fikrlarga qo'shilamiz. Endi tizim sozlangan.
Keling, quyidagi tarkibga ega cert.tmp faylini yaratamiz:
Shundan so'ng biz kalit juftligini yaratamiz va sertifikat uchun ariza yaratamiz. Buning uchun powershell-ni oching va quyidagi buyruqni kiriting:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Yaratilgan client.req ilovasini CA ga yuboring va client.pem sertifikati olinishini kuting. Uni tokenga yozish va quyidagi buyruq yordamida Windows sertifikatlar doΚ»koniga qoΚ»shish mumkin:
certreq.exe -accept .client.pem
Shuni ta'kidlash kerakki, shunga o'xshash harakatlar mmc dasturining grafik interfeysi yordamida takrorlanishi mumkin, ammo bu usul ko'proq vaqt talab qiladi va kamroq dasturlashtiriladi.
Ubuntu mijozini sozlash
ESLATMA
Linuxda mijozni o'rnatish hozirda ancha vaqt talab etadi, chunki... manbadan alohida dasturlarni yaratishni talab qiladi. Yaqin kelajakda barcha o'zgarishlar rasmiy omborlarga kiritilishini ta'minlashga harakat qilamiz.
Serverga IPSec darajasida ulanishni ta'minlash uchun strongswan paketi va xl2tp demonidan foydalaniladi. Smart kartalar yordamida tarmoqqa ulanishni soddalashtirish uchun biz soddalashtirilgan ulanishni sozlash uchun grafik qobiqni ta'minlovchi l2tp-ipsec-vpn paketidan foydalanamiz.
Keling, bosqichma-bosqich elementlarni yig'ishni boshlaylik, ammo bundan oldin VPN to'g'ridan-to'g'ri ishlashi uchun barcha kerakli paketlarni o'rnatamiz:
sudo apt-get install xl2tpd strongswan libp11-3
Tokenlar bilan ishlash uchun dasturiy ta'minotni o'rnatish
Eng so'nggi librtpkcs11ecp.so kutubxonasini o'rnating sayt, shuningdek, smart-kartalar bilan ishlash uchun kutubxonalar:
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
L2tpIpsecVpn mijozi o'rnatilmoqda
Ayni paytda mijoz ham manba kodidan kompilyatsiya qilinishi kerak. Bu quyidagi buyruqlar ketma-ketligi yordamida amalga oshiriladi:
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
L2tpIpsecVpn mijozini sozlash
O'rnatilgan mijozni ishga tushiring:
Ishga tushgandan so'ng, L2tpIpsecVPN ilovasi ochilishi kerak. Unga o'ng tugmasini bosing va ulanishni sozlang:
Tokenlar bilan ishlash uchun, birinchi navbatda, biz OpenSSL dvigatelining opensc dvigateliga va PKCS#11 kutubxonasiga yo'lni ko'rsatamiz. Buning uchun openssl parametrlarini sozlash uchun "Sozlamalar" yorlig'ini oching:
.
Keling, OpenSSL sozlamalari oynasini yopamiz va tarmoqni sozlashga o'tamiz. Sozlamalar panelidagi Qoβshish... tugmasini bosish orqali yangi tarmoq qoβshamiz va tarmoq nomini kiritamiz:
Shundan so'ng, ushbu tarmoq sozlamalar panelida mavjud bo'ladi. Yangi tarmoqni sozlash uchun sichqonchaning o'ng tugmachasini ikki marta bosing. Birinchi yorliqda siz IPsec sozlamalarini o'rnatishingiz kerak. Server manzili va ochiq kalitni o'rnatamiz:
Shundan so'ng, PPP sozlamalari yorlig'iga o'ting va u erda biz tarmoqqa kirmoqchi bo'lgan foydalanuvchi nomini ko'rsating:
Shundan so'ng, Xususiyatlar yorlig'ini oching va kalit, mijoz sertifikati va CA yo'lini belgilang:
Keling, ushbu yorliqni yopamiz va yakuniy sozlamalarni bajaramiz; buning uchun "IP sozlamalari" yorlig'ini oching va "DNS server manzilini avtomatik ravishda olish" opsiyasi yonidagi katakchani belgilang:
Ushbu parametr mijozga serverdan tarmoq ichida shaxsiy IP manzilini olish imkonini beradi.
Barcha sozlamalardan so'ng barcha yorliqlarni yoping va mijozni qayta ishga tushiring:
Tarmoqqa ulanish
Sozlamalardan so'ng siz tarmoqqa ulanishingiz mumkin. Buning uchun applet yorlig'ini oching va biz ulanmoqchi bo'lgan tarmoqni tanlang:
Ulanishni o'rnatish jarayonida mijoz bizdan Rutoken PIN kodini kiritishimizni so'raydi:
Agar holat satrida ulanish muvaffaqiyatli o'rnatilganligi haqida bildirishnoma paydo bo'lsa, bu o'rnatish muvaffaqiyatli bo'lganligini anglatadi:
Aks holda, nima uchun ulanish o'rnatilmaganligini aniqlashga arziydi. Buning uchun appletdagi "Ulanish ma'lumotlari" buyrug'ini tanlab, dastur jurnaliga qarashingiz kerak:
Windows mijozini sozlash
Windows-da mijozni sozlash Linux-ga qaraganda ancha oson, chunki... Barcha kerakli dasturiy ta'minot allaqachon tizimga o'rnatilgan.
Tizimni sozlash
Biz Rutokens bilan ishlash uchun barcha kerakli drayverlarni yuklab olish orqali o'rnatamiz ning. sayt.
Autentifikatsiya qilish uchun ildiz sertifikati import qilinmoqda
Serverning ildiz sertifikatini yuklab oling va uni tizimga o'rnating. Buning uchun uni oching va ochilgan oynada "Sertifikatni o'rnatish" variantini tanlang:
Ochilgan oynada mahalliy foydalanuvchi uchun sertifikat o'rnatishni tanlang. Agar siz sertifikat kompyuterdagi barcha foydalanuvchilar uchun mavjud bo'lishini istasangiz, sertifikatni mahalliy kompyuterga o'rnatishni tanlashingiz kerak:
Keling, sertifikatni CAning ishonchli ildiz sertifikatlari do'koniga o'rnatamiz:
Ushbu harakatlardan so'ng, biz barcha boshqa fikrlarga qo'shilamiz. Endi tizim sozlangan.
VPN ulanishini sozlash
VPN ulanishini o'rnatish uchun boshqaruv paneliga o'ting va yangi ulanishni yaratish variantini tanlang.
Qalqib chiquvchi oynada ish joyingizga ulanish uchun ulanishni yaratish variantini tanlang:
Keyingi oynada VPN ulanishini tanlang:
va VPN ulanish ma'lumotlarini kiriting, shuningdek smart-kartadan foydalanish variantini belgilang:
Sozlash hali tugallanmagan. IPsec protokoli uchun umumiy kalitni belgilash qoladi, buning uchun "Tarmoq ulanishi sozlamalari" yorlig'iga o'ting va keyin "Ushbu ulanish uchun xususiyatlar" yorlig'iga o'ting:
Ochilgan oynada "Xavfsizlik" yorlig'iga o'ting, tarmoq turi sifatida "L2TP/IPsec Network" ni belgilang va "Kengaytirilgan sozlamalar" ni tanlang:
Ochilgan oynada umumiy IPsec kalitini belgilang:
Podklyuchenie
Sozlashni tugatgandan so'ng, siz tarmoqqa ulanishga urinib ko'rishingiz mumkin:
Ulanish jarayonida bizdan token PIN kodini kiritishimiz talab qilinadi:
Biz xavfsiz VPN tarmog'ini o'rnatdik va bu qiyin emasligiga ishonch hosil qildik.
Rahmatlar
Men yana bir bor hamkasblarimiz Vasiliy Shokov va Aleksandr Smirnovga Linux mijozlari uchun VPN ulanishlarini yaratishni soddalashtirish boβyicha birgalikda qilgan ishlari uchun minnatdorchilik bildirmoqchiman.