Отключить модуль PAM для группы
Недавно я включил двухфакторную аутентификацию с помощью google-authenticator на моем SSH-сервере. Однако сейчас я сталкиваюсь с проблемой:
У меня есть другая группа пользователей на моем сервере, которую я использую для SFTP, но эта группа больше не может войти, так как 2FA не настроен для пользователей в группе. Можно ли отключить модуль google-authenticator для этой группы? Включение этого для пользователей в группе не вариант, потому что несколько пользователей будут использовать эту учетную запись.
PS: пользуюсь openssh-server
2 ответа
Ты можешь использовать pam_succeed_if
модуль (см. страницу руководства) перед pam_google_authenticator
чтобы пропустить эту часть для вашей группы:
# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...
Некоторые клиенты SFTP могут обрабатывать 2FA. Например, я использую 2FA с FileZilla и WinSCP, и они работают. Также у меня есть настройка аутентификации по ssh-ключу, и она работает вместе с 2FA.
Однако ваш вопрос интересен, и я сделал небольшой опрос. Я нашел этот ответ.
Таким образом, можно (и легко) запускать отдельные экземпляры ssh. Я уже проверил это.
Сделайте отдельные копии
sshd_config
файл.$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
Редактировать эти новые
config
файлы. Одна из вещей, которую вы должны изменить, это порт shh. По примеру:2.а)
sshd_config_pwd
конкретные строки:Port 1022 ... PasswordAuthentication yes ChallengeResponseAuthentication no UsePAM no
2б)
sshd_config_2fa
конкретные строки:Port 2022 ... PasswordAuthentication no ChallengeResponseAuthentication yes UsePAM yes
Откройте необходимые порты в брандмауэре. По примеру:
$ sudo ufw limit 1022 $ sudo ufw limit 2022
Запустите новые экземпляры ssh:
$ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
Вот и все.
Ниже будет сделать Google 2fa обязательным для всех пользователей,
кроме пользователей, принадлежащих к SUDO и администратору группе
(то есть, если пользователь из группы Суда или администратора не 2fa настроен, он будет аутентифицировать его / ее на основе их открытого ключа):
Файл:
/etc/pam.d/sshd
auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin
Файл:
/etc/ssh/sshd_config
AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes
Полученные результаты:
| Belongs to sudo or | Has 2FA Already Setup | Authentication Result
| admin group | in ~/.google_authenticator |
----------+----------------------+-----------------------------+------------------------
User A | NO | NO | DENIED LOGIN UNTIL 2FA IS SETUP
User B | YES | NO | CAN LOGIN (PRIVATE/PUBLIC KEY USED)
User C | NO | YES | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)
User D | YES | YES | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)
Согласно документации Google Authenticator README.md:
нуллок
PAM требует от модуля как минимум одного ответа УСПЕХ, и nullok заставляет этот модуль сказать ИГНОРИРОВАТЬ. Это означает, что если используется эта опция, по крайней мере, еще один модуль должен сообщить УСПЕХ. Один из способов сделать это - добавить auth required pam_permit.so в конец конфигурации PAM.
Это позволяет использовать
nullok
здесь безопасно.