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

Как настроить аутентификатор Google и установить определенные правила соответствия, чтобы разрешить разные правила входа в систему?

Я пытаюсь установить Google-Authenticator (двухфакторная аутентификация Google).

Соответствующие файлы:

[root@srv01 ~]# cat /etc/pam.d/sshd
#%PAM-1.0
auth      required    pam_google_authenticator.so
auth      required    pam_sepermit.so
auth      include     password-auth
account   required    pam_nologin.so
account   include     password-auth
password  include     password-auth
# pam_selinux.so close should be the first session rule
session   required    pam_selinux.so close
session   required    pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session   required    pam_selinux.so open env_params
session   required    pam_namespace.so
session   optional    pam_keyinit.so force revoke
session   include     password-auth


[root@srv01 ~]# egrep -v '^#' /etc/ssh/sshd_config | sed '/^$/d'
Protocol 2
SyslogFacility AUTHPRIV
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding yes
Subsystem       sftp    /usr/libexec/openssh/sftp-server
UsePAM yes
Match Address 10.13.0.*
  PermitRootLogin yes
  PasswordAuthentication yes

Следуя руководствам в Интернете, чтобы включить Google-2fa, вам необходимо отредактировать /etc/pam.d/sshd и добавьте эту строку:

auth      required    pam_google_authenticator.so

И тогда вам нужно отредактировать /etc/ssh/sshd_config и измените эти строки следующим образом:

PasswordAuthentication no
ChallengeResponseAuthentication yes

В моем случае Google 2FA работает и позволяет пользователям, которые настроили google-Authenticator, входить в систему, предоставляя как OTP, так и пароль, но когда я пытаюсь подключиться к пользователю root на машине с машины в той же сети, мой пароль отклоняется (даже хотя это правильный пароль). Когда я пытаюсь подключиться к машине root @, проблема выглядит так:

Using username "root".
Using keyboard-interactive authentication.
Password:
Access denied
Using keyboard-interactive authentication.
Password:

И в /var/log/secure:

 sshd(pam_google_authenticator)[10990]: Failed to read "/root/.google_authenticator"

Я никогда не запускал google_authenticator от имени пользователя root, поэтому не знаю, зачем он его ищет.

Я пытаюсь достичь следующего:

  1. Я хочу, чтобы для параметра «PermitRootLogin» было установлено значение «нет» глобально (при подключении к серверу из внешнего мира), но чтобы для него было установлено значение «да», если IP-адрес удаленной машины соответствует правилу, определяющему локальную сеть ( как видно в файле конфигурации).

  2. Я хочу, чтобы пользователи, настроившие google-2fa, по-прежнему могли входить в систему, указав как OTP, так и пароль.

Возможно, строка в /etc/pam.d/sshd неуместен, но я не уверен, где его разместить.

Кто-нибудь знает, как заставить его работать с этими правилами?

Вы упустили одну маленькую деталь из руководство:

нуллок

Разрешить пользователям входить в систему без OTP, если они еще не настроили OTP.

Ваш pam.d/sshd файл должен включать следующее:

auth      required    pam_google_authenticator.so    nullok

Если вы не используете nullok, все пользователи без настройки аутентификации Google будут заблокированы. С помощью nullok, они могут войти в систему без 2FA, пока не настроят ее.