SSH не требует MFA при входе

Вопрос или проблема

Я следовал шагам на https://ubuntu.com/tutorials/configure-ssh-2fa#1-overview, чтобы настроить SSH для многофакторной аутентификации с использованием приложения Google Authenticator на сервере Ubuntu 24.01.

Тем не менее, когда я пытаюсь войти в SSH (либо с использованием консоли, либо SFTP/FileZilla), ничего не происходит для MFA, он не просит меня ввести ничего, только запрашивает пароль, и когда я его ввожу, говорит: “Доступ запрещен, попробуйте еще раз.”

Строки, которые я добавил в /etc/pam.d/sshd file

auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so

Первая строка позволяет мне указать несколько IP-адресов, чтобы обойти MFA.

Единственная строка (организованная не закомментированная строка в любом случае), добавленная в /etc/ssh/sshd_config

ChallengeResponseAuthentication yes

В /var/log/auth.log

2024-05-29T16:09:11.021740+00:00 dbs-sftp sshd[1592]: pam_access(sshd:auth): доступ запрещен для пользователя `paul' с `172.19.240.1'
2024-05-29T16:09:11.022333+00:00 dbs-sftp sshd(pam_google_authenticator)[1592]: Неверный код подтверждения для paul
2024-05-29T16:09:12.935185+00:00 dbs-sftp sshd[1592]: Неверный пароль для paul с 172.19.240.1 порт 53501 ssh2

Он говорит, что я использовал неверный код подтверждения, но я не предоставил код подтверждения, он не просил меня ввести его, у меня не было возможности его ввести.

Теперь у меня это работает, в файле sshd_config была запись для

KbdInteractiveAuthentication no

Очевидно, KbdInteractiveAuthentication означает то же самое, что и ChallengeResponseAuthentication, поэтому, когда я изменил KbdInteractiveAuthentication на yes и удалил ChallengeResponseAuthentication полностью, оно начало работать.

У меня также была проблема с многофакторной аутентификацией Google:

> ssh [email protected]
[email protected]'s password:
Доступ запрещен, попробуйте еще раз.

поэтому я решил это сразу после следующего изменения в /etc/ssh/sshd_config:
KbdInteractiveAuthentication no -> KbdInteractiveAuthentication yes

с результатом:

> ssh [email protected]
([email protected]) Пароль:
([email protected]) Код подтверждения:

имейте в виду, что PasswordAuthentication yesyes или no не имеет значения

и в /etc/pam.d/sshd auth required pam_google_authenticator.so nulloknullok параметр также может отсутствовать

  • спасибо ответу Пола, я просто расширил его ответ

Ответ или решение

Проблема с многофакторной аутентификацией (MFA) для SSH на Ubuntu 24.01

Вопрос о том, почему SSH не выполняет многофакторную аутентификацию при входе, достаточно актуален для специалистов в области информационных технологий. Рассмотрим ключевые моменты, которые могут помочь в решении этой проблемы.

1. Анализ настроек PAM и конфигурации SSH

Ваши изменения в файле конфигурации PAM /etc/pam.d/sshd выглядят корректными, особенно добавление строчек:

auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so

Первая строка предотвращает использование MFA для определённых IP-адресов, а вторая — обеспечивает аутентификацию через Google Authenticator.

В конфигурационном файле SSH (/etc/ssh/sshd_config) вы указали:

ChallengeResponseAuthentication yes

Это также правильно, однако большое значение имеет настройка параметра KbdInteractiveAuthentication.

2. Настройка KbdInteractiveAuthentication

Как вы заметили, KbdInteractiveAuthentication no блокирует возможность ввода дополнительных данных при аутентификации, что и приводило к тому, что не появлялось запросов на ввод кода MFA.

Изменив это значение на KbdInteractiveAuthentication yes, вы позволили SSH запрашивать у пользователя дополнительные данные, что привело к успешной аутентификации.

3. Логи аутентификации

Логи в /var/log/auth.log показывают:

Invalid verification code for paul
Failed password for paul from 172.19.240.1

Это говорит о том, что, когда вы пытались войти в систему, аутентификация прошла по первому шагу (проверка PAM), но не была выполнена, поскольку система ожидала загрузить код MFA, а это не получилось.

После исправлений, результаты лога изменились на:

Verification code:

Это свидетельствует о том, что система теперь корректно запрашивает код MFA после успешного ввода пароля.

4. Дополнительные параметры

Стоит отметить, что наличие параметра PasswordAuthentication yes не критично для работы MFA. Также параметр nullok в pam_google_authenticator.so не обязателен — его отсутствие не повлияет на общую функциональность.

Заключение

Для успешного выполнения многофакторной аутентификации на сервере SSH необходимо убедиться, что оба параметра: KbdInteractiveAuthentication и ChallengeResponseAuthentication настроены правильно. Изменив их на yes, вы обеспечиваете, чтобы система запрашивала код из Google Authenticator после ввода пароля.

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

Оцените материал
Добавить комментарий

Капча загружается...