Uma introdução ao Linux-PAM

O Linux-PAM (Pluggable Authentication Modules for Linux) é uma suíte de bibliotecas distribuídas que viabilizam ao administrador do sistema especificar a forma que as aplicações autenticam os seus usuários. Basicamente, é um mecanismo bastante flexível para autenticação de usuários.

[ Hits: 71.373 ]

Por: João Lucas Pereira de Santana em 18/06/2010


Motivação



Historicamente, para efetuar a autenticação de um usuário, as aplicações verificavam a identidade do mesmo comparando senhas criptografadas armazenadas no arquivo /etc/passwd. O programa solicitava o login do usuário e sua senha, criptografava a senha e comparava o resultado com a armazenada no arquivo. O acesso era garantido caso as senhas fossem iguais. Um erro de autenticação era retornado caso fossem diferentes.

Suponha, no entanto, que o administrador queira fazer autenticação remota, ou utilizar um novo algoritmo de criptografia. Ele seria obrigado então, por exemplo, a mudar o programa login para que ele também suportasse essa nova forma de autenticação ou algoritmo mais eficiente. Não é difícil imaginar o tamanho do problema se todos os programas que utilizam algum tipo de autenticação tivessem de ser reescritos cada vez que se mudasse algum critério de autenticação.

Visando evitar esse tipo de situação, os modernos sistemas Linux realizam a autenticação via PAM.

Arquivos de configuração

O propósito do do projeto PAM é separar a concessão de privilégios nos aplicativos do desenvolvimento de esquemas de autenticação apropriados e seguros. Isto é realizado fornecendo-se uma biblioteca de funções utilizada pelas aplicações para solicitar a autenticação de usuários.

As bibliotecas PAM são configuradas no arquivo /etc/pam.conf ou no diretório /etc/pam.d/. Vale ressaltar que não é possível utilizar as duas formas de configuração do LinuxPAM. O administrador deve usar o arquivo /etc/pam.conf ou o diretório /etc/pam.d/, não os dois ao mesmo tempo.

Os arquivos de configuração utilizam módulos normalmente localizados no diretório /lib/security/ ou /lib64/security/ e se comportam como objetos carregáveis dinamicamente.

A configuração do arquivo /etc/pam.conf deve seguir o seguinte formato:

service-name	module-type	control-flag	module-path	args

Onde:
  • service-name: indica o nome do serviço associado à configuração (login, ftpd, su etc)
  • module-type: informa ao Linux-PAM qual o tipo de módulo utilizado, havendo um módulo para cada tipo de tarefa. Pode ser auth, account, session e password.
  • control-flag: indica à biblioteca PAM como reagir em caso de sucesso ou falha. Como os módulos podem ser empilhados e executados em série, um após o outro, este parâmetro informa a importância relativa de cada módulo, garantindo que todas as restrições para uma dada autenticação sejam satisfeitas.
  • module-path: indica o caminho da biblioteca PAM, o arquivo de módulo a ser utilizado.
  • args: são informações úteis ao módulo PAM durante o processo de negociação com a aplicação. Consiste de uma lista de argumentos a ser enviada ao módulo quando este for invocado.

Após a versão 0.56, o Linux-PAM permite uma forma mais flexível de configuração do sistema, através de arquivos dispostos no diretório /etc/pam.d/. Neste caso, cada serviço possuir um arquivo de mesmo nome no diretório. Assim, o serviço smtp será configurado via arquivo /etc/pam.d/smtp.

Os arquivos no diretório /etc/pam.d/ são configurados de forma similar à configuração do /etc/pam.conf. Entretanto, como o nome do serviço já é o nome do arquivo, o parâmetro service-name não é utilizado. Dessa forma, cada entrada em um arquivo no /etc/pam.d/ possui a seguinte forma:

module-type	control-flag	module-path	args

Algumas vantagens da utilização desta configuração simplificada do PAM são: facilidade de manutenção, possibilidade de fazer links simbólicos de um arquivo a outro, restrição de leitura do arquivo de configuração de uma dada aplicação e gerenciamento de instalações facilitado.

    Próxima página

Páginas do artigo
   1. Motivação
   2. Sintaxe dos arquivos de configuração
   3. Mãos à obra
   4. Realizando testes
Outros artigos deste autor

Implementação LDAP e Java

Leitura recomendada

Usando e instalando o Nessus no Linux

Capturando e-mails da rede com Mailsnarf

Técnicas forenses para identificação da invasão e do invasor em sistemas Unix/Linux através do SSH (parte 1)

Soluções para Acesso Remoto Seguro com SSH

VPN: IPSec vs SSL

  
Comentários
[1] Comentário enviado por removido em 18/06/2010 - 15:10h

Muito bom este trabalho. Talvez retire um pouco do medo que os usuários do slackware tem do PAM. Que o diga o patrick volkerding, para quem estes módulos são o próprio cramunhão em pessoa!!!

[2] Comentário enviado por jucaetico em 23/06/2010 - 07:19h

Cara, muito bom artigo. Um ajuda pra galera que vai fazer a LPIC-2. Abraços

[3] Comentário enviado por dfsantos em 29/06/2010 - 12:25h

Parabéns amigo, artigo de primeira. Se puder, gostaria de ver uma abordagem mais profunda referente ao PAM em seus proximos artigos.

[4] Comentário enviado por eferro em 17/11/2014 - 09:30h

Parabéns predisposição em compartilhar conhecimento. Excelente artigo.

[5] Comentário enviado por rpfreitas em 28/11/2014 - 09:22h

Parabéns, ótimo tutorial simples e objetivo e fácil entendimento.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts