Я недавно включил двухфакторную аутентификацию с помощью аутентификатора Google на моем сервере SSH. Однако я теперь сталкиваюсь с проблемой:
У меня есть другая группа пользователей на моем сервере, который я использую для SFTP, но та группа больше не может войти в систему, с тех пор 2FA не настраивается для пользователей в группе. Действительно ли возможно отключить модуль аутентификатора Google для той группы? Включение его для пользователей в группе не является опцией, потому что многочисленные пользователи будут использовать эту учетную запись.
PS: Я использую openssh-server
Можно использовать 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.a) sshd_config_pwd
определенные строки:
Port 1022
...
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM no
2.b) 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 обязательной
для всех пользователей
,кроме пользователей, принадлежащих к группе sudo и admin
(это означает, что если у пользователя из группы sudo или admin не настроена двухфакторная аутентификация, она будет аутентифицировать его/ее на основе их открытого ключа):
Файл: /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:
nullok
PAM требует хотя бы одного ответа SUCCESS от модуля, и nullok заставляет этот модуль сказать IGNORE. Это означает, что если эта опция используется, по крайней мере один другой модуль должен сказать УСПЕХ. Один из способов сделать это — добавить требуемую аутентификацию pam_permit.so в конец конфигурации PAM.
Это делает использование nullok
здесь безопасным.