Autenticação do Samba

1

Eu sei que parece que eu não fiz a pesquisa aqui, porque eu fiz isso, e eu sei quantas perguntas e tutoriais relacionados existem. Eu li todos os tutoriais que posso encontrar on-line para isso. Eu passei pela lista completa dos tópicos do Samba / Kerberos / AD / authentication no serverfault.

Na verdade, o tutorial que me levou mais longe, só porque consegui verificar o sucesso em cada etapa, foi o link . Infelizmente, ainda não funcionou. Sem mais delongas, meu problema:

Eu tenho um convidado KVM rodando o CentOS 6.5. Eu instalei o Samba 3.6.9. Eu quero usar o Samba para compartilhar diretórios de usuários para que eles possam mapeá-los como unidades de rede em máquinas com Windows 7. Eu fiz isso com sucesso usando smbpasswd com contas locais. O problema é que eu quero autenticar esses usuários usando o Kerberos (Active Directory, sobre o qual não tenho controle). Eu não preciso nem quero qualquer tipo de informações de usuário, grupo ou política do Kerberos / AD / LDAP. Eu apenas quero autenticar a senha do usuário conforme fornecida pelo usuário para a GUI de mapeamento de unidade do Windows e enviada para o Samba.

Também é importante notar que eu já configurei o Kerberos para acesso SSH no mesmo convidado KVM para os mesmos usuários. Com entradas em /etc/passwd e nenhuma senha definida em /etc/shadow , os usuários inserem sua senha Kerberos no login SSH e são autenticados. Isso é exatamente o que eu quero para o Samba. Eu quero que os usuários "Map Network Drive", digite o FQDN do servidor Samba, digite seu nome de usuário e senha, e mande o Samba autenticá-los com a senha da mesma forma que o SSH os autentica com a senha. mapeado com sucesso.

Eu fiz:

service winbind start
service smb start
service nmb start

O krb5.conf , que funciona muito bem para a autenticação SSH, é:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = MYDOMAIN.COM
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 MYDOMAIN.COM = {
  kdc = mydomain.com
  admin_server = mydomain.com
 }

[domain_realm]
 .mydomain.com = MYDOMAIN.COM
 mydomain.com = MYDOMAIN.COM

Em /etc/samba/smb.conf , tentei muitas coisas, mas a configuração que parece mais lógica com base em todos os tutoriais envolve, de forma mais relevante:

workgroup = MYDOMAIN
security = ads
realm = MYDOMAIN.COM
encrypt passwords = yes
kerberos method = secrets only
password server = mydomain.com

Vale a pena notar que mydomain.com é o FQDN do meu servidor e MYDOMAIN.COM é o reino do Kerberos, por isso não é um erro de digitação.

O problema é que, em primeiro lugar, a maioria dos tutoriais fala sobre como gerar um keytab e um princípio para o host. Eu não entendo isso, porque eu não estou autenticando o host, mas apenas os usuários. Além disso, a autenticação de senhas SSH com o Kerberos não exige tal etapa, tanto quanto eu sei (eu não precisei fazer isso). Eles sugerem a configuração adequada "método kerberos = segredos e keytab". Segundo, muitos tutoriais parecem centrados em obter informações sobre usuários e grupos que estão armazenados no Active Directory ou autenticar usuários contra o Samba para algum outro propósito usando o Kerberos. Eu só quero usar o Samba para compartilhamento de arquivos e eu só quero usar o Kerberos para autenticar senhas como minha configuração SSH.

Toda tentativa e todo tutorial que eu segui resulta em falha. Verifico /var/log/samba/* para logs e localizo arquivos com um nome incluindo o endereço IP da máquina conectada, mas nenhuma informação sobre a tentativa de conexão. Esses arquivos de log estão vazios.

Vale a pena notar que, embora eu possa ingressar em meu servidor no domínio, não tenho privilégios administrativos, portanto, não consigo gerar um keytab (embora eu não entenda por que o Samba precisa de um, se o SSH não). / p>

Alguém poderia, por favor, me dar alguma ajuda para realizar isso? Ou, se de alguma forma isso não puder ser feito, deixe-me saber e explicar por quê? Eu não me importo de ser apontado para um tutorial, mas eu honestamente vasculhei todos os tutoriais que posso encontrar, então, por favor, esteja disposto a aceitar perguntas de acompanhamento se você fornecer um link tutorial.

Muito obrigado.

    
por rg6 24.04.2014 / 08:57

2 respostas

1

The problem is, first, most tutorials talk about generating a keytab and a principal for the host. I do not understand this, because I am not authenticating the host but only the users.

Eu sei que esta resposta é de alguns anos após a pergunta ser feita, mas, a partir do arquivo centrifydc.conf da Centrify:

Por padrão, o TGT de um usuário será verificado recuperando e verificando um ticket de serviço para o sistema local. Esta verificação é feita para prevenir um ataque bem conhecido (Zanarotti aka screen-saver attack) um invasor KDC poderia responder ao nosso pedido para obter o TGT do usuário. Se definido como false, a verificação de spoofing será desativada e será significativamente melhorar o desempenho da autenticação. krb5.verify.credentials: true

E, no site do MIT: Sempre que um programa concede acesso a um recurso (como uma sessão local de login em um computador desktop) com base em um usuário recebendo credenciais iniciais do Kerberos, ele deve verificar essas credenciais em um segredo compartilhado seguro (por exemplo, um keytab de host) para garantir que as credenciais do usuário realmente se originam de um KDC legítimo. A falha em executar essa verificação é uma vulnerabilidade crítica, porque um usuário mal-intencionado pode executar o “ataque Zanarotti”: o usuário constrói uma resposta falsa que parece vir do KDC legítimo, mas cujo conteúdo vem de um KDC controlado pelo invasor.

    
por 15.04.2016 / 15:05
0

Eu percebo que isso é realmente antigo e isso pode ou não ser parte do seu problema, mas eu percebi no passado que se você não capitaliza o seguinte no krb5.conf, você pode encontrar problemas:

[reinos]  MYDOMAIN.COM = {   kdc = mydomain.com   admin_server = mydomain.com  }

[reinos]  MYDOMAIN.COM = {   kdc = MYDOMAIN.COM   admin_server = MYDOMAIN.COM  }

    
por 31.08.2015 / 22:56