ProHoster > Blog > Ma'muriyat > USB token yordamida saytda ikki faktorli autentifikatsiya. Endi Linux uchun ham
USB token yordamida saytda ikki faktorli autentifikatsiya. Endi Linux uchun ham
Π oldingi maqolalarimizdan biri kompaniyalarning korporativ portallarida ikki faktorli autentifikatsiyaning ahamiyati haqida gaplashdik. Oxirgi marta biz IIS veb-serverida xavfsiz autentifikatsiyani qanday o'rnatishni ko'rsatdik.
Sharhlarda bizdan Linux uchun eng keng tarqalgan veb-serverlar - nginx va Apache uchun ko'rsatmalar yozishni so'rashdi.
Siz so'radingiz - biz yozdik.
Boshlash uchun nima kerak?
Har qanday zamonaviy Linux tarqatish. Men MX Linux 18.2_x64 da test o'rnatdim. Bu, albatta, server taqsimoti emas, lekin Debian uchun farqlar bo'lishi dargumon. Boshqa tarqatishlar uchun konfiguratsiya kutubxonalariga yo'llar biroz farq qilishi mumkin.
Token. Biz modeldan foydalanishda davom etamiz Rutoken EDS PKI, bu korporativ foydalanish uchun tezlik xarakteristikalari jihatidan ideal.
Linuxda token bilan ishlash uchun siz quyidagi paketlarni o'rnatishingiz kerak:
libccid libpcsclite1 pcscd pcsc-vositalari opensc
Sertifikatlarni berish
Oldingi maqolalarda biz server va mijoz sertifikatlari Microsoft CA yordamida chiqarilishiga tayandik. Ammo biz Linuxda hamma narsani o'rnatayotganimiz sababli, sizga ushbu sertifikatlarni Linuxdan chiqmasdan berishning muqobil usuli haqida ham aytib beramiz.
Biz XCA dan CA sifatida foydalanamiz (https://hohnstaedt.de/xca/), har qanday zamonaviy Linux distributivida mavjud. XCA-da biz bajaradigan barcha harakatlar OpenSSL va pkcs11-tool yordam dasturlari yordamida buyruq qatori rejimida bajarilishi mumkin, ammo soddaligi va ravshanligi uchun biz ularni ushbu maqolada keltirmaymiz.
Ishga kirishish
O'rnatish:
$ apt-get install xca
Va biz yuguramiz:
$ xca
Biz CA - /root/CA.xdb uchun ma'lumotlar bazasini yaratamiz
Sertifikat organi ma'lumotlar bazasini faqat administrator kirish huquqiga ega bo'lgan papkada saqlashni tavsiya etamiz. Bu boshqa barcha sertifikatlarni imzolash uchun ishlatiladigan ildiz sertifikatlarining shaxsiy kalitlarini himoya qilish uchun muhimdir.
Kalitlar va ildiz CA sertifikatini yarating
Ochiq kalitlar infratuzilmasi (PKI) ierarxik tizimga asoslangan. Ushbu tizimda asosiy narsa - ildiz sertifikatlash organi yoki ildiz CA. Avval uning sertifikati yaratilishi kerak.
Biz CA uchun RSA-2048 shaxsiy kalitini yaratamiz. Buning uchun yorliqda Shaxsiy kalitlar najimaem Yangi kalit va tegishli turni tanlang.
Yangi kalit juftligi uchun nom belgilang. Men uni CA Key deb nomladim.
Biz yaratilgan kalit juftligidan foydalanib, CA sertifikatini o'zi chiqaramiz. Buning uchun yorliqga o'ting Sertifikatlar va bosing Yangi sertifikat.
Tanlaganingizga ishonch hosil qiling SHA-256, chunki SHA-1 dan foydalanish endi xavfsiz deb hisoblanmaydi.
Shablon sifatida tanlaganingizga ishonch hosil qiling [standart] CA. Bosishni unutmang Hammasini qo'llash, aks holda shablon qo'llanilmaydi.
Yorliqda Libos ID raqamini kiriting kalit juftimizni tanlang. U erda siz sertifikatning barcha asosiy maydonlarini to'ldirishingiz mumkin.
Kalitlar va https server sertifikatini yaratish
Xuddi shunday, biz server uchun RSA-2048 shaxsiy kalitini yaratamiz, men uni Server kaliti deb nomladim.
Sertifikat yaratishda biz server sertifikati CA sertifikati bilan imzolanishi kerakligini tanlaymiz.
Tanlashni unutmang SHA-256.
Biz shablon sifatida tanlaymiz [standart] HTTPS_server. ni bosing Hammasini qo'llash.
Keyin yorliqda Libos ID raqamini kiriting kalitimizni tanlang va kerakli maydonlarni to'ldiring.
Foydalanuvchi uchun kalit va sertifikat yarating
Foydalanuvchining shaxsiy kaliti bizning tokenimizda saqlanadi. U bilan ishlash uchun veb-saytimizdan PKCS#11 kutubxonasini o'rnatishingiz kerak. Ommabop tarqatish uchun biz bu erda joylashgan tayyor paketlarni tarqatamiz - https://www.rutoken.ru/support/download/pkcs/. Shuningdek, bizda arm64, armv7el, armv7hf, e2k, mipso32el uchun yig'ilishlar mavjud, ularni bizning SDK-dan yuklab olish mumkin - https://www.rutoken.ru/developers/sdk/. Linux uchun yig'ilishlardan tashqari, macOS, freebsd va android uchun yig'ilishlar ham mavjud.
XCA-ga yangi PKCS#11 provayderi qo'shilmoqda. Buning uchun menyuga o'ting Options tabga PKCS#11 provayderi.
Biz bosamiz qo'shish va PKCS # 11 kutubxonasiga yo'lni tanlang. Mening holimda bu usrliblibrtpkcs11ecp.so.
Kalit turi sifatida Rutoken EDS PKI uchun RSA-2048 kalitini tanlaymiz. Men bu kalitni mijoz kaliti deb atadim.
PIN kodni kiriting. Va biz kalit juftligining apparat ishlab chiqarish tugashini kutamiz
Biz foydalanuvchi uchun server sertifikatiga o'xshash sertifikat yaratamiz. Bu safar biz shablonni tanlaymiz [standart] HTTPS_client va bosishni unutmang Hammasini qo'llash.
Yorliqda Libos ID raqamini kiriting foydalanuvchi haqidagi ma'lumotlarni kiriting. Token uchun sertifikatni saqlash so'roviga ijobiy javob beramiz.
Natijada, yorliqda Sertifikat XCA'da siz shunga o'xshash narsalarni olishingiz kerak.
Ushbu minimal kalitlar va sertifikatlar to'plami serverlarning o'zlarini sozlashni boshlash uchun etarli.
Sozlash uchun biz CA sertifikati, server sertifikati va server shaxsiy kalitini eksport qilishimiz kerak.
Buni amalga oshirish uchun XCA-dagi tegishli yorliqda kerakli yozuvni tanlang va ustiga bosing Eksport.
nginx
Men nginx serverini qanday o'rnatish va ishga tushirishni yozmayman - rasmiy hujjatlarni hisobga olmaganda, Internetda ushbu mavzu bo'yicha etarlicha maqolalar mavjud. Keling, token yordamida HTTPS va ikki faktorli autentifikatsiyani o'rnatishga to'g'ri kelaylik.
Nginx.conf-dagi server bo'limiga quyidagi qatorlarni qo'shing:
Men o'zimdan so'raganlarimni qisqacha aytib beraman:
ssl_verify_client - sertifikat uchun ishonch zanjiri tekshirilishi kerakligini bildiradi.
ssl_verify_depth - zanjirdagi ishonchli ildiz sertifikati uchun qidiruv chuqurligini belgilaydi. Bizning mijoz sertifikatimiz darhol ildiz sertifikatida imzolanganligi sababli, chuqurlik 1 ga o'rnatiladi. Agar foydalanuvchi sertifikati oraliq CAda imzolangan bo'lsa, bu parametrda 2 ko'rsatilishi kerak va hokazo.
ssl_client_certificate - foydalanuvchi sertifikatiga ishonchni tekshirishda foydalaniladigan ishonchli ildiz sertifikatiga yo'lni belgilaydi.
ssl_certificate/ssl_certificate_key - server sertifikati/shaxsiy kalitiga yo'lni ko'rsating.
Konfiguratsiyada xatolar yo'qligini va barcha fayllar to'g'ri joyda ekanligini va hokazolarni tekshirish uchun nginx -t ni ishga tushirishni unutmang.
Va bu hammasi! Ko'rib turganingizdek, sozlash juda oddiy.
Keling, avval tokensiz kirishga harakat qilaylik. Biz ushbu rasmni olamiz:
Ga o'ting haqida: imtiyozlar # maxfiylik, va biz boramiz Xavfsizlik qurilmalariβ¦
Biz bosamiz yukyangi PKCS#11 qurilma drayverini qo'shish va librtpkcs11ecp.so ga yo'lni belgilang.
Sertifikatning ko'rinishini tekshirish uchun siz borishingiz mumkin Sertifikatlar menejeri. Sizdan PIN kodingizni kiritish so'raladi. To'g'ri kiritilgandan so'ng, yorliqda nima borligini tekshirishingiz mumkin Sizning sertifikatlaringiz tokendan sertifikatimiz paydo bo'ldi.
Endi token bilan boraylik. Firefox server uchun tanlanadigan sertifikatni tanlashni taklif qiladi. Bizning sertifikatimizni tanlang.
FOYDA!
O'rnatish bir marta amalga oshiriladi va sertifikat so'rovi oynasida ko'rib turganingizdek, biz tanlovimizni saqlashimiz mumkin. Shundan so'ng, har safar portalga kirganimizda, biz faqat tokenni kiritishimiz va formatlash paytida ko'rsatilgan foydalanuvchi PIN kodini kiritishimiz kerak bo'ladi. Bunday autentifikatsiyadan so'ng server qaysi foydalanuvchi tizimga kirganligini allaqachon biladi va siz endi tekshirish uchun qo'shimcha oynalar yarata olmaysiz, lekin darhol foydalanuvchiga shaxsiy hisobiga kirishga ruxsat bering.
Apache
Xuddi nginx-da bo'lgani kabi, hech kim apache-ni o'rnatishda muammoga duch kelmasligi kerak. Agar siz ushbu veb-serverni qanday o'rnatishni bilmasangiz, rasmiy hujjatlardan foydalaning.
Va biz HTTPS va ikki faktorli autentifikatsiyani sozlashni boshlaymiz:
Avval mod_ssl-ni faollashtirishingiz kerak:
$ a2enmod ssl
Va keyin saytning standart HTTPS sozlamalarini yoqing:
$ a2ensite default-ssl
Endi biz konfiguratsiya faylini tahrirlaymiz: /etc/apache2/sites-enabled/default-ssl.conf:
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /etc/apache2/sites-enabled/Server.crt
SSLCertificateKeyFile /etc/apache2/sites-enabled/ServerKey.pem
SSLCACertificateFile /etc/apache2/sites-enabled/CA.crt
SSLVerifyClient require
SSLVerifyDepth 10
Ko'rib turganingizdek, parametrlarning nomlari amalda nginx-dagi parametrlarning nomlari bilan mos keladi, shuning uchun men ularni tushuntirmayman. Shunga qaramay, tafsilotlarga qiziqqan har bir kishi hujjatlarga xush kelibsiz.
Endi biz serverimizni qayta ishga tushiramiz:
$ service apache2 reload
$ service apache2 restart
Ko'rib turganingizdek, har qanday veb-serverda ikki faktorli autentifikatsiyani o'rnatish Windows yoki Linuxda maksimal bir soat davom etadi. Va brauzerlarni sozlash taxminan 5 daqiqa davom etadi. Ko'p odamlar ikki faktorli autentifikatsiyani sozlash va ishlash qiyin va tushunarsiz deb o'ylashadi. Umid qilamanki, bizning maqolamiz bu afsonani, hech bo'lmaganda, bir oz yo'q qiladi.
So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.
Sizga GOST 34.10-2012 bo'yicha sertifikatlar bilan TLSni o'rnatish bo'yicha ko'rsatmalar kerakmi:
Ha, TLS-GOST juda zarur
Yo'q, GOST algoritmlari bilan sozlash qiziq emas
44 foydalanuvchi ovoz berdi. 9 nafar foydalanuvchi betaraf qoldi.