Я пытаюсь установить 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, поэтому не знаю, зачем он его ищет.
Я пытаюсь достичь следующего:
Я хочу, чтобы для параметра «PermitRootLogin» было установлено значение «нет» глобально (при подключении к серверу из внешнего мира), но чтобы для него было установлено значение «да», если IP-адрес удаленной машины соответствует правилу, определяющему локальную сеть ( как видно в файле конфигурации).
Я хочу, чтобы пользователи, настроившие google-2fa, по-прежнему могли входить в систему, указав как OTP, так и пароль.
Возможно, строка в /etc/pam.d/sshd
неуместен, но я не уверен, где его разместить.
Кто-нибудь знает, как заставить его работать с этими правилами?
Вы упустили одну маленькую деталь из руководство:
нуллок
Разрешить пользователям входить в систему без OTP, если они еще не настроили OTP.
Ваш pam.d/sshd
файл должен включать следующее:
auth required pam_google_authenticator.so nullok
Если вы не используете nullok
, все пользователи без настройки аутентификации Google будут заблокированы. С помощью nullok
, они могут войти в систему без 2FA, пока не настроят ее.