USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да
В мурунку макалаларыбыздын бири биз компаниялардын корпоративдик порталдарында эки фактордук аутентификациянын маанилүүлүгү жөнүндө сүйлөштүк. Акыркы жолу биз IIS веб-серверинде коопсуз аутентификацияны кантип орнотууну көрсөттүк.

Комментарийлерде бизден Linux үчүн эң кеңири таралган веб-серверлер - nginx жана Apache үчүн нускамаларды жазууну суранышты.

Сиз сурадыңыз – биз жаздык.

Баштоо үчүн эмне керек?

  • Ар кандай заманбап Linux бөлүштүрүү. Мен MX Linux 18.2_x64 боюнча тесттик орнотууну жасадым. Бул, албетте, сервердик бөлүштүрүү эмес, бирок Debian үчүн эч кандай айырмачылыктар болушу күмөн. Башка бөлүштүрүүлөр үчүн конфигурациялоо китепканаларына баруучу жолдор бир аз айырмаланышы мүмкүн.
  • Токен. Биз моделди колдонууну улантабыз Rutoken EDS PKI, бул корпоративдик колдонуу үчүн ылдамдык мүнөздөмөлөрү боюнча идеалдуу.
  • Linuxто токен менен иштөө үчүн төмөнкү пакеттерди орнотуу керек:
    libccid libpcsclite1 pcscd pcsc-куралдар opensc

USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

Сертификаттарды берүү

Мурунку макалаларда биз сервер жана кардар сертификаттары Microsoft CA аркылуу чыгарыла турганына таянганбыз. Бирок биз Linux'та бардыгын орнотуп жаткандыктан, биз сизге бул сертификаттарды берүүнүн альтернативалуу жолу жөнүндө айтып беребиз - Linuxтан чыкпай эле.
Биз XCAны CA катары колдонобуз (https://hohnstaedt.de/xca/), ар кандай заманбап Linux дистрибьюторунда жеткиликтүү. XCAда биз аткара турган бардык аракеттер OpenSSL жана pkcs11 курал утилиталарын колдонуу менен буйрук сабы режиминде аткарылышы мүмкүн, бирок жөнөкөйлүгү жана айкындыгы үчүн биз аларды бул макалада келтирбейбиз.

баштоо

  1. Орнотуу:
    $ apt-get install xca
  2. Жана биз чуркап:
    $ xca
  3. Биз CA үчүн маалымат базабызды түзөбүз - /root/CA.xdb
    Сертификат кызматынын маалымат базасын администратор гана кире алган папкада сактоону сунуштайбыз. Бул бардык башка сертификаттарга кол коюу үчүн колдонулган түпкү сертификаттардын купуя ачкычтарын коргоо үчүн маанилүү.

Ачкычтарды жана түпкү CA сертификатын түзүңүз

Ачык ачкыч инфраструктурасы (PKI) иерархиялык системага негизделген. Бул системада негизги нерсе - тамыр сертификаттоо органы же тамыр CA. Анын сертификаты алгач түзүлүшү керек.

  1. Биз CA үчүн RSA-2048 купуя ачкычын түзөбүз. Бул үчүн, өтмөктө Жеке ачкычтар түртүү Жаңы ачкыч жана ылайыктуу түрүн тандаңыз.
  2. Жаңы ачкыч жупка ат коюңуз. Мен аны CA Key деп атадым.
  3. Биз түзүлгөн ачкыч жупту колдонуп, CA сертификатын чыгарабыз. Бул үчүн, өтмөккө өтүңүз күбөлүк жана пресс-релиздер Жаңы күбөлүк.
  4. Сөзсүз тандаңыз SHA-256, анткени SHA-1ди колдонуу мындан ары коопсуз деп эсептелбейт.
  5. Шаблон катары тандоону унутпаңыз [демейки]CA. Басууну унутпаңыз Тиешелүү бардык, антпесе шаблон колдонулбайт.
  6. Өтмөктө тема биздин ачкыч жуп тандоо. Ал жерден күбөлүктүн бардык негизги талааларын толтурсаңыз болот.

USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

Ачкычтарды жана https сервер сертификатын түзүү

  1. Ушундай эле жол менен биз сервер үчүн RSA-2048 купуя ачкычын түзөбүз, мен аны Server Key деп атадым.
  2. Сертификат түзүүдө биз сервер сертификатына CA сертификаты менен кол коюлушу керектигин тандайбыз.
  3. Тандоону унутпаңыз SHA-256.
  4. Биз шаблон катары тандайбыз [демейки] HTTPS_сервери. чыкылдатыңыз Тиешелүү бардык.
  5. Андан кийин өтмөктө тема ачкычыбызды тандап, керектүү талааларды толтуруңуз.

USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

Колдонуучу үчүн ачкычтарды жана сертификатты түзүңүз

  1. Колдонуучунун купуя ачкычы биздин токенде сакталат. Аны менен иштөө үчүн биздин веб-сайттан 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 үчүн ассамблеялар бар.
  2. XCAга жаңы PKCS#11 Провайдерин кошуу. Бул үчүн, менюга өтүңүз Жолдор өтмөккө PKCS#11 Провайдери.
  3. басабыз кошуу жана PKCS#11 китепканасына жолду тандаңыз. Менин учурда бул usrliblibrtpkcs11ecp.so.
  4. Бизге форматталган Rutoken EDS PKI энбелгиси керек болот. rtAdmin утилитасын жүктөп алыңыз - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. аткаруу
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Биз ачкыч түрү катары Rutoken EDS PKI үчүн RSA-2048 ачкычын тандайбыз. Мен бул ачкычты Кардар ачкычы деп атадым.

    USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

  7. PIN кодду киргизиңиз. Жана биз ачкыч жуптун аппараттык генерациясынын аякташын күтөбүз

    USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

  8. Колдонуучу үчүн сервер сертификатына окшош сертификат түзөбүз. Бул жолу биз шаблонду тандайбыз [демейки] HTTPS_client жана басууну унутпаңыз Тиешелүү бардык.
  9. Өтмөктө тема колдонуучу жөнүндө маалыматты киргизиңиз. Токен үчүн сертификатты сактоо өтүнүчүнө биз оң жооп беребиз.

Натыйжада, өтмөктө Тастыктамалар XCAда сиз ушул сыяктуу нерсени алышыңыз керек.

USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да
Бул ачкычтардын жана сертификаттардын минималдуу топтому серверлердин өздөрүн жөндөп баштоо үчүн жетиштүү.

Конфигурациялоо үчүн биз CA сертификатын, сервер сертификатын жана сервердин купуя ачкычын экспорттообуз керек.

Бул үчүн, XCAдагы тиешелүү өтмөктөн керектүү жазууну тандап, чыкылдатыңыз экспорттоо.

жөргөмүш

Мен nginx серверин кантип орнотууну жана иштетүүнү жазбайм - расмий документтерди айтпаганда да, Интернетте бул тема боюнча макалалар жетиштүү. Келгиле, токенди колдонуу менен HTTPS жана эки факторлуу аутентификацияны жөндөөгө түз киришели.

Nginx.conf дарегиндеги сервер бөлүмүнө төмөнкү саптарды кошуңуз:

server {
	listen 443 ssl;
	ssl_verify_depth 1;
	ssl_certificate /etc/nginx/Server.crt;
	ssl_certificate_key /etc/nginx/ServerKey.pem;
	ssl_client_certificate /etc/nginx/CA.crt;
	ssl_verify_client on;
}

Nginxте ssl конфигурациялоого байланыштуу бардык параметрлердин толук сүрөттөлүшүн бул жерден тапса болот - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Мен өзүмө суроо бергендерди кыскача айтып берейин:

  • ssl_verify_client - тастыктама үчүн ишеним чынжырын текшерүү керек экенин көрсөтөт.
  • ssl_verify_depth - чынжырдагы ишенимдүү тамыр сертификаты үчүн издөө тереңдигин аныктайт. Биздин кардар сертификатыбыз дароо түпкү сертификатка кол коюлгандыктан, тереңдик 1ге орнотулган. Эгерде колдонуучу сертификаты ортодогу CAга кол коюлган болсо, анда бул параметрде 2 көрсөтүлүшү керек ж.б.у.с.
  • ssl_client_certificate - колдонуучунун сертификатына ишенимди текшерүүдө колдонулган ишенимдүү түпкү сертификатка жолду көрсөтөт.
  • ssl_certificate/ssl_certificate_key - сервер сертификатына/жеке ачкычка жолду көрсөтөт.

Конфигурацияда эч кандай каталар жок экенин жана бардык файлдар туура жерде экенин жана башкаларды текшерүү үчүн nginx -t иштетүүнү унутпаңыз.

Жана баары ушул! Көрүнүп тургандай, орнотуу абдан жөнөкөй.

Анын Firefoxто иштеп жатканын текшерүү

Биз бардыгын толугу менен Linux'та жасагандыктан, биздин колдонуучулар Linux'та да иштешет деп ойлойбуз (эгерде аларда Windows болсо, анда мурунку макаладагы браузерлерди орнотуу боюнча нускамаларды караңыз.

  1. Firefoxту ишке киргизели.
  2. Адегенде токенсиз киргенге аракет кылалы. Биз бул сүрөттү алабыз:

    USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

  3. баралы жөнүндө: түзөтүү # купуялык, жана биз барабыз Коопсуздук түзмөктөрү…
  4. басабыз жүкжаңы PKCS#11 Device Driver кошуу жана librtpkcs11ecp.so жолду көрсөтүү.
  5. Сертификат көрүнөөрүн текшерүү үчүн дарекке өтсөңүз болот Тил кат тейлегичи. Сизден PIN кодуңузду киргизүү сунушталат. Туура киргизилгенден кийин, өтмөктө эмне бар экенин текшере аласыз Сиздин сертификаттарыңыз токенден биздин сертификат пайда болду.
  6. Эми токен менен кетели. Firefox сизден сервер үчүн тандалган сертификатты тандоону сунуштайт. Биздин сертификатты тандаңыз.

    USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

  7. ПАЙДА!

    USB токенди колдонуу менен сайтта эки фактордук аутентификация. Эми Linux үчүн да

Орнотуу бир жолу жасалат жана сиз тастыктама суроо терезесинде көрүп тургандай, биз тандообузду сактай алабыз. Андан кийин, биз порталга кирген сайын, токенди киргизип, форматтоо учурунда көрсөтүлгөн колдонуучунун PIN кодун киргизишибиз керек болот. Мындай аутентификациядан кийин сервер кайсы колдонуучу киргенин билет жана сиз мындан ары текшерүү үчүн эч кандай кошумча терезелерди түзө албайсыз, бирок дароо колдонуучуга өзүнүн жеке аккаунтуна кирүүгө уруксат бериңиз.

Apache

Nginx сыяктуу эле, эч кимде apache орнотууда эч кандай көйгөй жаралбашы керек. Бул веб-серверди кантип орнотууну билбесеңиз, жөн гана расмий документацияны колдонуңуз.

Анан биз HTTPS жана эки факторлуу аутентификацияны орното баштайбыз:

  1. Адегенде mod_ssl'ди активдештирүү керек:
    $ a2enmod ssl
  2. Анан сайттын демейки HTTPS жөндөөлөрүн иштетиңиз:
    $ a2ensite default-ssl
  3. Эми конфигурация файлын түзөтөбүз: /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

  4. Көрүнүп тургандай, Windows же Linux болобу, каалаган веб-серверде эки фактордук аутентификацияны орнотуу эң көп дегенде бир саатты алат. Ал эми браузерлерди орнотуу 5 мүнөткө жакын убакытты алат. Көптөр эки фактордук аутентификацияны орнотуу жана иштөө кыйын жана түшүнүксүз деп ойлошот. Биздин макала бул жомокту, жок дегенде, бир аз жокко чыгарат деп үмүттөнөм.

Сурамжылоого катталган колдонуучулар гана катыша алышат. Кирүү, өтүнөмүн.

Сизге ГОСТ 34.10-2012 боюнча сертификаттар менен TLS орнотуу боюнча нускама керекпи:

  • Ооба, TLS-ГОСТ абдан зарыл

  • Жок, ГОСТ алгоритмдери менен тюнинг кызыктуу эмес

44 колдонуучу добуш берди. 9 колдонуучу добуш берүүдөн баш тартты.

Source: www.habr.com

Комментарий кошуу