ProHoster > Blog > башкаруу > 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 купуя ачкычын түзөбүз, мен аны Server Key деп атадым.
Сертификат түзүүдө биз сервер сертификатына 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 серверин кантип орнотууну жана иштетүүнү жазбайм - расмий документтерди айтпаганда да, Интернетте бул тема боюнча макалалар жетиштүү. Келгиле, токенди колдонуу менен HTTPS жана эки факторлуу аутентификацияны жөндөөгө түз киришели.
Nginx.conf дарегиндеги сервер бөлүмүнө төмөнкү саптарды кошуңуз:
Мен өзүмө суроо бергендерди кыскача айтып берейин:
ssl_verify_client - тастыктама үчүн ишеним чынжырын текшерүү керек экенин көрсөтөт.
ssl_verify_depth - чынжырдагы ишенимдүү тамыр сертификаты үчүн издөө тереңдигин аныктайт. Биздин кардар сертификатыбыз дароо түпкү сертификатка кол коюлгандыктан, тереңдик 1ге орнотулган. Эгерде колдонуучу сертификаты ортодогу CAга кол коюлган болсо, анда бул параметрде 2 көрсөтүлүшү керек ж.б.у.с.
ssl_client_certificate - колдонуучунун сертификатына ишенимди текшерүүдө колдонулган ишенимдүү түпкү сертификатка жолду көрсөтөт.
ssl_certificate/ssl_certificate_key - сервер сертификатына/жеке ачкычка жолду көрсөтөт.
Конфигурацияда эч кандай каталар жок экенин жана бардык файлдар туура жерде экенин жана башкаларды текшерүү үчүн nginx -t иштетүүнү унутпаңыз.
Жана баары ушул! Көрүнүп тургандай, орнотуу абдан жөнөкөй.
Адегенде токенсиз киргенге аракет кылалы. Биз бул сүрөттү алабыз:
баралы жөнүндө: түзөтүү # купуялык, жана биз барабыз Коопсуздук түзмөктөрү…
басабыз жүкжаңы PKCS#11 Device Driver кошуу жана librtpkcs11ecp.so жолду көрсөтүү.
Сертификат көрүнөөрүн текшерүү үчүн дарекке өтсөңүз болот Тил кат тейлегичи. Сизден PIN кодуңузду киргизүү сунушталат. Туура киргизилгенден кийин, өтмөктө эмне бар экенин текшере аласыз Сиздин сертификаттарыңыз токенден биздин сертификат пайда болду.
Эми токен менен кетели. Firefox сизден сервер үчүн тандалган сертификатты тандоону сунуштайт. Биздин сертификатты тандаңыз.
ПАЙДА!
Орнотуу бир жолу жасалат жана сиз тастыктама суроо терезесинде көрүп тургандай, биз тандообузду сактай алабыз. Андан кийин, биз порталга кирген сайын, токенди киргизип, форматтоо учурунда көрсөтүлгөн колдонуучунун 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 колдонуучу добуш берүүдөн баш тартты.