Entendendo a comunicação entre o PAM e o daemon que reconhece o PAM

3

Digamos que eu tenha configurado o sshd (vinculado à biblioteca compartilhada libpam.so.0 ) para usar o PAM e tenho o seguinte /etc/pam.d/sshd content:

auth        requisite   pam_nologin.so
auth    required        pam_env.so
auth    required        pam_unix.so     try_first_pass 
auth    required        pam_google_authenticator.so
account     requisite   pam_nologin.so
account required        pam_unix.so     try_first_pass
password        requisite       pam_cracklib.so
password        required        pam_unix.so     use_authtok nullok shadow try_first_pass 
session     required    pam_loginuid.so
session required        pam_limits.so
session required        pam_unix.so     try_first_pass 
session optional        pam_umask.so
session optional        pam_systemd.so
session optional        pam_env.so
session  optional       pam_lastlog.so   silent noupdate showfailed

Estou correto que o PAM informe sshd sobre sucesso ou falha no final de cada pilha? Então, primeiro auth instalações são processadas e, em seguida, o resultado é retornado para sshd , então account instalações são processadas e o resultado de account stack é retornado para sshd , etc? O PAM é informado pelo daemon quando a sessão autenticada termina?

    
por Martin 15.01.2018 / 23:10

2 respostas

3

De certa forma, é isso que está acontecendo, mas eu não diria isso dessa maneira. Porque o PAM não informa o sshd ativamente, mas sim o sshd pergunta ao PAM via chamadas de função (como pam_authenticate , pam_acct_mgmt , etc.) e age de acordo com os resultados. O PAM também não sabe automaticamente quando uma sessão é encerrada, mas tem que ser informado via pam_close_session (desde uma sessão pode ser fechada de outro aplicativo).

Você pode procurar o código-fonte do openssh para entender onde e como o sshd utiliza o PAM. Eu também recomendaria o Guia dos desenvolvedores de aplicativos Linux-PAM se você estiver interessado nos detalhes.

    
por 19.01.2018 / 12:21
1

Se por pilha, você quer dizer auth, account, password e session então não, o PAM não informa o sshd após cada um. Estar empilhado significa apenas que eles são usados juntos para fazer uma coisa que no seu caso é conceder ou negar acesso. A primeira coluna é a interface do módulo, a segunda é o sinalizador de controle e a terceira é o nome e os argumentos do módulo. Para o primeiro, o auth verifica a senha, a conta determina se a conta que está sendo usada tem ou não acesso, se a senha é para alterar as senhas e se a sessão é para montar o diretório inicial ou ativar o correio. O flag de controle é autoexplicativo: required significa que deve ser true, suficiente será ignorado se falhar, mas continuará se for bem-sucedido e assim por diante. O último informa qual módulo usar para o PAM nesse caso.

2) Não.

    
por 18.01.2018 / 01:54

Tags