Назад | Перейти на главную страницу

Требование двухфакторной аутентификации ssh только от определенных клиентов

Я собираюсь сделать двухфакторную аутентификацию обязательной для входа по ssh, используя libpam_google_authenticator. Я хотел бы иметь возможность отказаться от этого требования, когда пользователи входят в систему с определенных IP-адресов.

У меня это в /etc/pam.d/sshd:

auth       required     pam_google_authenticator.so

и это в /etc/ssh/sshd_config:

ChallengeResponseAuthentication yes

Я думал об использовании Match директива в sshd_config, но на странице руководства предлагается ChallengeResponseAuthentication нельзя использовать таким образом. В любом случае, я не уверен, что это обойдется pam требование.

Есть ли способ отказаться от запроса-ответа для клиентов с определенными IP-адресами?

Я не делал этого специально с помощью google auth, но я делаю нечто подобное с pam_access и подстаком. То, как я это делаю, создает в /etc/pam.d файл с именем yubi-auth. Это содержит:

auth sufficient pam_yubico.so 
auth required pam_combo.so 

Затем в password-auth я использую auth substack yubi-auth. В результате, если пользователь заходит с одобренного IP-адреса в acceptess.conf, ему не нужно использовать yubikey, иначе им придется его использовать. (и они всегда МОГУТ использовать его, если захотят).

Я не тестировал этот метод с помощью google auth, но думаю, что такая же логика должна работать.

Вы можете запустить два экземпляра sshd с разными конфигурациями. В крайнем случае: используйте одну исправленную версию (так как это, вероятно, невозможно через файл конфигурации), которая использует другую строку PAM, чем ssh, чтобы вы могли создавать разные конфигурации PAM для обоих экземпляров. Или вы запускаете один экземпляр в chroot / lxc, чтобы он видел другую конфигурацию PAM. Это может быть проще (поддерживать).

Затем выбор клиента может быть выполнен с помощью iptables (DNAT). Просто отправьте соответствующих клиентов на порт второго экземпляра (или на IP lxc).