CentOS 7 SSH e 2FA (Autenticação Segura da ESET)

2

Estou empenhado em fazer com que dois fatores de autenticação no CentOS 7 funcionem; especificamente a autenticação via SSH e OTP.

Eu agradeceria muito se alguém pudesse me ajudar com isso. :)

Edit: Pelo que entendi no log abaixo, o módulo pam pede autenticação do servidor RADIUS, o servidor responde com o código 11 para que o módulo pam desafie o usuário para um OTP mas, em vez disso, o módulo apenas diz "falha na autenticação". Então o cliente deve ser o problema, né?

Aqui está um log de uma tentativa de login via SSH com a conta "[email protected]":

sshd[3652]: pam_radius_auth: Got user name [email protected]
sshd[3652]: pam_radius_auth: ignore last_pass, force_prompt set
sshd[3652]: pam_radius_auth: Sending RADIUS request code 1
sshd[3652]: pam_radius_auth: DEBUG: getservbyname(radius, udp) returned 0x7fa56490e1c0.
sshd[3652]: pam_radius_auth: Got RADIUS response code 11
sshd[3652]: pam_radius_auth: authentication failed
sshd[3652]: pam_sepermit(sshd:auth): Parsing config file:     /etc/security/sepermit.conf
sshd[3652]: pam_sepermit(sshd:auth): Enforcing mode, access will be allowed on match
sshd[3652]: pam_sepermit(sshd:auth): sepermit_match returned: -1
sshd[3652]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=10.0.0.31 [email protected]
sshd[3652]: Failed password for [email protected] from 10.0.0.31 port 57962 ssh2
sshd[3652]: Connection closed by 10.0.0.31 [preauth]

Abaixo, siga as configurações e configurações-infos

O ambiente de teste é dado pela infraestrutura da minha empresa; Usamos principalmente o Windows-Clients e o mesmo compartilhamento de servidores Windows e Linux.

Win-Server: Windows Server 2016 x64

  • Diretório ativo: Test.local
  • ESET Secure Authentication (servidor RADIUS)
    • Segredo compartilhado com o cliente: test345
    • A opção "Usar o recurso Access-Challenge do RADIUS" está ativada

Cliente / servidor Linux: CentOS 7.3 x64

  • entrou no domínio Test.local via realm
  • Login local com Contas AD e OTP-2FA sempre que possível
  • Login SSH com qualquer conta só é possível se pam_radius_auth.so não estiver definido como obrigatório em /etc/pam.d/sshd (o que significa que não há 2FA)

Configuração do Linux-Client / Server:

  • Servidor RADIUS e Shared-Secret são adicionados em / etc / raddb / server
  • pam_radius_auth.so está em / usr / lib64 / security /
  • auth required pam_radius_auth.so adicionado ao /etc/pam.d/sshd e /etc/pam.d/login

/etc/pam.d/login

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
auth       sufficient   pam_radius_auth.so
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_radius_auth.so    debug
auth       required pam_sepermit.so      debug
auth       substack     password-auth      debug
auth       include      postlogin     debug
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
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
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

/ etc / raddb / server

# server[:port] shared_secret      timeout (s)
10.0.0.1        test345            5
    
por pomf 05.01.2017 / 07:50

1 resposta

0

Eu consegui resolver esse problema sozinho.

Aparentemente, a única coisa que mudou foi a ordem dos módulos pam em /etc/pam.d/sshd .

A linha auth sufficient pam_radius_auth.so tem que estar abaixo de pam_sepermit.so e acima de password-auth .

Na verdade, a ordem dos módulos em /etc/pam.d/login também não foi correta.

A linha auth sufficient pam_radius_auth.so deve estar abaixo de pam_securetty.so e acima de system-auth .

Então, é assim que os arquivos parecem agora:

/etc/pam.d/login

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       sufficient   pam_radius_auth.so
auth       substack     system-auth
auth       include      postlogin
# auth       sufficient   pam_radius_auth.so
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

/etc/pam.d/sshd

#%PAM-1.0
auth       required pam_sepermit.so
auth       sufficient   pam_radius_auth.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions
-auth      optional     pam_reauthorize.so prepare
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
session    include      postlogin
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare
    
por 06.01.2017 / 11:15