Menu Principal

quinta-feira, 27 de outubro de 2011

PAM

PAM é a parte principal da autenticação em um sistema Linux. PAM significa Pluggable Authentication Modules, ou Módulos de Autenticação Plugáveis/Modulares.
Originalmente a autenticação no Linux era apenas via senhas criptografadas armazenadas em um arquivo local chamado /etc/passwd. Um programa como o login pedia o nome do usuário e a senha, criptografava a senha e comparava o resultado com o armazenado naquele arquivo. Se fossem iguais, garantia o acesso à máquina. Caso contrário, retornava erro de autenticação. Isto até funciona muito bem para o programa login, mas, digamos que agora eu queira usar isso também para autenticação remota. Ou seja, a base de usuários não está mais na mesma máquina, mas sim em alguma outra máquina da rede, o chamado servidor de autenticação. Teremos que mudar o programa login para que ele também suporte esse tipo de autenticação remota.
Surgiu um novo algoritmo de criptografia, muito mais avançado, mais rápido, criptografa melhor, etc. Queremos usar esse novo algoritmo. Claro que teremos que mudar novamente o programa login para que ele suporte este novo algoritmo também. No Linux, muitos programas utilizam algum tipo de autenticação de usuários. Imagine se todos eles tivessem que ser reescritos cada vez que se mudasse algum dos critérios de autenticação.
Para resolver este tipo de problema, a Sun® criou o PAM há alguns anos e liberou as especificações em forma de RFC. O Linux derivou sua implementação do PAM a partir deste documento. Com PAM, o aplicativo login deste exemplo teria que ser reescrito apenas uma vez, justamente para suportar PAM. A partir de então, o aplicativo delega a responsabilidade da autenticação para o PAM e não se envolve mais com isso.
Voltando ao exemplo anterior, no caso de se querer utilizar um outro algoritmo de criptografia para as senhas, basta que o módulo PAM seja modificado para que todos os aplicativos automaticamente e de forma transparente passem a usufruir desta nova forma de autenticação. PAM possui uma outra vantagem: é possível configurar a autenticação de forma individual para cada aplicativo. Com isto é possível fazer com que, por exemplo, um usuário comum possa usar os dispositivos de áudio do computador desde que tenha se logado na máquina através do console. Se o login não tiver sido feito no console (por exemplo, é um login remoto via ssh), este tipo de acesso ao hardware será negado. Será que os programas login ou ssh sabem alguma coisa sobre o dispositivo de áudio da máquina? É claro que não. Eles não precisam. Os módulos PAM se encarregam disso.
Na verdade, PAM vai um pouco além da autenticação. Os módulos podem ser divididos em quatro tipos:

auth:
É a parte que verifica que o usuário é realmente quem ele diz que é. Pode ser bem simples, pedindo apenas por um nome e uma senha, ou utilizando autenticação biométrica, por exemplo (como uma impressão de voz, uma imagem da retina ou impressão digital).
account:
Esta parte verifica se o usuário em questão está autorizado a utilizar este serviço ao qual ele está se autenticando. Os módulos aqui podem checar por horário, dia da semana, origem do login, login simultâneo, etc.
passwd:
Este serviço é usado quando se deseja mudar a senha. Por exemplo, aqui podem ser colocados módulos que verificam se a senha é forte ou fraca.
session:
Por fim, a parte session fica encarregada de fazer o que for necessário para criar o ambiente do usuário. Por exemplo, fornecer o acesso a alguns dispositivos locais como o de áudio ou cdrom, montar sistemas de arquivos ou simplesmente fazer o registro do evento nos arquivos de log do sistema.
Um módulo PAM pode ou não conter todas estas funções. O módulo pam_pwdb, por exemplo, pode ser usado nestes quatro tipos e possui ações diferentes em cada uma das situações, enquanto que pam_console é normalmente usado apenas como session.


Nenhum comentário:

Postar um comentário