Вопрос или проблема
Я следовал шагам на 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 yes
– yes или no не имеет значения
и в /etc/pam.d/sshd auth required pam_google_authenticator.so nullok
– nullok параметр также может отсутствовать
- спасибо ответу Пола, я просто расширил его ответ
Ответ или решение
Проблема с многофакторной аутентификацией (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 после ввода пароля.
Следуя указанным рекомендациям и проверяя каждую конфигурацию, вы сможете наладить стабильную работу многофакторной аутентификации, увеличив безопасность вашего сервера и сделав его менее уязвимым для несанкционированного доступа.