Двухфакторная аутентификация SSH только по внешнему адресу

11

У меня есть сервер Ubuntu с частным, внутренним, IP и общедоступным IP. Я хочу настроить двухфакторную аутентификацию для SSH только на публичной стороне. Это возможно? Я планировал использовать Google Authenticator, но также открыт для альтернативных идей.

Бретт Ф.
источник
Для получения дополнительной информации см. Также unix.stackexchange.com/questions/388384/…
FarO

Ответы:

15

Да, вы можете сделать это с pam_access.so. Этот рецепт был взят из вики для Google Authenticator :

Полезный рецепт PAM - пропустить двухфакторную аутентификацию, когда соединение происходит из определенных источников. Это уже поддерживается PAM. Например, модуль pam_access может использоваться для проверки источника по локальным подсетям:

# skip one-time password if logging in from the local network
auth [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth       required     pam_google_authenticator.so

В этом случае access-local.conf выглядит так:

# only allow from local IP range
+ : ALL : 10.0.0.0/24
+ : ALL : LOCAL
- : ALL : ALL

Таким образом, попытки входа в систему с 10.0.0.0/24 не требуют двухфакторной аутентификации.

Майкл Хэмптон
источник
1
Это именно то, что я искал. Не уверен, почему я не видел это раньше. Благодарность!
Бретт Ф.
4
Майкл Хэмптон: Спасибо за пример, но у меня это не сработало, потому что я продолжал получать сообщение об ошибке «Отказано в доступе» (клавиатура-интерактив). Я понял это, потому что я использовал AuthenticationMethods publickey,keyboard-interactiveв моем /etc/ssh/sshd_config. Поэтому я изменил следующее, чтобы исправить это:auth [success=done default=ignore] pam_access.so accessfile=/etc/security/access-local.conf auth optional pam_google_authenticator.so nullok
Джереми Лэйрд
@JeremyLaird эти строки обнажены .. где новые строки?
shadowbq