Повышаем безопасность входа в учетные записи Fedora с помощью аутентификации вызов-ответ

Повышаем безопасность входа в учетные записи Fedora с помощью аутентификации вызов-ответ

Вступление

На сегодняшний день ОС Fedora предлагает множество способов повысить безопасность аутентификации учетных записей пользователей. Конечно же, привычные всем нам имена пользователя и пароли по-прежнему используются для входа в учетную запись. Однако, доступны и дополнительные методы аутентификации при помощи: биометрических данных, отпечатков пальцев, смарт-карт, одноразовых паролей, и даже метода Вызов-Ответ.

У каждого метода аутентификации есть свои преимущества и недостатки, а каждый из них может быть удостоен отдельной статьи. Онлайн дайджест Fedora Magazine ранее уже рассматривал в своих публикациях некоторые из методов авторизации:

Using the YubiKey4 with Fedora
Fedora 28: Better smart card support in OpenSSH

(прим. пер.; язык публикаций, приведенных по ссылкам — англ.)

Одним из наиболее безопасных методов аутентификации в современных релизах Fedora является аппаратный вызов-ответ в режиме оффлайн. Также, он является одним из самых простых в настройке. Вот как это происходит:

Аутентификация Вызов-Ответ

С технической точки зрения, когда вы вводите пароль — вы даете ответ на вызов, содержащий имя пользователя. Вызов-ответ в режиме оффлайн, о котором пойдет речь далее, запрашивает ваше имя пользователя в самом начале. Затем, Fedora просит предоставить зашифрованный аппаратный токен. Данный токен отвечает на вызов другим, хранящимся в нем, зашифрованным ключом, через фреймворк PAM (Подключаемые Модули Аутентификации). Напоследок, Fedora запрашивает ваш пароль. Данный подход предотвращает возможность использования вашего аппаратного токена сторонними лицами, или использования имени пользователя и пароля без соответствующего зашифрованного ключа.

Это значит, что в дополнение к вашему имени пользователя и паролю, вам также потребуется предварительно зарегистрировать в ОС один или более зашифрованных аппаратных токенов. Также, вам потребуется аппаратный токен для возможности проводить аутентификацию вашего имени пользователя.

Некоторые методы типа Вызов-Ответ, такие как одноразовые пароли, берут зашифрованный ключ из аппаратного токена и передают данный ключ по сети на удаленный сервер аутентификации. Этот сервер сообщает фреймворку PAM ОС Fedora, что это действительный токен для этого имени пользователя. Это работает отлично, если сервер(-ы) аутентификации принадлежат одной и той же локальной сети. Недостатком данного метода является то что, если сеть недоступна, или вы работаете удаленно, без подключения к сети — вам не удастся воспользоваться данным методом. Доступ к системе будет заблокирован, пока вы не сможете подключиться к серверу по сети.

Иногда, вам на рабочем месте требуется пользоваться одноразовыми паролями YubiKey OTP. Тем не менее, на домашних и личных системах вы можете отдавать предпочтение конфигурации с локальным Вызовом-Ответом. Все работает локально, а данный метод не требует удаленных вызовов по сети. Процедура, описанная ниже, работает на ОС Fedora версий 27, 28 и 29.

Подготовка

Аппаратные токены

Для начала, вам понадобится аппаратный ключ-токен. В частности, данная процедура требует наличия ключа серии YubiKey 4, YubiKey NEO, или недавно вышедшей серии YubiKey 5, которая также включает поддержку FIDO2. Рекомендуется приобретать двое ключей для использования второго в качестве запасного, на случай, если один будет утерян или поврежден. Вы сможете использовать эти ключи на различных рабочих станциях. Упрощенные модели с поддержкой только FIDO или FIDO2 не подойдут для этой процедуры, но они отлично работают с онлайн сервисами, которые поддерживают FIDO U2F.

Бэкап, бэкап, и еще раз бэкап.

Далее, сделайте резервную копию всей важной информации. Возможно, сначала вы захотите протестировать конфигурацию в клонированной виртуальной машине с Fedora 27/28/29, чтобы убедиться в том, что полностью понимаете весь процесс, перед тем как приниматься за настройку вашей собственной рабочей станции.

Обновление и установка

Теперь вам следует убедиться в том, что Fedora обновлена до последней версии. Затем, установите пакеты, требуемые для YubiKey, посредством команд dnf:

$ sudo dnf upgrade
$ sudo dnf install ykclient* ykpers* pam_yubico*

Если вы работаете в виртуальной машине, напр., VirtualBox, убедитесь, что ключ YubiKey вставлен в порт USB, а в настройках виртуальной машины включен доступ к YubiKey в соответствующем порту USB.

Настраиваем Yubikey

Убедитесь, что ваша учетная запись имеет доступ к USB с ключом YubiKey:

$ ykinfo -v
version: 3.5.0

Если YubiKey не определен, вы увидите следующее сообщение:

Yubikey core error: no yubikey present

Далее, инициализируйте каждый из новых ключей YubiKey следующей командой ykpersonalize. Она настраивает слот №2 конфигурации YubiKey на Вызов-Ответ с использованием алгоритма HMAC-SHA1, и для работы с данными объемом даже менее чем в 64 символа. Если вы ранее уже настроили ваши ключи YubiKey на Вызов-Ответ, вам не нужно более выполнять ykpersonalize.

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

Некоторые пользователи держат ключи YubiKey подключенными к их рабочим станциям, на время использования, и даже на виртуальных машинах используют Вызов-Ответ. Тем не менее, для большей безопасности рекомендуется настроить ручное срабатывание YubiKey для генерации ответа на вызов.

Чтобы включить ручное срабатывание, добавьте флаг -ochal-btn-trig. Этот флаг настраивает YubiKey так, что ключ начинает мигать светодиодом при вызове. Таким образом YubiKey ожидает прикосновения к кнопке на аппаратной части ключа в течении 15 секунд, чтобы начать генерацию ответного ключа.

$ ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -ochal-btn-trig -oserial-api-visible

Проводите данные действия с новыми аппаратными ключами — один раз с каждым из ключей. Когда вы закончите настройку ключей, сохраните конфигурацию YubiKey в ~/.yubico при помощи следующей команды:

$ ykpamcfg -2 -v
debug: util.c:222 (check_firmware_version): YubiKey Firmware version: 4.3.4

Sending 63 bytes HMAC challenge to slot 2
Sending 63 bytes HMAC challenge to slot 2
Stored initial challenge and expected response in '/home/chuckfinley/.yubico/challenge-9992567'.

Если вы настраиваете несколько ключей, в качестве резервных, сконфигурируйте все ключи одинаково, а затем сохраните Вызов-Ответ каждого из ключей при помощи утилиты ykpamcfg. Если вы выполните команду ykpersonalize на одном из уже настроенных ключей, вам понадобится сохранить конфигурацию снова.

Настраиваем /etc/pam.d/sudo

Теперь, чтобы убедиться в том, что конфигурация работает, находясь в этой же терминальной сессии вам следует настроить sudo на запрос использования Вызова-Ответа YubiKey. Добавьте следующую строку в файл /etc/pam.d/sudo:

auth required pam_yubico.so mode=challenge-response

Вставьте строку, приведенную выше, над строкой auth include system-auth. Затем сохраните файл и выйдите из редактора. В Fedora 29, настроенной по-умолчанию, /etc/pam.d/sudo должен выглядеть следующим образом:

#%PAM-1.0
auth required pam_yubico.so mode=challenge-response
auth include system-auth
account include system-auth
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
session include system-auth

Не выходя из предыдущего терминала, откройте новую сессию. В новой терминальной сессии введите:

$ sudo echo testing

Теперь светодиод на ключе должен начать мигать. Прикоснитесь к кнопке на YubiKey, после этого вы должны увидеть строку приглашения с запросом пароля для sudo. После того как вы введете пароль, вы должны увидеть в выводе терминала надпись «testing».

Затем, проверьте правильность работы при отсутствии ключа. Откройте новую терминальную сессию и извлеките YubiKey из порта USB. Чтобы убедиться, что sudo более не работает без YubiKey, введите следующую команду:

$ sudo echo testing fail

Вы должны сразу же получить запрос на ввод пароля. Даже если введете верный пароль, вход не должен выполниться.

Настраиваем Gnome Desktop Manager

Когда все тесты проведены, вы можете включить поддержку аутентификации Вызов-Ответ в графическом логине. Снова вставьте YubiKey в порт USB. Затем, добавьте следующую строку в файл /etc/pam.d/gdm-password:

auth required pam_yubico.so mode=challenge-response

Откройте окно терминала и выполните следующую команду. Вы можете использовать любой, удобный вам редактор:

$ sudo vi /etc/pam.d/gdm-password

Вы должны увидеть, как светодиод на YubiKey начал мигать. Прикоснитесь к кнопке, а затем введите пароль.
Измените файл /etc/pam.d/gdm-password так, что чтобы приведенная выше строка auth была над существующей строкой auth substack password-auth. Заголовок файла должен выглядеть следующим образом:

auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth required pam_yubico.so mode=challenge-response
auth substack password-auth
auth optional pam_gnome_keyring.so
auth include postlogin


account required pam_nologin.so

Сохраните изменения и выйдите из редактора. Если вы использовали редактор vi, для выхода нажмите Esc, затем введите wq! и нажмите Enter, чтобы сохранить и выйти.

Заключение

Теперь выйдите из сеанса GNOME. При подключенном в порт USB YubiKey, нажмите на ваше имя пользователя в графическом окне входа. Светодиод на YubiKey должен начать мигать. Прикоснитесь к кнопке и введите пароль.

Если вы потеряете аппаратный ключ, вы по-прежнему сможете использовать запасной YubiKey в дополнение к паролю. Для этого следует заранее добавить ключи в конфигурацию учетной записи.

Даже если кому-либо станет известен ваш пароль, они по-прежнему не смогут воспользоваться им без аппаратного ключа. Поздравляем! Теперь вы существенно повысили безопасность входа в учетную запись вашей рабочей станции.

(Перевод с англ., оригинал статьи, автор оригинала: nabooengineer)