terça-feira, 27 de setembro de 2011

Introdução ao PAM para Linux

Linux-PAM (Pluggable Authentication Modules for Linux) é uma coleção de bibliotecas compartilhadas que permite ao administrador de sistema escolher como a aplicação autentica os usuários.

Em outras palavras, sem recompilar uma aplicação adaptada ao PAM, é possível alternar entre o mecanismo de autenticação que ele usa. De fato, pode-se atualizar inteiramente o sistema de autenticação local em afetar os próprios aplicativos.

Historicamente uma aplicação exige que um determinado usuário seja autenticado, e para isso a aplicação teve que ser compilado para usar um mecanismo de autenticação específico. Por exemplo, no caso dos UN*X tradicionais, a identidade do usuário é verificada por uma senha que o usuário digita corretamente. Essa senha, depois de ter sido prefixada por duas vezes, é criptografada (com crypt). O usuário é então autenticado, se essa senha encriptada é idêntica ao segundo campo de entrada do usuário no banco de dados de senha do sistema (o arquivo /etc/passwd).  Na maioria dos sistemas UNIX se não todas, as formas de privilégios são feito com base neste sistema de autenticação único. Esse tipo de autenticação vem na forma de um identificador único de usuário (UID) e membros de vários grupos.
Serviços e aplicações são autenticados baseados na identificação (UID) e no grupo (GID) do usuário. Tradicionalmente, os membros dos grupos são baseado nas entradas do arquivo /etc/group.

Este é o objetivo do Projeto Linux-PAM para separar o desenvolvimento de permissões de privilégio de software do desenvolvimento de redes seguras e esquemas de autenticação apropriadas.  Isto é realizado através de uma biblioteca de funções que um aplicativo pode usar para solicitar que um usuário seja autenticado. Esta biblioteca PAM é configurada localmente com um arquivo de sistema, /etc/pam.conf (ou uma serie de arquivos locais em /etc/pam.d/) para autenticar uma solicitação do usuário dos módulos de autenticação disponíveis localmente. Os módulos são geralmente localizados no diretório /lib/security ou /lib64/security e toma a forma de arquivos de objetos carregável dinamicamente.

Nenhum comentário:

Postar um comentário