Estou tentando definir o Google-Authenticator (autenticação de fator do google 2).
Os arquivos relevantes são:
[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
Seguindo os guias na Internet, para ativar o Google-2fa, você precisa editar /etc/pam.d/sshd
e adicionar esta linha:
auth required pam_google_authenticator.so
Você precisa editar /etc/ssh/sshd_config
e alterar essas linhas da seguinte maneira:
PasswordAuthentication no
ChallengeResponseAuthentication yes
No meu caso, o Google 2FA funciona e permite que os usuários que configuraram o google-authenticator façam login fornecendo tanto OTP quanto senha, mas quando tento me conectar ao usuário raiz na máquina de uma máquina na mesma rede, minha senha é rejeitado (mesmo que seja a senha correta).
Quando tento me conectar ao root @ machine, o problema parece assim:
Using username "root".
Using keyboard-interactive authentication.
Password:
Access denied
Using keyboard-interactive authentication.
Password:
E em /var/log/secure
:
sshd(pam_google_authenticator)[10990]: Failed to read "/root/.google_authenticator"
Eu nunca executei google_authenticator no usuário do root, então não sei por que ele está procurando por ele.
O que estou tentando alcançar é o seguinte:
-
Eu quero que "PermitRootLogin" seja definido como "no" globalmente (ao conectar-se ao servidor a partir do mundo externo), mas que ele será definido como "yes" se o IP da máquina remota corresponder à regra que especifica a rede local (como pode ser visto no arquivo de configuração).
-
Eu quero que os usuários que configuraram o google-2fa ainda consigam se conectar, fornecendo tanto OTP quanto senha.
Pode ser que a linha em /etc/pam.d/sshd
esteja mal colocada, mas não tenho certeza onde devo colocá-la.
Alguém sabe como fazer isso funcionar com essas regras?