Вопрос или проблема
Я новичок в Linux. Практически то, что в заголовке.
Я пытался обратиться к опубликованным статьям, но не смог найти что-то, что соответствовало бы моим конкретным требованиям. Я не могу войти в систему, используя OTP код, даже если ввожу правильный пароль и код.
Кто-нибудь может помочь мне с файлом конфигурации sshd и файлом конфигурации pam, чтобы это заработало? Также, возможно, я захочу включить эту функцию для определенного количества пользователей. (Например, запретить вход root)
Любая помощь в этом будет очень признательна. Спасибо!
*Я пробовал использовать Google Authenticator
Если SELinux включен, то он будет блокировать доступ к файлу .google_authenticator
, если он расположен в корне домашнего каталога пользователя. По соображениям безопасности предполагаемое расположение всех пользовательских файлов, которые должны стать доступными для демона sshd
, это ~/.ssh/
.
Для приложения Google Authenticator вы можете указать выходное расположение результирующего файла с помощью команды google-authenticator --secret=${HOME}/.ssh/.google_authenticator
. Файл получит правильный контекст безопасности для SELinux, если он будет создан таким образом. (Обратите внимание, что подходящий контекст безопасности может быть либо system_u:object_r:ssh_home_t:s0
, либо unconfined_u:object_r:ssh_home_t:s0
.)
Если вы запускали команду google-authenticator
без каких-либо аргументов, то результирующий файл помещается непосредственно в домашний каталог пользователя и получает unconfined_u:object_r:auth_home_t:s0
как контекст безопасности, что делает его недоступным для демона sshd
при включенном SELinux. Просто выполнить команду mv ~/.google_authenticator ~/.ssh/
недостаточно, так как файл все еще будет иметь некорректный контекст безопасности, поэтому необходимо также выполнить restorecon ~/.ssh/.google_authenticator
после перемещения файла.
В дополнение к вышеупомянутому, убедитесь, что ваш файл конфигурации /etc/pam.d/sshd
указывает новое расположение для .google_authenticator
:
auth required pam_google_authenticator.so secret=${HOME}/.ssh/.google_authenticator
Ответ или решение
Настройка многофакторной аутентификации (MFA), используя комбинацию пароля и одноразового пароля (OTP) на Rocky Linux 8, является важной задачей для повышения безопасности доступа к серверу через SSH. В вашем случае вы хотите настроить MFA с использованием приложения Google Authenticator и обеспечить возможность работы этой функции для выбранной группы пользователей, исключив возможность доступа для пользователя root. Рассмотрим каждый шаг, необходимый для достижения этой цели.
Теория
Многофакторная аутентификация (MFA) — это метод аутентификации, требующий от пользователя предъявления двух или более типов идентификаторов для получения доступа. Обычно используются комбинации из следующих категорий факторов:
- Что-то, что вы знаете (пароль);
- Что-то, что у вас есть (генератор OTP, как Google Authenticator);
- Что-то, кем вы являетесь (биометрические данные).
В вашем случае используется первая и вторая категории: пароль и одноразовый код OTP.
Пример
Предположим, вы администратор сервера на Rocky Linux 8 и хотите использовать Google Authenticator для добавления второй ступени аутентификации при доступе через SSH. На практике это выглядит следующим образом:
- Пользователь запрашивает доступ к серверу через SSH и вводит свой пароль.
- Система запрашивает одноразовый код OTP, сгенерированный ранее установленным приложением Google Authenticator.
- После успешного ввода кода пользователь получает доступ.
Настройка Google Authenticator требует корректной конфигурации SSH и PAM для работы в соответствии с требованиями безопасности.
Применение
1. Установка Google Authenticator
Для того чтобы настроить Google Authenticator на вашем сервере, выполните следующие команды:
sudo yum install epel-release
sudo yum install google-authenticator
После установки выполните команду google-authenticator
, чтобы сгенерировать секретный ключ и начальные коды восстановления:
google-authenticator --secret=${HOME}/.ssh/.google_authenticator
Обратите внимание, что здесь указано расположение файла .google_authenticator
в каталоге .ssh
пользователя. Это важный шаг для совместимости с SELinux.
2. Обновление SELinux контекстов
Как упоминается, SELinux должен иметь правильный контекст для доступа к файлу. Если вы не указали правильный путь при создании, перенесите файл и обновите его контекст:
mv ~/.google_authenticator ~/.ssh/
restorecon ~/.ssh/.google_authenticator
Это гарантирует, что файл будет доступен для демона sshd
.
3. Настройка PAM
Откройте файл конфигурации PAM для SSH: /etc/pam.d/sshd
. Добавьте следующую строку:
auth required pam_google_authenticator.so secret=${HOME}/.ssh/.google_authenticator
Это дополнение гарантирует, что при SSH-входе будет запрашиваться OTP, сгенерированный на вашем устройстве.
4. Настройка SSH Daemon
Редактируя конфигурационный файл SSH /etc/ssh/sshd_config
, убедитесь в следующих настройках:
ChallengeResponseAuthentication yes
PasswordAuthentication yes
UsePAM yes
Каждый из этих параметров должен быть установлен в yes
, чтобы PAM мог обрабатывать аутентификацию с помощью Google Authenticator.
5. Отключение root-доступа
Чтобы запретить root-доступ, установите параметр:
PermitRootLogin no
Это увеличит безопасность, предотвращая прямые входы с административной учетной записи.
6. Применение изменений и проверка
После внесения изменений перезапустите SSH-сервер:
systemctl restart sshd
Проверьте, что ваш сервер правильно обрабатывает оба этапа аутентификации, протестировав вход для пользователей, для которых включена MFA.
7. Ограничение MFA только для определенных пользователей
Если вы хотите активировать MFA только для определенных пользователей, вы можете воспользоваться директивами PAM для создания отдельной конфигурации. Например, создайте группу пользователей, которым требуется MFA:
groupadd mfa-users
usermod -aG mfa-users yourusername
Затем измените строку в /etc/pam.d/sshd
, чтобы включить проверку группы:
auth [success=1 default=ignore] pam_succeed_if.so user ingroup mfa-users
auth required pam_google_authenticator.so secret=${HOME}/.ssh/.google_authenticator
Это гарантирует, что только пользователи из группы mfa-users
будут проходить дополнительную проверку через Google Authenticator.
Вывод
Настройка MFA с помощью Google Authenticator на Rocky Linux 8 требует внимательного подхода к конфигурации PAM и SSH, а также учета особенностей работы SELinux. Следуя описанным шагам, вы сможете обеспечить надежную аутентификацию для пользователей, значительно усилив безопасность вашего сервера. Кроме того, возможность адаптировать систему для отдельных пользователей позволяет обеспечить гибкость и удобство работы с учетом корпоративных политик безопасности.