Вопрос или проблема
Я стараюсь найти конфигурацию, которая по умолчанию требует открытый ключ и 2fa, но только открытый ключ для белого списка ip для одного и того же пользователя.
С приведенной ниже конфигурацией вход из внешнего ip работает как ожидалось, но из ip из белого списка не удается, и я вижу это сообщение.
Аутентификация с частичным успехом.
Доступ запрещён (keyboard-interactive).
Я полагаю, что файл доступа оказывает желаемый эффект, пропуская 2fa, но затем AuthenticationMethods keyboard-interactive дает сбой.
Можно ли пропустить keyboard-interactive, когда 2fa пропущен?
Моя текущая конфигурация выглядит следующим образом
/etc/pam.d/sshd
# успех=1 пропускает pam_google_authenticator, когда локальный ip
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth required pam_google_authenticator.so
access-local.conf, где ### – это локальный ip
+ : ALL : ###.###.###.###
- : ALL : ALL
/etc/ssh/sshd_config
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
У меня есть альтернатива, которая работает и подтверждает мою точку зрения о keyboard-interactive, но я хотел бы использовать файл доступа.
Match address ###.###.###.###
AuthenticationMethods publickey
Match all
AuthenticationMethods publickey,keyboard-interactive
Ответ или решение
SSH с публичными ключами и двухфакторной аутентификацией Google с белым списком IP-адресов
Ваша задача — настроить сервер SSH таким образом, чтобы пользователи могли входить по публичным ключам и через двухфакторную аутентификацию (2FA) с использованием Google Authenticator, но при этом пользователи из белого списка IP-адресов могли авторизоваться только с помощью публичных ключей. Давайте рассмотри, как этого добиться, включая потенциальные проблемы.
Проблема
Вы упомянули, что при входе с внешнего IP-адреса всё работает нормально, но для IP-адресов из белого списка аутентификация терпит неудачу с сообщением:
Authenticated with partial success.
Permission denied (keyboard-interactive).
Это свидетельствует о том, что несмотря на то, что вы пропускаете 2FA для определённых IP-адресов, механизм keyboard-interactive
продолжает вызываться, что приводит к ошибке.
Основные моменты конфигурации
Ваша конфигурация SSH состоит из двух основных частей:
-
Файл PAM (
/etc/pam.d/sshd
):# успех=1 пропускает pam_google_authenticator при локальном ip auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf auth required pam_google_authenticator.so
-
Конфигурация SSH (
/etc/ssh/sshd_config
):ChallengeResponseAuthentication yes UsePAM yes AuthenticationMethods publickey,keyboard-interactive
Ваш файл доступа (access-local.conf
) настроен для пропуска аутентификации с использованием 2FA для заданного IP-адреса.
Решение: Пропуск keyboard-interactive
К сожалению, чтобы игнорировать метод keyboard-interactive
в связке с PAM, потребуется использовать сопоставления в конфигурации SSH. На данный момент вы уже используете альтернативный способ настройки, который отводит внимание от комбинации методов аутентификации для определённых IP.
Альтернативная настройка
Вот как ваша текущая альтернативная настройка выглядит:
Match address ###.###.###.###
AuthenticationMethods publickey
Match all
AuthenticationMethods publickey,keyboard-interactive
Это решение, безусловно, корректно, и его предпочтительнее использовать, если вы хотите избежать вызовов метода keyboard-interactive
для IP-адресов в списке доступа.
Подходящие шаги для окончательной настройки
-
Продолжите использование правила сопоставления: Так как оно вполне подходит для вашей задачи, используйте его. Это наилучший способ для создания гибкой и эффективной системы аутентификации.
-
Изменение порядка методов аутентификации: Вы можете изменить настройки, чтобы явно указывать, что для IP-адресов в белом списке должны использоваться только методы публичного ключа, что будет иметь приоритет.
-
Тестирование и отладка: После внесения изменений, протестируйте настройки как с белых IP, так и с внешних. Убедитесь, что все пользователи имеют корректные публичные ключи, и проверьте логи SSH для выявления других возможных ошибок.
Заключение
Для успешной настройки SSH с двухфакторной аутентификацией и публичными ключами, учитывая белые IP-адреса, используйте приведённый метод сопоставления в конфигурации SSH. Это гарантирует, что на белых IP применяется только метод публичного ключа, а пользователи из других мест должны использовать комбинированный подход.