DEV Community

rafaelbonilha
rafaelbonilha

Posted on

Usando PAM no Linux

O que é?

Bem, vamos primeiro falar sobre o que são os PAM, Plugglable Autentication Modules que são um conjunto de bibliotecas usadas para fazer autenticação, gerenciamento de contas, controle de recursos dos usuários no sistema, em adição ao tradicional sistema de acesso baseado em usuários/grupos, isto é, para todos os recursos que suportam ele é claro. Criados em 1997, eles estão disponíveis desde então para GNU/Linux e UNIX.

Em quase todos os casos de autenticação, o PAM está envolvido. Normalmente não fazemos interações diretamente nos arquivos de configuração do PAM, tendo outros aplicativos fazendo as alterações nele por você. A seguir mostraremos como saber se um aplicativo suporta PAM.

Como saber se um aplicativo suporta PAM?

Basta digitar o comando ldd programa, por exemplo.:

ldd /bin/login
Enter fullscreen mode Exit fullscreen mode

Se listar a biblioteca libpam, o programa possui suporte a PAM compilado. Se não for listada, o programa precisará ter seu código fonte alterado para poder tratar os módulos de autenticação que compõem o PAM.
Importante lembrar que deverá recompilar o programa após as alterações para que ele possa estar utilizando os recursos do PAM. A maioria dos módulos compartilhados do PAM são encontrados no arquivo de autenticação do sistema para autenticação local e no arquivo de autenticação de senha para o cenário que o aplicativo escuta em conexões remotas, sendo estes arquivos encontrados em /etc/pam.d.

Políticas no PAM

A política padrão no PAM é especificada em /etc/pam.d/other e ela será aplicada se não tiver nenhum outro arquivo de controle em /etc/pam.d. A política padrão é criada usando o módulo pam_unix.so, para criação e implantação de políticas mais restritivas é recomendado alterar em /etc/pam.d/other.

Os bloqueios são aplicados através do módulo pam_deny.so e os alertas de logs são enviados ao syslog pelo módulo pam_warn. Esses alertas são úteis em situações onde o módulo PAM que necessitem do serviço de autenticação sejam bloqueados por uma política criada, lembrando que o módulo pam_deny.so não bloqueia automaticamente.

Por isso é recomendável usar o pam_warn na configuração de políticas de autenticação mais restritivas de forma a verificar possíveis bloqueios indevidos.

Principais Módulos do PAM

A seguir iremos listar os principais módulos do PAM.

/etc/security
Este módulo possui uma coleção de arquivos de configuração para módulos específicos, muito usado pelas aplicações que suportam PAM.

/var/log/secure
Este é o arquivo de log onde a grande maioria dos erros de autenticação e segurança são inseridos, é nele que são exibidas as políticas de restrição.

/usr/lib64/security
São uma coleção de bibliotecas PAM que executam várias verificações de autenticação.

/etc/pam.d
É neste lugar que ficam os arquivos que os aplicativos utilizam para validar a autenticação. Neles são definidos quais módulos são verificados, usando quais opções e em qual ordem. Eles podem ser adicionados no sistema ao instalar um aplicativo compatível e são editados por outros aplicativos com suporte a PAM via libpam.

Agora vamos ver um caso de uso do PAM, de forma a trazer mais segurança a um sistema Linux.

Restrigir Acesso ao Root usando su

Para restringir a um número limitado de usuários que façam parte de um grupo criado especificamente para esse fim o acesso ao root com o comando su. A restrição irá funcionar mesmo que o usuário digite a senha correta do usuário root, onde ele receberá uma mensagem de senha ou login incorretos.
Para fazer isso, siga os passos a seguir.:

✔ Crie um grupo para os usuários que terão o acesso de root.
✔ Altere o arquivo /etc/pam.d/su. Coloque a linha abaixo (caso não exista) no arquivo de configuração:

auth       required   pam_wheel.so group=nomedogrupocriado
Enter fullscreen mode Exit fullscreen mode

O que essa linha faz é usar o módulo pam_wheel.so, solicitando que os usuários pertençam ao grupo criado. Salve e saia do editor.
✔ Ainda como usuário root, adicione os usuários no grupo, uma dica importante: Adicione o seu usuário primeiro, principalmente se estiver acessando o sistema remotamente. Isto irá impedir em caso de perda de conexão, que o seu usuário seja atingido pela política de restrição criada.
✔ Teste com outros usuários que tenham a senha de root e não estão no grupo criado para validar se as alterações foram aplicadas corretamente.

Assim mostramos um pouco do que o PAM pode fazer para melhorar o nível de segurança e autenticação em Sistemas Linux/Unix. Seus módulos permitem um ambiente muito mais robusto que os serviços por aplicativos podem fornecer para autenticação, por isso sua longevidade dentro do ecossistema Linux, estando disponível e sendo usado a mais de 20 anos.

Referências para o Post.:

https://www.ibm.com/docs/pt-br/netcoolomnibus/8.1?topic=authentication-pam-unix-linux
https://www.redhat.com/sysadmin/pluggable-authentication-modules-pam
https://github.com/linux-pam/linux-pam
https://www.ibm.com/docs/pt-br/spss-statistics/29.0.0?topic=authentication-configuring-pam
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/managing_smart_cards/pluggable_authentication_modules
https://www.linuxfromscratch.org/blfs/view/11.1/postlfs/linux-pam.html
https://www.guiafoca.org/guiaonline/seguranca/ch06s02.html

Top comments (0)