3.4.4. Exemplos de Arquivos de Configuração do PAM
Veja a seguir um exemplo de arquivo de configuração do PAM para um aplicativo:
#%PAM-1.0 auth required pam_securetty.so auth required pam_unix.so nullok auth required pam_nologin.so account required pam_unix.so password required pam_cracklib.so retry=3 password required pam_unix.so shadow nullok use_authtok session required pam_unix.so
A primeira linha é um comentário, conforme indicado pela cerquilha (#) no início da linha.
As linhas 2 à 4 agregam três módulos para a autenticação do login.
auth required pam_securetty.so — Este módulo garante que se o usuário está tentando se autenticar como root, o tty ao qual o usuário está tentando se autenticar, está listado no arquivo /etc/securetty, se tal arquivo existir.
Se o tty não estiver listado no arquivo, qualquer tentativa de autenticação como root, irá falhar com uma mensagem Autenticação Incorreta.
auth required pam_unix.so nullok — Este módulo solicita que o usuário forneça uma senha e então verifica a senha, se ela existir, no /etc/shadow, usando a informação contida no /etc/passwd..
auth required pam_nologin.so — Este é o último passo da autenticação, e verifica se o arquivo /etc/nologin existe. Se existir, e o usuário não for o root, a autenticação iráfalhar.
Neste exemplo, todos os três módulos auth são verificados, mesmo se o primeiro módulo auth falhe. Isto impede que o usuário fique sabendo em qual estágio a sua autenticação falhou. Tal informação nas mãos de um atacante pode permitir que ele deduza mais facilmente como violar a segurança do sistema.
account required pam_unix.so — Este módulo executa quaisquer verificações de conta necessárias. Por exemplo, se senhas shadow foram habilitadas, a interface account do módulo pam_unix.so verifica se a conta venceu ou se o usuário não mudou sua senha dentro do período de carência permitido.
password required pam_cracklib.so retry=3 — Se uma senha estiver vencida, o componente de senha do módulo pam_cracklib.so solicita o fornecimento de uma nova senha. Logo após, testa a nova senha para ver se a mesma pode ser facilmente determinada por um programa de quebra de senhas baseado em um dicionário.
O argumento retry=3 especifica que se o teste falhar na primeira vez, o usuário tem mais duas chances para criar uma senha mais robusta.
password required pam_unix.so shadow nullok use_authtok — Esta linha especifica que se o programa mudar a senha do usuário, deve fazê-lo usando a interface password do módulo pam_unix.so.
O argumento shadow faz com que o módulo crie senhas shadow ao atualizar a senha de um usuário.
O argumento nullok faz com que o módulo permita que o usuário mude a sua senha a partir de uma senha em branco, caso contrário, uma senha em branco é tratada como um bloqueio para a conta.
O último argumento desta linha , use_authtok, fornece um bom exemplo da importância da ordem ao agregar módulos PAM. Este argumento faz com que o módulo não solicite que o usuário forneça uma nova senha. Ao invés disto, aceita qualquer senha que tenha sido registrada anteriormente por um módulo de senha. Desta forma, todas as novas senhas devem passar o teste pam_cracklib.so para senhas seguras antes de serem aceitas.
session required pam_unix.so — A última linha faz com que a interface session do módulo pam_unix.so gerencie a sessão. Este módulo registra o nome de usuário e o tipo de serviço em /var/log/secure no início e no fim de cada sessão. Este módulo pode ser suplementado com funcionalidades adicionais ao ser agregado a outros módulos de sessão.