Não é possível obter postgres e kerberos (gss) trabalhando juntos

4

Estou tentando fazer com que os postgres e kerberos, via GSSAPI, trabalhem juntos. Tendo problemas neste momento. Não ajuda que eu seja realmente um novato para ambas as tecnologias. Eu tenho postgres e kerberos trabalhando como esperado separadamente, e estou usando os dois (mas não juntos).

Encontrei instruções aqui: postressql-and-kerberos e realmente não encontrei qualquer coisa que explica mais detalhes.

Eu configurei essas duas linhas no arquivo postgresql.conf:

krb_server_keyfile = '/var/lib/pgsql/data/krb5.keytab' 
krb_srvname = 'postgres'

Eu verifiquei se isso está correto executando um 'kinit -kt' com essa informação. Eu adicionei estas duas entradas no meu arquivo pg_hba.conf:

# TYPE  DATABASE  USER    CIDR-ADDRESS   METHOD
host    all       all     10.0.1.0/24    gss include_realm=0 krb_realm=HOTDOG.REALM.COM

Eu reinicio o servidor e tento conectar através de um cliente remoto ...

kinit freddyboy
<enter password>

Isso é bem-sucedido, e posso ver os detalhes se eu fizer uma 'lista de klists'.

Então eu tento me conectar ao postgres, via:

psql -l -h postgresserver.hotdog.com

Recebo um erro dizendo:

pgql: GSSAPI continuation error:  Unspecified GSS failure.  Minor code may provide more information
GSSAPI continuation error: Server not found in Kerberos database

Se eu olhar para o arquivo de log do servidor (postgresql-Tue.log) ... tudo que vejo é "FATAL: GSSAPI authentication failed for user" fred ".

Bem, 'fred' é o meu logon no linux ... "freddyboy" é meu usuário principal. Portanto, parece que o cliente postgresql não está enviando a autenticação do kerberos como deveria. Eu tentei enviar o usuário:

 psql -l -h postgresserver.hotdog.com -U freddyboy

O arquivo de log agora diz "Falha na autenticação GSSAPI para o usuário" freddyboy ", mas, obviamente, ainda está falhando. Eu tenho um usuário postgres de 'freddyboy' que possui alguns bancos de dados. Eu consigo logar localmente bem, sem GSSAPI, mas parece que não consegue obter remotamente e com segurança.

Eu desconfio que em nenhum lugar do meu cliente eu tenha especificado que desejo o usuário GSSAPI. Como isso é apenas um cliente, os arquivos conf não estão presentes ... então isso pode ser um problema, eu acho.

Mais um ponto, o servidor kerberos é o ActiveDirectory. Eu vi algumas indicações de que o diretor deveria ser MAIÚSCULA. Eu tentei fazer o serviço principal ("POSTGRES") e meu usuário principal "FREDDYBOY", mas ainda não tenho amor.

Qualquer ajuda muito apreciada. Estou usando o Postgres 8.4.13 no cliente e no servidor.

Fred

    
por Wanderer 29.01.2013 / 15:07

1 resposta

1

O erro sugere que você não criou uma entidade de serviço para o servidor Postgres. Este é o principal que é armazenado no arquivo krb5.keytab no próprio servidor.

Como fazer isso pode ser encontrado na documentação do PostgreSQL, 20.3.3. Autenticação GSSAPI .

Se você criou esse principal adequadamente, o que provavelmente poderia ter acontecido é que a reversão de DNS não funcionou corretamente. Se você executar host no endereço IP do servidor Postgres, deverá obter postgresserver.hotdog.com de volta. Se você não fizer isso, a autenticação do Kerberos não funcionará.

    
por 09.02.2013 / 10:18