Нижче буде зробити 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)
Відповідно до документації README.md Google Authenticator :
нулок
PAM вимагає принаймні одного відповіді про успіх від модуля, і nullok викликає цей модуль сказати IGNORE. Це означає, що якщо використовується ця опція, принаймні один інший модуль повинен мати відповідь SUCCESS. Один із способів зробити це - додати потрібний auth pam_permit.so до кінця конфігурації PAM.
Це робить використання nullok
тут безпечним.