ProHoster > Блог > басқарма > USB таңбалауышы арқылы сайтта екі факторлы аутентификация. Енді Linux үшін де
USB таңбалауышы арқылы сайтта екі факторлы аутентификация. Енді Linux үшін де
В алдыңғы мақалаларымыздың бірі біз компаниялардың корпоративтік порталдарында екі факторлы аутентификацияның маңыздылығы туралы айттық. Өткен жолы біз IIS веб-серверінде қауіпсіз аутентификацияны қалай орнату керектігін көрсеттік.
Түсініктемелерде бізден Linux үшін ең көп таралған веб-серверлер - nginx және Apache үшін нұсқауларды жазуды сұрады.
Сіз сұрадыңыз - біз жаздық.
Бастау үшін сізге не қажет?
Кез келген заманауи Linux дистрибуциясы. Мен MX Linux 18.2_x64 жүйесінде сынақ орнатуды жасадым. Бұл, әрине, сервер тарату емес, бірақ Debian үшін ешқандай айырмашылықтар болуы екіталай. Басқа таратулар үшін конфигурация кітапханаларына апаратын жолдар сәл өзгеше болуы мүмкін.
Токен. Біз үлгіні пайдалануды жалғастырамыз Rutoken EDS PKI, бұл корпоративтік пайдалану үшін жылдамдық сипаттамалары бойынша өте қолайлы.
Linux жүйесінде таңбалауышпен жұмыс істеу үшін келесі пакеттерді орнату қажет:
libccid libpcsclite1 pcscd pcsc-құралдар opensc
Сертификаттарды беру
Алдыңғы мақалаларда біз сервер мен клиент сертификаттары Microsoft CA арқылы шығарылатынына сендік. Бірақ біз Linux жүйесінде барлығын реттеп жатқандықтан, біз сізге бұл сертификаттарды Linux жүйесінен шықпай-ақ берудің балама жолы туралы айтып береміз.
Біз XCA-ны CA ретінде қолданамыз (https://hohnstaedt.de/xca/), ол кез келген заманауи Linux дистрибутивінде қол жетімді. XCA-да орындайтын барлық әрекеттерді пәрмен жолы режимінде OpenSSL және pkcs11-құрал утилиталары арқылы орындауға болады, бірақ қарапайымдылық пен түсінікті болу үшін біз оларды осы мақалада көрсетпейміз.
Жұмысты бастау
Орнату:
$ apt-get install xca
Ал біз жүгіреміз:
$ xca
Біз CA үшін дерекқорды жасаймыз - /root/CA.xdb
Сертификаттау орталығы дерекқорын тек әкімші қол жеткізе алатын қалтада сақтауды ұсынамыз. Бұл барлық басқа сертификаттарға қол қою үшін пайдаланылатын түбірлік сертификаттардың жеке кілттерін қорғау үшін маңызды.
Кілттерді және түбірлік CA сертификатын жасаңыз
Ашық кілттер инфрақұрылымы (PKI) иерархиялық жүйеге негізделген. Бұл жүйедегі ең бастысы - түбірлік сертификаттау органы немесе түбірлік CA. Алдымен оның сертификаты жасалуы керек.
Біз CA үшін RSA-2048 жеке кілтін жасаймыз. Мұны істеу үшін қойындыда Жеке кілттер Басыңыз Жаңа кілт және сәйкес түрін таңдаңыз.
Жаңа кілттер жұбына атау орнатыңыз. Мен оны CA Key деп атадым.
Біз жасалған кілттер жұбын пайдалана отырып, CA сертификатының өзін шығарамыз. Мұны істеу үшін қойындыға өтіңіз Сертификаттар және нұқыңыз Жаңа сертификат.
Таңдауды ұмытпаңыз SHA-256, өйткені SHA-1 пайдалану енді қауіпсіз деп саналмайды.
Үлгі ретінде таңдауды ұмытпаңыз [әдепкі]CA. Басуды ұмытпаңыз Барлығын қолданыңыз, әйтпесе үлгі қолданылмайды.
Қойындыда пән кілттер жұбымызды таңдаңыз. Онда сіз сертификаттың барлық негізгі өрістерін толтыра аласыз.
Кілттер мен https сервер сертификатын жасау
Сол сияқты біз сервер үшін RSA-2048 жеке кілтін жасаймыз, мен оны Сервер кілті деп атадым.
Куәлікті жасау кезінде біз сервер сертификатына CA сертификатымен қол қою керектігін таңдаймыз.
Таңдауды ұмытпаңыз SHA-256.
Үлгі ретінде таңдаймыз [әдепкі] HTTPS_сервері. Басыңыз Барлығын қолданыңыз.
Содан кейін қойындыда пән кілтімізді таңдап, қажетті өрістерді толтырыңыз.
Пайдаланушы үшін кілттер мен сертификат жасаңыз
Пайдаланушының жеке кілті біздің таңбалауышымызда сақталады. Онымен жұмыс істеу үшін біздің веб-сайттан PKCS#11 кітапханасын орнату керек. Танымал дистрибутивтер үшін біз осы жерде орналасқан дайын пакеттерді таратамыз - https://www.rutoken.ru/support/download/pkcs/. Сондай-ақ бізде arm64, armv7el, armv7hf, e2k, mipso32el жинақтары бар, оларды SDK-дан жүктеп алуға болады - https://www.rutoken.ru/developers/sdk/. Linux жүйесіне арналған жинақтардан басқа, macOS, freebsd және android үшін де жинақтар бар.
XCA жүйесіне жаңа PKCS#11 провайдерін қосу. Мұны істеу үшін мәзірге өтіңіз Опциялар қойындысына PKCS#11 Провайдері.
басамыз қосу және PKCS#11 кітапханасының жолын таңдаңыз. Менің жағдайда бұл usrliblibrtpkcs11ecp.so.
Біз кілт түрі ретінде Rutoken EDS PKI үшін RSA-2048 кілтін таңдаймыз. Мен бұл кілтті Клиент кілті деп атадым.
PIN кодын енгізіңіз. Біз кілттер жұбының аппараттық генерациясының аяқталуын күтеміз
Біз пайдаланушы үшін сервер сертификатына ұқсас сертификат жасаймыз. Бұл жолы біз үлгіні таңдаймыз [әдепкі] HTTPS_client және басуды ұмытпаңыз Барлығын қолданыңыз.
Қойындыда пән пайдаланушы туралы ақпаратты енгізіңіз. Токенге сертификатты сақтау туралы өтінішке оң жауап береміз.
Нәтижесінде қойындыда Сертификаттар XCA-да сіз осындай нәрсені алуыңыз керек.
Бұл кілттер мен сертификаттардың ең аз жинағы серверлерді орнатуды бастау үшін жеткілікті.
Конфигурациялау үшін бізге CA сертификатын, сервер сертификатын және сервердің жеке кілтін экспорттау керек.
Ол үшін XCA ішіндегі сәйкес қойындыда қажетті жазбаны таңдап, түймесін басыңыз экспорт.
Nginx
Мен nginx серверін қалай орнату және іске қосу керектігін жазбаймын - ресми құжаттаманы айтпағанда, Интернетте осы тақырып бойынша мақалалар жеткілікті. Токенді пайдаланып HTTPS және екі факторлы аутентификацияны орнатуға тікелей көшейік.
Nginx.conf ішіндегі сервер бөліміне келесі жолдарды қосыңыз:
ssl_verify_client - сертификаттың сенім тізбегі тексерілуі қажет екенін көрсетеді.
ssl_verify_depth - тізбектегі сенімді түбір куәлігі үшін іздеу тереңдігін анықтайды. Клиент куәлігі түбірлік куәлікке бірден қол қойылғандықтан, тереңдік 1 мәніне орнатылады. Егер пайдаланушы сертификаты аралық CA-да қол қойылған болса, онда осы параметрде 2 көрсетілуі керек және т.б.
ssl_client_certificate - пайдаланушы сертификатына сенімді тексеру кезінде пайдаланылатын сенімді түбірлік сертификатқа жолды көрсетеді.
Алдымен токенсіз кіруге тырысайық. Біз мына суретті аламыз:
Жалғастырамыз туралы: қалаулар # құпиялылық, және біз барамыз Қауіпсіздік құрылғылары…
басамыз жүкжаңа PKCS#11 құрылғы драйверін қосу және librtpkcs11ecp.so жолын көрсету үшін.
Куәліктің көрінетінін тексеру үшін мына мекенжайға өтуге болады Сертификат менеджері. Сізден PIN кодын енгізу сұралады. Дұрыс енгізгеннен кейін қойындыда не бар екенін тексеруге болады Сіздің сертификаттарыңыз жетоннан біздің сертификат пайда болды.
Енді жетонмен жүрейік. Firefox сервер үшін таңдалатын сертификатты таңдауды ұсынады. Біздің сертификатты таңдаңыз.
PROFIT!
Орнату бір рет орындалады және сертификатты сұрау терезесінде көріп отырғаныңыздай, таңдауымызды сақтай аламыз. Осыдан кейін, біз порталға кірген сайын, бізге тек таңбалауышты енгізу және пішімдеу кезінде көрсетілген пайдаланушы PIN кодын енгізу қажет болады. Мұндай аутентификациядан кейін сервер қай пайдаланушының жүйеге кіргенін біледі және сіз бұдан былай тексеру үшін ешқандай қосымша терезе жасай алмайсыз, бірақ пайдаланушыға өзінің жеке кабинетіне дереу рұқсат беріңіз.
Apache
Nginx сияқты, ешкімде apache орнатуда қиындықтар болмауы керек. Бұл веб-серверді орнату жолын білмесеңіз, ресми құжаттаманы пайдаланыңыз.
Біз HTTPS және екі факторлы аутентификацияны орнатуды бастаймыз:
Алдымен mod_ssl іске қосу керек:
$ a2enmod ssl
Содан кейін сайттың әдепкі HTTPS параметрлерін қосыңыз:
$ a2ensite default-ssl
Енді конфигурация файлын өңдейміз: /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
Көріп отырғаныңыздай, параметрлердің атаулары іс жүзінде nginx-тегі параметрлердің атауларымен сәйкес келеді, сондықтан мен оларды түсіндірмеймін. Тағы да, егжей-тегжейге қызығушылық танытатын кез келген адам құжаттамаға қош келдіңіз.
Енді серверімізді қайта іске қосамыз:
$ service apache2 reload
$ service apache2 restart
Көріп отырғаныңыздай, кез келген веб-серверде, Windows немесе Linux жүйесінде екі факторлы аутентификацияны орнату ең көбі бір сағатты алады. Ал браузерлерді орнату шамамен 5 минутты алады. Көптеген адамдар екі факторлы аутентификацияны орнату және жұмыс істеу қиын және түсініксіз деп ойлайды. Біздің мақала осы мифті, кем дегенде, аздап жоққа шығарады деп үміттенемін.
Сауалнамаға тек тіркелген пайдаланушылар қатыса алады. Кіру, өтінемін.
Сізге ГОСТ 34.10-2012 сәйкес сертификаттары бар TLS орнату нұсқаулары қажет пе:
Иә, TLS-ГОСТ өте қажет
Жоқ, ГОСТ алгоритмдерімен баптау қызық емес
44 қолданушы дауыс берді. 9 пайдаланушы қалыс қалды.