Autenticação de usuário do PostgreSQL contra o PAM

2

Estou tentando configurar a autenticação via PAM para o PostgreSQL 9.3. Eu já consegui fazer isso funcionar em um servidor Ubuntu 12.04, mas não consigo fazer isso funcionar em uma instalação do Centos-6.

A linha pg_hba.conf relevante:

host    all             all             0.0.0.0/0               pam     pamservice=postgresql93

O pam.d/postgressql93 é a configuração padrão enviada com o pacote oficial postgresql 9.3:

#%PAM-1.0

auth            include         password-auth
account         include         password-auth

Quando um usuário tenta autenticar o seguinte, é relatado em secure log:

hostname unix_chkpwd[31807]: check pass; user unknown
hostname unix_chkpwd[31808]: check pass; user unknown
hostname unix_chkpwd[31808]: password check failed for user (myuser)
hostname  postgres 10.1.0.1(61459) authentication: pam_unix(postgresql93:auth): 
    authentication failure; logname= uid=26 euid=26 tty= ruser= rhost=  user=myuser

O conteúdo relevante de password-auth config é:

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

O problema é com o pam_unix.so . Não é possível validar a senha e não é possível recuperar as informações do usuário (quando eu removo a entrada auth de pam_unix.so ).

A instalação do Centos-6 tem apenas 5 dias e não tem muita bagagem.

O unix_chkpwd é suid e tem direitos de execução para todos, então ele deve ser capaz de verificar o arquivo shadow (que não tem nenhum privilégio?).

    
por elmuerte 25.08.2014 / 16:51

1 resposta

2

Eu resolvi o problema alterando a configuração do Centos para ficar mais parecido com o configurado no Ubuntu.

Eu criei o grupo shadow com um ID de grupo baixo e nenhum membro. Alterei o grupo para /etc/shadow e /sbin/unit_chkpwd para o grupo criado shadow . E finalmente eu fiz unix_chkpwd SGID:

----r----- 1 root shadow 1049 Aug 22 16:38 /etc/shadow
-rwxr-sr-x 1 root shadow 34840 Nov 22  2013 /sbin/unix_chkpwd

Com essas mudanças, posso usar o PAM para autenticar usuários do sistema para o PostgreSQL. Não sinto que tenha comprometido muito a segurança com essas mudanças. Embora o arquivo shadow agora seja legível para usuários não-root, se eles pertencerem ao grupo de sombra.

    
por 26.08.2014 / 12:46