Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук
В један од наших претходних чланака говорили смо о значају двофакторске аутентификације на корпоративним порталима компанија. Последњи пут смо демонстрирали како да подесите безбедну аутентификацију на ИИС веб серверу.

У коментарима смо замољени да напишемо упутства за најчешће веб сервере за Линук – нгинк и Апацхе.

Питали сте - написали смо.

Шта вам је потребно за почетак?

  • Било која модерна Линук дистрибуција. Урадио сам пробно подешавање на МКС Линук 18.2_к64. Ово наравно није серверска дистрибуција, али мало је вероватно да ће бити било каквих разлика за Дебиан. За друге дистрибуције, путање до конфигурационих библиотека могу се незнатно разликовати.
  • Токен. Настављамо да користимо модел Рутокен ЕДС ПКИ, што је идеално у погледу карактеристика брзине за корпоративну употребу.
  • Да бисте радили са токеном у Линуку, потребно је да инсталирате следеће пакете:
    либццид либпцсцлите1 пцсцд пцсц-тоолс опенсц

Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

Издавање сертификата

У претходним чланцима ослањали смо се на чињеницу да ће сертификати сервера и клијента бити издати помоћу Мицрософт ЦА. Али пошто све подешавамо у Линук-у, такође ћемо вам рећи о алтернативном начину издавања ових сертификата - без напуштања Линук-а.
Користићемо КСЦА као ЦА (https://hohnstaedt.de/xca/), који је доступан у било којој модерној Линук дистрибуцији. Све радње које ћемо изводити у КСЦА могу се обавити у режиму командне линије користећи услужне програме ОпенССЛ и пкцс11, али због веће једноставности и јасноће, нећемо их представљати у овом чланку.

Први кораци

  1. Инсталирај:
    $ apt-get install xca
  2. И трчимо:
    $ xca
  3. Креирамо нашу базу података за ЦА - /роот/ЦА.кдб
    Препоручујемо да базу података Ауторитета за сертификате чувате у фасцикли којој само администратор има приступ. Ово је важно за заштиту приватних кључева основних сертификата, који се користе за потписивање свих осталих сертификата.

Креирајте кључеве и роот ЦА сертификат

Инфраструктура јавног кључа (ПКИ) је заснована на хијерархијском систему. Главна ствар у овом систему је роот сертификациони орган или роот ЦА. Прво се мора креирати његов сертификат.

  1. Креирамо РСА-2048 приватни кључ за ЦА. Да бисте то урадили, на картици Приватни кључеви nažimaem Кеи и изаберите одговарајући тип.
  2. Подесите име за нови пар кључева. Назвао сам га ЦА Кеи.
  3. Издајемо сам ЦА сертификат, користећи креирани пар кључева. Да бисте то урадили, идите на картицу Сертификати и кликните Нови сертификат.
  4. Обавезно изаберите СХА-КСНУМКС, јер се коришћење СХА-1 више не може сматрати безбедним.
  5. Обавезно изаберите као шаблон [подразумевано]ЦА. Не заборавите да кликнете на Примени све, иначе се шаблон не примењује.
  6. На картици Наслов упита изаберите наш пар кључева. Тамо можете попунити сва главна поља сертификата.

Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

Креирање кључева и сертификата хттпс сервера

  1. На сличан начин креирамо РСА-2048 приватни кључ за сервер, ја сам га назвао Серверски кључ.
  2. Приликом креирања сертификата бирамо да сертификат сервера мора бити потписан ЦА сертификатом.
  3. Не заборавите да изаберете СХА-КСНУМКС.
  4. Бирамо као шаблон [подразумевано] ХТТПС_сервер. Кликните на Примени све.
  5. Затим на картици Наслов упита изаберите наш кључ и попуните потребна поља.

Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

Креирајте кључеве и сертификат за корисника

  1. Приватни кључ корисника ће бити сачуван на нашем токену. Да бисте радили са њим, потребно је да инсталирате библиотеку ПКЦС#11 са наше веб странице. За популарне дистрибуције дистрибуирамо готове пакете, који се налазе овде - https://www.rutoken.ru/support/download/pkcs/. Такође имамо склопове за арм64, армв7ел, армв7хф, е2к, мипсо32ел, који се могу преузети са нашег СДК-а - https://www.rutoken.ru/developers/sdk/. Поред склопова за Линук, постоје и склопови за мацОС, фреебсд и андроид.
  2. Додавање новог ПКЦС#11 добављача у КСЦА. Да бисте то урадили, идите на мени Опције на картицу ПКЦС#11 добављач.
  3. Жмем додати и изаберите путању до библиотеке ПКЦС#11. У мом случају то је усрлиблибртпкцс11ецп.со.
  4. Биће нам потребан форматиран Рутокен ЕДС ПКИ токен. Преузмите услужни програм ртАдмин - https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
  5. Изводимо
    $ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>
  6. Као тип кључа бирамо кључ РСА-2048 за Рутокен ЕДС ПКИ. Овај кључ сам назвао клијентски кључ.

    Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

  7. Унесите ПИН код. И чекамо завршетак хардверске генерације пара кључева

    Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

  8. Сертификат за корисника креирамо по аналогији са сертификатом сервера. Овај пут бирамо шаблон [подразумевано] ХТТПС_цлиент и не заборавите да кликнете Примени све.
  9. На картици Наслов упита унесите податке о кориснику. На захтев за чување сертификата за токен одговарамо потврдно.

Као резултат, на картици Сертификати у КСЦА би требало да добијете нешто овако.

Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук
Овај минимални сет кључева и сертификата је довољан да започнете постављање самих сервера.

Да бисмо конфигурисали, морамо да извеземо ЦА сертификат, серверски сертификат и приватни кључ сервера.

Да бисте то урадили, изаберите жељени унос на одговарајућој картици у КСЦА и кликните извоз.

Нгинк

Нећу писати како инсталирати и покренути нгинк сервер - на Интернету има довољно чланака на ову тему, а да не спомињемо званичну документацију. Хајдемо директно на подешавање ХТТПС-а и двофакторске аутентификације помоћу токена.

Додајте следеће редове у одељак сервера у нгинк.цонф:

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;
}

Детаљан опис свих параметара који се односе на конфигурисање ссл-а у нгинк-у можете пронаћи овде - https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate

Само ћу укратко описати оне које сам се питао:

  • ссл_верифи_цлиент - специфицира да ланац поверења за сертификат треба да буде верификован.
  • ссл_верифи_дептх - Дефинише дубину претраге за поуздани роот сертификат у ланцу. Пошто је наш клијентски сертификат одмах потписан на основном сертификату, дубина је подешена на 1. Ако је кориснички сертификат потписан на средњем ЦА, онда 2 мора бити наведено у овом параметру, итд.
  • ссл_цлиент_цертифицате - специфицира путању до поузданог основног сертификата, који се користи приликом провере поверења у сертификат корисника.
  • ссл_цертифицате/ссл_цертифицате_кеи - назначите путању до сертификата/приватног кључа сервера.

Не заборавите да покренете нгинк -т да проверите да ли у конфигурацији нема грешака у куцању, да су све датотеке на правом месту итд.

И то је све! Као што видите, подешавање је врло једноставно.

Проверавам да ли ради у Фирефок-у

Пошто све радимо у потпуности у Линуксу, претпоставићемо да и наши корисници раде у Линуксу (ако имају Виндовс, онда погледајте упутства за подешавање претраживача у претходном чланку.

  1. Хајде да покренемо Фирефок.
  2. Покушајмо прво да се пријавимо без токена. Добијамо ову слику:

    Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

  3. Идемо даље абоут: поставке # приватност, и идемо на Сигурносни уређаји…
  4. Жмем Оптерећењеда додате нови ПКЦС#11 драјвер уређаја и одредите путању до нашег либртпкцс11ецп.со.
  5. Да бисте проверили да ли је сертификат видљив, можете да одете на Менаџер сертификата. Од вас ће бити затражено да унесете свој ПИН. Након исправног уноса, можете проверити шта се налази на картици Ваши сертификати појавио се наш сертификат из токена.
  6. Сада идемо са жетоном. Фирефок тражи од вас да изаберете сертификат који ће бити изабран за сервер. Изаберите наш сертификат.

    Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

  7. ДОБИТ!

    Двофакторска аутентификација на сајту помоћу УСБ токена. Сада и за Линук

Подешавање се врши једном, и као што можете видети у прозору захтева за сертификат, можемо да сачувамо наш избор. Након овога, сваки пут када се пријавимо на портал, биће нам потребно само да убацимо токен и унесемо кориснички ПИН код који је наведен током форматирања. Након такве аутентификације, сервер већ зна који корисник се пријавио и више не можете да креирате додатне прозоре за верификацију, већ одмах пустите корисника на његов лични налог.

апацхе

Баш као и са нгинк-ом, нико не би требало да има проблема са инсталирањем апацхе-а. Ако не знате како да инсталирате овај веб сервер, само користите званичну документацију.

И почињемо да подешавамо нашу ХТТПС и двофакторску аутентификацију:

  1. Прво морате да активирате мод_ссл:
    $ a2enmod ssl
  2. Затим омогућите подразумевана ХТТПС подешавања сајта:
    $ a2ensite default-ssl
  3. Сада мењамо конфигурациону датотеку: /етц/апацхе2/ситес-енаблед/дефаулт-ссл.цонф:
        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

    Као што видите, називи параметара се практично поклапају са називима параметара у нгинк-у, тако да их нећу објашњавати. Опет, сви заинтересовани за детаље су добродошли у документацију.
    Сада поново покрећемо наш сервер:

    $ service apache2 reload
    $ service apache2 restart

  4. Као што видите, подешавање двофакторске аутентификације на било ком веб серверу, било на Виндовс-у или Линук-у, траје максимално један сат. А подешавање претраживача траје око 5 минута. Многи људи мисле да је постављање и рад са двофакторском аутентификацијом тешко и нејасно. Надам се да ће наш чланак бар мало разоткрити овај мит.

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Да ли су вам потребна упутства за подешавање ТЛС-а са сертификатима према ГОСТ 34.10-2012:

  • Да, ТЛС-ГОСТ је веома потребан

  • Не, подешавање са ГОСТ алгоритмима није занимљиво

44 корисника је гласало. 9 корисника је било уздржано.

Извор: ввв.хабр.цом

Додај коментар