Vinculando o Linux MIT Kerberos a um Active Directory do Windows 2003

2

Saudações, Gostaria de saber como se pode ligar um Linux MIT Kerberos a um Windows 2003 Active Directory para obter o seguinte:

  1. Um usuário, [email protected], tenta efetuar login em um site do Apache, que é executado no mesmo servidor que o Linux MIT Kerberos.

  2. O módulo do Apache primeiro pergunta ao Linux MIT Kerberos local se ele conhece um usuário com esse nome ou região.

  3. O MIT Kerberos descobre que não é responsável por esse domínio e encaminha a solicitação ao Active Directory do Windows 2003.

  4. O Windows 2003 Active Directory responde positivamente e fornece essas informações ao Linux MIT Kerberos, que, por sua vez, informa isso ao módulo do Apache, que concede ao usuário acesso a seus arquivos.

    Aqui está uma imagem da situação:

Adocumentaçãoquelisobreesseproblemageralmentediferedesseproblema:

  • AlgunsdiscutemavinculaçãodeumKerberosdoMITcomumActiveDirectoryparaobteracessoarecursosnoservidordoActiveDirectory;

  • EnquantooutrausaolinkparaautenticarosusuáriosdoWindowsnoMITKerberosatravésdoWindows2003ActiveDirectory.(Meuproblemaéocontrário.)

Então,oqueminhaperguntaseresumeé:

ÉpossívelterumservidorLinuxMITKerberospassandoporsolicitaçõesdeumaregiãodoActiveDirectorye,emseguida,receberarespostaefornecê-laaoserviçosolicitante?(EmboranãosejaumproblemaseoserviçosolicitanteeoActiveDirectorydoWindows2003secomunicamdiretamente.)

Sugestõesecríticasconstrutivassãomuitoapreciadas.:)

EDITARMAISTARDE

Estoutendoalgunsproblemascomisso.Euconfigureicomsucessoomod_auth_kerbparafazernegociaçõescomoMITKerberos(nomeucaso,EINDWERK.LAN),eseeubuscarumticketparaoMITKerberoslocalcomkinitnoUbuntu,eupossonavegarnoservidorApachesemestarprometidoparaumlogin.

Noentanto,seeubuscarumticketdoservidordoActiveDirectory(nomeucaso,WINDOWS.LAN)enavegaratéoservidordawebApache,receboumpromptdelogin.OlhandoparaospacotesatravésdoWireshark,parecequeoservidorApacheestátentandoincorretamenteusarumTGTdeEINDWERK.LANparaWINDOWS.LAN.

EnvieiasaídadoWiresharkpara:

  1. Umkinitparao"testador" do usuário do Active Directory ([email protected]), que é bem-sucedido (ignore KRB5KDC_ERR_PREAUTH_REQUIRED, não há nenhum preauth aqui)

  2. Uma visita ao servidor Apache, onde você pode ver que está errado. [LINK]

EDIT: Sim, ele sempre tenta autenticar com um TGT para EINDWERK.LAN. Eu vou tentar criar uma confiança entre o AD e o MIT Kerberos e ver se isso corrige isso.

EDIT2: Ok, criando uma relação de confiança ( Aqui está um tutorial ), tudo parece estar checando corretamente, mas eu tive que forçar a criptografia rc4-hmac para os tickets do Active Directory, e o serviço Apache HTTP está criptografado em des3-cbc-sha1. Alguém sabe como excluir um principal e criptografar suas chaves com uma certa criptografia?

    
por Beerdude26 15.05.2010 / 04:53

2 respostas

1

Tudo bem, recriando meu banco de dados Kerberos e adicionando entidades a cada enctype estava disponível (aes256-cts: normal arcfour-hmac: normal des3-hmac-sha1: normal des-cbc-crc: normal des: normal des: v4 des: norealm des: onlyrealm des: afs3) e, em seguida, exportar o HTTP/link.to.website@REALM para um keytab para o apache, os usuários do Active Directory agora podem efetuar login também.

Veja um exemplo de como adicionar um principal a cada codificação e exportá-lo para um keytab:

addprinc -e "aes256-cts: normal arcfour-hmac: normal des3-hmac-sha1: normal des-cbc-crc: normal des: normal des: v4 des: norealm des: onlyrealm des: afs3" HTTP / www .eindwerk.lan

ktadd -e "aes256-cts: normal arcfour-hmac: normal des3-hmac-sha1: normal des-cbc-crc: normal des: normal des: v4 des: noreal des: onlyrealm des: afs3" -kt / etc / apache2 / apache.keytab HTTP / www.eindwerk.lan

EDIT: Ok, tudo parece estar funcionando corretamente, exceto que o Internet Explorer sempre tenta obter um ticket para HTTP / [TRUSTED_DOMAIN_NAME_IN_WIN_2003] na primeira tentativa. No meu caso, isso se traduz em "HTTP / EINDWERK.LAN", enquanto deveria ser "HTTP / NS.EINDWERK.LAN".

Eu também notei que tentar mudar o nome de domínio da confiança [IMAGE] completamente e absolutamente quebra qualquer autenticação cross-realm: os TGTs são trocados corretamente, mas quando o KDC Linux local tenta realmente usar o ticket, ele descobre que não pode descriptografá-lo, emitindo um "PROCESS_TGS: authtime 0, para HTTP / ns.eindwerk .lan @ EINDWERK.LAN, Nenhuma chave correspondente na entrada "erro no log do KDC. A razão para isso pode muito bem ser que muitos dos mecanismos de criptografia considerem o domínio e o nome de usuário como salt, de modo que o nome do domínio realmente precise ser configurado corretamente.

    
por 16.05.2010 / 22:57
1

Você pode configurar vários reinos no seu arquivo /etc/krb5.conf no Linux. Veja o seção realms dos documentos MIT Kerberos . Você poderia configurar seu Windows realm lá e os usuários que efetuam login com um principal que faz parte desse domínio serão autenticados em seu Windows 2003 Active Directory.

Então você só precisa configurar o Apache com mod_auth_kerb e certificar-se de definir a variável de configuração KrbAuthRealms para incluir todos os reinos você gostaria de poder autenticar via Apache.

A menos que esteja faltando alguma coisa, essa configuração não é uma prática padrão complicada e bonita ao usar configurações do Kerberos com vários domínios.

    
por 15.05.2010 / 08:02