quarta-feira, 28 de setembro de 2011

Visão Geral do PAM

Para quem não conhece, nós começaremos por um exemplo. Uma aplicação que concede alguns serviços para os usuários; login é um programa. O Login faz duas coisas, ele primeiro verifica se o usuário solicitante é quem ele diz ser e segundo lhe fornece o serviço solicitado: no caso do login o serviço é um comando Shell (bash, tcsh, zsh, etc.) rodando com a identidade do usuário.

Tradicionalmente, o primeiro passo é realizado através da aplicação de Login que solicita ao usuário uma senha e então verifica se a autenticação confere com o sistema, se o usuário é quem diz ser, o sistema vai para o segundo passo. Esta é a tarefa que é delegada ao Linux-PAM.

Do ponto de vista do programador da aplicação (neste caso, a pessoa que escreveu a aplicação de Login), Linux-Pam cuida dessa tarefa de autenticação – verificar a autenticação do usuário.

A flexibilidade do Linux-PAM é que você, o administrador de sistema, tem a liberdade para estipular qual o esquema de autenticação será usado. Você tem a liberdade para configurar o esquema  para um ou todas aplicações PAM do seu Linux.

Isto é, você pode autenticar de qualquer coisa desde confiança simples (pam_permit) à algo paranoico como uma combinação de escaneamento de retina, autenticação por voz e uma simples senha.

Pam lida com quatro tipos distintos de gestão. Estes são: gerenciamento de autenticação; gerenciamento de contas; gerenciamento de sessão e gerenciamento de senhas.

A associação de gestão preferencial com o comportamento de uma aplicação é feita com entradas no arquivo de configurações do PAM.

A associação do sistema de gestão preferencial com o comportamento de uma aplicação é feita com entradas no arquivo de configuração relevantes Linux-PAM. As funções de gerenciamento são realizadas por módulos específicos no arquivo de configuração.

As funções de gestão são realizadas por módulos especificados no arquivo de configuração.

Abaixo uma ilustração que a organização geral do PAM:

+--------------------+
| Aplicação: X    |
+--------------------+           /   +------------+      +=============================+
|Autenticação-  [---->—\—]  Linux –  |—< |   Arquivo de Configuração PAM  |
|            +             [----<—/—]  PAM       |      |=============================|
| conversation()[—+      \   |                |      | X auth …… a.so                               |
+--------------------+    |          +-n—n-----+      | X auth …… b.so                               |
|                           |    |              |    |              |                                               _____ /
|     Usuário        |    A             |    |               |                                      -----‘   
|                           |     |             V   A               |_________________´
+--------------------+     + ---------|---|--------------------+----------------+-----------------+
                                           +----u---u--------+              |                      |                      |
                                           |   auth…           |--------[ a ]-------------[ b ]-------------[ c ]
                                           +------------------+
                                           |     acct …          |-------[ b ]--------------[ d ]
                                           +------------------+
                                           |   password    |--------[ b ]--------------[ c ]
                                           +------------------+
                                           |   session        |--------[ e ]--------------[ c ]
                                           +------------------+     

A titulo de explicação,  a esquerda da figure representa à aplicação; aplicação X. Tal interface de aplicativos com a biblioteca Linux-PAM e não conhece nenhuma das especificidades de seu método de autenticação configurado. A biblioteca Linux-PAM (no centro) consulta o conteúdo do arquivo de configuração do PAM e carrega os módulos que são apropriados para a aplicação X. Esses módulos dividem-se em um dos quatros grupos de gestão (inferior-centro) e são empilhados na ordem em que aparecem no arquivo de configuração. Estes módulos, quando chamado pelo PAM, executa tarefas de autenticação de diferentes aplicações. Informações textuais, exigidos ou oferecidos aos usuários, podem ser trocados através do uso do aplicativo fornecido pela função conversation.

Se um programa vai usar o PAM, então ele tem que ter funções PAM explicitamente codificadas no programa. Se você tem aceso aos código fontes você pode adicionar apropriadamente as funções PAM. Se você não tem acesso ao código fonte, e os binários não incluem funções do PAM, então não é possível usar o PAM.

Nenhum comentário:

Postar um comentário