Как настроить SSH с многофакторной аутентификацией Google Authenticator с определенными политиками IP – вход без MFA для локальной сети?

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

Как настроить SSH с Google Authenticator MFA с определенными IP-политиками:

  • Мне нужен доступ внутри моей локальной сети (10.0.0.0/22) только через логин по паролю
> ssh [email protected]
[email protected]'s password:
Последний вход: Ср Ноя  6 02:18:27 2024 с 10.0.0.1
user1@server1:~$
  • но когда я попытаюсь войти на свой SSH сервер из Интернета – я должен войти с помощью пароля + MFA ключа.
> ssh -p 30022 [email protected]
([email protected]) Пароль:
([email protected]) Код подтверждения:
Последний вход: Ср Ноя 6 02:18:27 2024 с 123.111.222.123
user1@server1:~$

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

Как настроить SSH с использованием Google Authenticator MFA и специфическими IP-политиками

В данной статье мы рассмотрим, как настроить SSH для использования Google Authenticator в качестве второго фактора аутентификации (MFA), при этом разрешая доступ из вашей локальной сети (10.0.0.0/22) только с использованием пароля, а для внешнего доступа — с использованием пароля и MFA.

Шаг 1: Установка необходимых пакетов

Первым делом необходимо установить Google Authenticator и соответствующий пакет для SSH. На Debian/Ubuntu это можно сделать с помощью следующей команды:

sudo apt update
sudo apt install libpam-google-authenticator

Шаг 2: Настройка Google Authenticator для пользователя

Каждому пользователю, который будет использовать MFA, необходимо сгенерировать секретный ключ для Google Authenticator. Для этого выполните следующие шаги:

  1. Выполните команду:
    google-authenticator
  2. Следуйте инструкциям на экране, принимая предложенные настройки, включая возможность генерации QR-кода, который можно просканировать с помощью мобильного приложения Google Authenticator.

Шаг 3: Настройка PAM для использования Google Authenticator

После установки Google Authenticator необходимо отредактировать конфигурацию PAM для SSH. Откройте файл /etc/pam.d/sshd и добавьте следующую строку:

auth required pam_google_authenticator.so

Это позволит использовать Google Authenticator для аутентификации через SSH.

Шаг 4: Изменение конфигурации SSH

Откройте файл /etc/ssh/sshd_config и убедитесь, что следующие настройки присутствуют:

ChallengeResponseAuthentication yes

При этом, чтобы настроить политику IP, мы добавим условное выполнение MFA через файл конфигурации. Первым делом разрешим доступ по паролю для локальной сети и настроим MFA для удаленного доступа. Добавьте следующую строку:

Match Address 10.0.0.0/22
    AuthenticationMethods password

Это разрешит доступ только с использованием пароля для пользователей, подключающихся с адресов в локальной сети.

Теперь добавьте следующий блок для удаленного доступа, который потребует MFA:

Match all
    AuthenticationMethods password,keyboard-interactive

Это будет означать, что для входа с любых внешних адресов пользователю потребуется ввести пароль и код MFA.

Шаг 5: Перезапуск SSH

После изменения конфигурационных файлов необходимо перезапустить SSH-сервер, чтобы изменения вступили в силу:

sudo systemctl restart sshd

Заключение

Теперь ваша система настроена на использование Google Authenticator для двухфакторной аутентификации. Пользователи, подключающиеся из локальной сети 10.0.0.0/22, смогут войти, используя только пароль. В то время как пользователи, подключающиеся из других мест, должны будут вводить как пароль, так и код проверки из Google Authenticator.

Эта настройка повысит уровень безопасности вашего сервера, минимизировав риски, связанные с несанкционированным доступом.

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

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