Como funciona e configurar o PAM no Linux

A segurança no gerenciamento de usuários em ambientes Linux é essencial e devemos sempre buscar as melhores opções disponíveis para esse fim, interna ou externamente. Um dos métodos mais seguros para aumentar a segurança em sistemas Linux é administrar de forma muito mais eficiente. Completa o forma como os usuários são autenticados no sistema, isso permite que apenas os usuários que possuem as credenciais corretas tenham acesso ao sistema.

Para este caso temos uma funcionalidade chamada Linux-PAM (Pluggable Authentication Modules for Linux - Pluggable Authentication Modules for Linux) que foi desenvolvida como um conjunto de bibliotecas com as quais será possível ao administrador do sistema selecionar a forma como as aplicações autenticar usuários na rede local.
Ao compilar um aplicativo compatível com PAM, podemos alternar entre os mecanismos de autenticação usados.

Para entender um pouco melhor este conceito, podemos analisar a forma como os usuários estão autenticados atualmente, primeiro de tudo a identidade do usuário é verificada quando a senha atribuída ao usuário é inserida, essas senhas são armazenadas no arquivo / etc / passwd, então, o privilégio é definido na forma de um identificador de usuário pessoal denominado UID e a associação aos grupos, serviços e aplicativos disponíveis são disponibilizados com base na identidade pessoal e de grupo de cada usuário.

A biblioteca PAM é configurada localmente no arquivo de sistema /etc/pam.conf ou em uma série de arquivos localizados em /etc/pam.d/ para autenticar uma solicitação do usuário através dos módulos de Autenticação disponíveis apenas localmente.

Os módulos estão disponíveis no diretório / lib / security ou / lib64 / security. A sintaxe do arquivo de configuração /etc/pam.conf é composta de uma lista de regras, e cada regra está localizada em uma única linha, mas pode ser estendida com uma linha terminando em `\ '. Os comentários são precedidos por marcas '#' e se estendem até o próximo final da linha selecionada.

O formato de cada regra é uma coleção de tabulações separadas por espaços, as três primeiras não diferenciam maiúsculas de minúsculas como este:

 argumentos de módulo de caminho de módulo de controle de tipo de serviço
Os parâmetros usados ​​são:

ServiçoÉ o nome real do aplicativo.
ModeloÉ o tipo de módulo / contexto / interface.
Ao controleRefere-se ao comportamento da API PAM caso o módulo não consiga executar a tarefa de autenticação
Caminho do móduloÉ o nome do arquivo absoluto ou caminho relativo do PAM.
argumentos de móduloIndica uma lista de tokens separados por espaço com o objetivo de controlar o comportamento do módulo.

A sintaxe de cada arquivo em /etc/pam.d/ é idêntica e consiste em linhas com a seguinte estrutura:

 tipo de sinalizador de controle de módulo de argumentos de módulo
Por exemplo, uma definição de regra (sem argumentos de módulo) disponível no arquivo /etc/pam.d/sshd, que não permite logins não raiz quando / etc / nologin está disponível é:
 conta necessária pam_nologin.so

1. Como gerenciar grupos e controles PAM no Linux


As tarefas de autenticação PAM são catalogadas em quatro grupos de administração separados, cada um desses grupos gerenciando diferentes aspectos da solicitação de um usuário para um serviço restrito.

Um módulo é associado a um desses tipos de grupos de administração da seguinte maneira:

contaEste valor oferece os serviços de verificação da conta com aspectos como expiração da senha do usuário ou se o usuário tem permissão para acessar o serviço solicitado.
autenticaçãoCom esse valor, um usuário é autenticado e as credenciais do usuário podem ser configuradas.
senhaEles permitem que os usuários atualizem as senhas e são integrados aos módulos de autenticação PAM
sessãoÉ responsável por gerenciar as ações realizadas no início e no final de uma sessão.

Os arquivos de objeto PAM estão localizados no seguinte diretório / lib / security / ou / lib64 / security, dependendo da arquitetura usada.

Os sinalizadores de controle suportados no PAM são:

necessárioCom este indicador, a falha retorna instantaneamente o controle para a aplicação, indicando a natureza da falha do primeiro módulo.
requeridosÉ indicado que todos os módulos são necessários para que a libpam seja executada corretamente e retorne com sucesso à aplicação
suficienteEste módulo leva a um retorno imediato e correto da aplicação, neste caso a falha deste módulo é ignorada.
opcionalO sucesso ou falha deste módulo geralmente não é registrado neste indicador

Existem outros valores, como:

incluirInclui todas as linhas do tipo baseadas no arquivo de configuração específico como um argumento para este controle.
sub-pilhaInclui todas as linhas do tipo fornecido do arquivo de configuração especificado como um argumento para este controle específico.

2. Como verificar se um programa é compatível com PAM no Linux


Para implementar o PAM em um aplicativo, ele deve ter sido escrito e compilado especificamente para usar o PAM, para verificar se esse aplicativo é compatível ou não, por exemplo, SSH, executaremos o seguinte:
 sudo ldd / usr / sbin / sshd | grep libpam.so

PROLONGAR

3. Como restringir o acesso root via SSH com PAM no Linux


O PAM pode ser usado para desabilitar o acesso do usuário root a um sistema por meio de SSH e programas de login e isso ajuda a aumentar as opções de segurança do sistema.

Se quisermos fazer isso, usaremos o módulo /lib/security/pam_listfile.so que nos dá a opção de limitar os privilégios de contas específicas.

Passo 1
Para realizar esta ação, vamos acessar o arquivo /etc/pam.d/ da seguinte maneira:

 sudo nano /etc/pam.d/sshd
OU
 sudo nano /etc/pam.d/login
Passo 2
Lá veremos o seguinte:

PROLONGAR

etapa 3
Para este caso, adicionaremos as seguintes linhas no final:

 auth required pam_listfile.so \ onerr = sucesso item = user sense = deny file = / etc / ssh / deniedusers

PROLONGAR

Nesse caso, os seguintes parâmetros foram adicionados:

authÉ o tipo de módulo a ser usado
requeridosÉ um sinalizador de controle com o qual, se o módulo for usado, ele deve ser aprovado ou o resultado geral falhará independentemente do status dos outros módulos.
pam_listfile.soÉ um módulo com o qual é permitido negar ou permitir serviços baseados em um arquivo arbitrário.
onerr = sucessoÉ o argumento do módulo.
item = usuárioÉ o argumento do módulo em que se indica o que está listado no arquivo e que deve ser verificado.
sentido = negarRefere-se ao argumento do módulo em que se especifica a ação a ser executada, caso se encontre no arquivo, caso contrário, é solicitada a ação oposta.
arquivo = / etc / ssh / deniedusersÉ o argumento do módulo no qual um arquivo contendo um elemento por linha é especificado.

Salvamos as alterações usando as teclas Ctrl + O e saímos do editor usando Ctrl + X.

Depois disso, devemos criar o arquivo / etc / ssh / deniedusers e adicionar o usuário root nele e posteriormente atribuir as respectivas permissões:

 sudo chmod 600 / etc / ssh / deniedusers

4. Como configurar o PAM avançado no Linux


Um valor especial é o valor padrão no PAM, portanto, todos os valores não são mencionados explicitamente, portanto, o valorN corresponde ao código de retorno da função chamada no módulo para o qual a linha está definida.
A ação possui alguns argumentos, como:

ignorarNo caso de usar esta ação com uma pilha de módulos, o status de retorno do módulo não gera um código de retorno da aplicação.
mauIndica que o código de retorno deve ser considerado como indicativo das falhas do módulo utilizado.
morrerEle cumpre a mesma função que o ruim, mas é capaz de encerrar a pilha de módulos e o PAM retorna imediatamente ao aplicativo.
OKEste valor informa ao PAM que o administrador do sistema usará este código de retorno diretamente para o código de retorno da pilha completa de módulos.
feitoDesempenha a mesma função que Ok, mas pode encerrar a pilha de módulos
N(um inteiro sem sinal) - Equivalente a ok, mas pode pular os próximos N módulos na pilha.
RedefinirO uso deste parâmetro limpa toda a memória de estado da pilha do módulo e reinicia com o próximo módulo empilhado.

Cada uma das palavras-base do PAM é obrigatória; requisito; suficiente e opcional, ter uma expressão equivalente em termos da sintaxe […], com a qual será possível escrever regras mais complexas como:

requeridos[sucesso = ok new_authtok_reqd = ok ignore = ignore default = bad]
necessário[sucesso = ok new_authtok_reqd = ok ignorar = ignorar padrão = morrer]
suficiente[sucesso = feito new_authtok_reqd = feito padrão = ignorar]
opcional[sucesso = ok new_authtok_reqd = ok default = ignore]

Passo 1
Por exemplo, no CentOS 7 podemos ver as regras do arquivo PAM executando:

 sudo nano /etc/pam.d/postlogin

PROLONGAR

Passo 2
Se acessarmos o arquivo:

 sudo nano /etc/pam.d/smartcard-auth

PROLONGAR

Para acessar mais ajuda do PAM, podemos executar:

 man pam.d
Com o PAM será possível criar ou editar regras para uma melhor administração dos processos de autenticação no Linux.

wave wave wave wave wave