- PVSM.RU - https://www.pvsm.ru -

В одной из наших предыдущих статей [1] мы рассказывали про важность двухфакторной аутентификации на корпоративных порталах компаний. В прошлый раз мы продемонстрировали, как настроить безопасную аутентификацию в web-сервере IIS.
В комментариях нас просили написать инструкцию для самых распространенных web-серверов под Linux — nginx и Apache.
Вы просили — мы написали.

В предыдущих статьях мы опирались на то, что сертификаты сервера и клиентов будут выписываться с помощью Microsoft CA. Но раз уж мы настраиваем все в Linux, то заодно расскажем про альтернативный способ выписывания этих сертификатов — не покидая Linux.
В качестве CA будем использовать XCA (https://hohnstaedt.de/xca/ [3]), который доступен в любом современном дистрибутиве Linux. Все действия, которые мы будем совершать в XCA можно сделать и в режиме командной строки с помощью утилит OpenSSL и pkcs11-tool, но для большей простоты и наглядности в этой статье мы их приводить не будем.
$ apt-get install xca
$ xca
В основе инфраструктуры открытых ключей (PKI) лежит иерархическая система. Главным в этой системе является корневой центр сертификации или root CA. Его сертификат и надо создать в первую очередь.


$ rtAdmin -f -q -z /usr/lib/librtpkcs11ecp.so -u <PIN-код пользователя>


В итоге на вкладке Сертификаты в XCA должна получиться примерно такая картинка.

Этого минимального набора ключей и сертификатов достаточно для того, чтобы приступать к настройке непосредственно серверов.
Для настройки нам необходимо выполнить экспорт сертификата УЦ, сертификата сервера и закрытого ключа сервера.
Для этого надо выбрать нужную запись на соответствующей вкладке в XCA и нажать Export.
Как установить и запустить nginx-сервер, писать не буду — на эту тему достаточно статей в интернете, не говоря уже об официальной документации. Приступим сразу к настройке HTTPS и двухфакторной аутентификации по токену.
Добавляем в секцию server в 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;
}
Подробное описание всех параметров, касающихся настройки ssl в nginx можно найти тут — https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate [7]
Я лишь коротко опишу те, которые сам задал:
Не забываем выполнить nginx -t, чтобы проверить, что в конфиге нет опечаток, а все файлики лежат где надо и так далее.
И собственно всё! Как видите настройка очень простая.
Раз уж мы всё полностью делаем в Linux, то будем считать, что и наши пользователи тоже работают в Linux (если у них Windows, то смотрите инструкцию по настройке браузеров в предыдущей статье [1].



Настройка выполняется один раз, и как видно в окне запроса на сертификат мы можем сохранить наш выбор. После этого при каждом входе на портал нам надо будет только вставить токен и ввести PIN-код пользователя, который был задан при форматировании. После такой аутентификации сервер уже знает какой пользователь на него зашёл и можно больше не делать никаких дополнительных окон для проверки, а сразу пускать пользователя в его личный кабинет.
Так же как и с nginx проблем с установкой apache ни у кого не должно возникнуть. Если же вы не знаете, как установить этот web-сервер, просто воспользуйтесь официальной документацией.
А мы приступаем к настройке нашего HTTPS и двухфакторной аутентификации:
$ a2enmod ssl
$ a2ensite default-ssl
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 минут. Многие считают, что настройка и работа с двухфакторной аутентификацией это сложно и непонятно. Надеюсь наша статья хоть немного, но развенчивает этот миф.
Автор: Neraverin
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/322196
Ссылки в тексте:
[1] одной из наших предыдущих статей: https://habr.com/ru/company/aktiv-company/blog/412809/
[2] Рутокен ЭЦП PKI: https://www.rutoken.ru/products/all/rutoken-ecp-pki/
[3] https://hohnstaedt.de/xca/: https://hohnstaedt.de/xca/
[4] https://www.rutoken.ru/support/download/pkcs/: https://www.rutoken.ru/support/download/pkcs/
[5] https://www.rutoken.ru/developers/sdk/: https://www.rutoken.ru/developers/sdk/
[6] https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615: https://dev.rutoken.ru/pages/viewpage.action?pageId=7995615
[7] https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_client_certificate
[8] Источник: https://habr.com/ru/post/457886/?utm_campaign=457886&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.