SSH с публичным ключом и двухфакторная аутентификация Google с белым списком IP-адресов.

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

Я стараюсь найти конфигурацию, которая по умолчанию требует открытый ключ и 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 состоит из двух основных частей:

  1. Файл 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
  2. Конфигурация 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-адресов в списке доступа.

Подходящие шаги для окончательной настройки

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

  2. Изменение порядка методов аутентификации: Вы можете изменить настройки, чтобы явно указывать, что для IP-адресов в белом списке должны использоваться только методы публичного ключа, что будет иметь приоритет.

  3. Тестирование и отладка: После внесения изменений, протестируйте настройки как с белых IP, так и с внешних. Убедитесь, что все пользователи имеют корректные публичные ключи, и проверьте логи SSH для выявления других возможных ошибок.

Заключение

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

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

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