Balanceamento de carga LDAP de um controlador de domínio via F5

3

Sei que o balanceamento de carga ou o failover do LDAP em um controlador de domínio do Windows geralmente não é uma boa ideia devido aos problemas de Kerberos e SPN.

MAS, tenho muitos aplicativos que não são do Windows que usam LDAP para autenticação e autorização. Eles estão apontados para um único controlador de domínio agora, seria bom ter um VIP e um pool com todos os meus controladores de domínio por trás dele.

Então, qual é o problema aqui quando vejo isso ?:

https://devcentral.f5.com/questions/ad-dcs-behind-f5

O F5 faz algo especial? Ele apenas volta ao NTLM? Ou apenas usa uma ligação LDAP simples ao AD? (ou ligação SLDAP).

Qual é a melhor maneira para clientes que não são do Windows utilizarem LDAP? Eles devem ser projetados imediatamente para usar os registros SRV do localizador de DNS? O AD-LDS deve ser implantado e equilibrar essa carga?

Há algo que estou perdendo?

Nov2009
fonte

Respostas:

4

Sim, os aplicativos que desejam interagir com o Active Directory realmente devem ser projetados para usar procedimentos adequados de localização de DC (que estão bem documentados); infelizmente, muitas vezes não são.

Geralmente, você pode contornar isso apontando o aplicativo LDAP para o nome de domínio do Active Directory em vez de um controlador de domínio específico, porque cada controlador de domínio registra automaticamente um registro AN A para o nome de domínio apontando para seu endereço IP, portanto, isso funcionará como um rodízio de DNS ; no entanto, isso pode e causará dois problemas significativos:

  • Se um controlador de domínio estiver inativo, ele ainda será incluído na resposta do DNS; isso pode causar falhas no LDAP se o aplicativo não for inteligente o suficiente para tentar outro.
  • Isso não levará em conta a topologia do site do Active Directory; se você tiver um ambiente distribuído geograficamente, poderá finalizar com um aplicativo em Londres autenticado em um controlador de domínio na Austrália por um link WAN lento e / ou não confiável.

Uma solução um pouco melhor é criar seu próprio registro DNS para aplicativos LDAP como um registro CNAME apontando para um controlador de domínio específico, como ldap.example.comapontar para dc1.example.com, e definir um TTL lento nele (fe 60 segundos); você pode configurar seu aplicativo para ser usado ldap.example.comem todas as suas necessidades LDAP. Se / quando o DC1 ficar inativo, você poderá remapear ldap.example.compara dc2.example.come o TTL lento garantirá que o aplicativo tome conhecimento da alteração o mais rápido possível, minimizando o tempo de inatividade.

De qualquer forma, é realmente melhor evitar a solução de balanceamento de carga, porque o LDAP simplesmente não foi projetado para funcionar com eles e eles podem carregar para qualquer tipo de problema.

Massimo
fonte
Entendo, boas informações. E se for uma autenticação simples, usando nome / senha e empregando criptografia no nível da sessão? Presumo que é por isso que está funcionando bem com um F5, pois o Kerberos não está sendo usado? Há algum problema com isso que não seja o melhor em termos ou segurança?
precisa saber é o seguinte
11
Isso não é um problema de segurança ... é um problema de protocolo; O LDAP não foi projetado para funcionar com balanceamento de carga. A Microsoft não oferece suporte a ele, assim como ninguém (até e incluindo F5). Pode muito bem ser possível que tudo funcione bem em 99% das situações, mas sempre que algo der inevitavelmente errado, ninguém o apoiará se você tiver colocado um balanceador de carga na frente dos controladores de domínio e você não conseguirá para descartar se o seu problema é realmente causado por ele ou por algo completamente não relacionado. TL; DR: Você está apenas pedindo problemas.
Massimo
Que tal algo assim: windowsitpro.com/article/network-load-balancing-nlb/… e sincronize o LDS com o AD.
Nov2009
Utilizamos com êxito um balanceador de carga LDAP F5 com o Active Directory por quase uma década. A chave é que o uso deve ser para aplicativos baseados em LDAP genuínos. Você diz que não é o Windows e pronto - o aplicativo quer apenas um diretório LDAP. Não é Kerberos, NTLM, nem nada a ver com o AD. Basta ouvir no 389 e, opcionalmente, no 636 e ele simplesmente funciona. Usamos um registro DNS DNS do servidor virtual e apenas apontamos para o endereço IP virtual. Se você optar por usar a criptografia, o aplicativo não deverá se preocupar com nomes incompatíveis ou precisará lidar com os certificados.
user339468
Exatamente, esses são apenas aplicativos que fazem uma ligação LDAP simples usando certs para TLS. Eu vejo alguns outros posts como este: stackoverflow.com/questions/26803408/… . As ligações LDAP simples seriam problemáticas com o AD? Presumo que não esteja usando NTLM ou Kerberos se você estiver executando apenas uma ligação simples sob TLS / SSL?
Nov2009
1

Quase todos os produtos de autenticação LDAP que não vi do Windows são capazes de usar uma entrada DNS. Em vez de apontar para um servidor específico, você pode apontar para a raiz do seu domínio. Isso deve funcionar na grande maioria das situações.

Esse é o caso, porque, se você fizer uma pesquisa na raiz do seu domínio, por exemplo, example.com, ele deverá retornar com todos os IPs dos controladores de domínio. Isso permite que o DNS round robin padrão assuma o controle, sem a necessidade de nenhum tipo de configuração especializada.

Tim Brigham
fonte
1

Um desafio ao usar um balanceador de carga é que, dependendo da atividade, alguns aplicativos podem solicitar um identificador para uma DirectoryEntry. O DirectoryEntry inclui o nome do servidor. Isso é mais comum para atualizações, mas também pode ocorrer para leituras / consultas. Obviamente, você não está passando pelo balanceador de carga nesse caso. Seria bom o suficiente para autenticação? Talvez.

Aprendi que, se você disponibilizar um serviço, as pessoas poderão usá-lo para outro objetivo que não o pretendido. Para que VIP "somente autenticação" você configure? Talvez alguém decida usá-lo para outra coisa. Isso é realmente importante. O que acontece se explodir?

Outra questão é o que são os exames de saúde? Não é incomum que um controlador de domínio esteja na porta 389/636, mas não esteja funcionando corretamente. Portanto, uma verificação direta da porta pode não ser suficiente.

Tradicionalmente, a resiliência de conexão do Active Directory (o processo do DC Locator) é transferida para o cliente. Quando você começa a mexer com ele para torná-lo "altamente disponível", assume a responsabilidade pelos problemas. E alguns desses problemas podem ser difíceis e esquivos de diagnosticar e resolver. Quem o apoiará? F5? Microsoft? Boa sorte com isso.

Greg Askew
fonte
Então, tudo se resume a garantir que o aplicativo possa lidar com failover, ou seja, - você pode inserir mais de um nome de host para o controlador de domínio OU, o aplicativo pode lidar com o processo de localização do controlador de domínio. O balanceamento de carga LDAP é por sua conta e risco.
Nov2009
Esse é o resultado, sim. Depender de uma pesquisa direta de DNS é um erro comum ao tentar utilizar o Active Directory. Eu já vi esse erro mesmo com produtos comerciais muito comuns.
Greg Askew
Um aplicativo LDAP verdadeiro não usa os Localizadores de DC, pois não se integram ao Active Directory; eles são apenas clientes LDAP. Alguns aplicativos avançados são capazes de usar registros DNS SRV, mas isso não significa que eles usem os registrados no AD; eles podem ter seus próprios requisitos.
user339468
@ user339468: O aplicativo não precisa usar um localizador DC completo. Pode ser algo tão simples quanto especificar vários controladores de domínio na configuração e usar um alternativo se um falhar. Não é da ciência do foguete reconhecer que usar apenas um controlador de domínio ou depender de uma pesquisa direta de DNS é um projeto defeituoso.
Greg Askew
@ Greg Askew: meu argumento foi que muitas pessoas estão tentando comparar o uso nativo do Windows do AD contra clientes LDAP simples e muitas comparações (como o DC Locator) não são relevantes. Você está certo de que muitos aplicativos LDAP suportam pelo menos dois servidores. Você também pode usar o DNS de rodízio, que é o que o AD faz nativamente para carregar o equilíbrio.
user339468
1

É mais sobre alta disponibilidade ou desempenho?

Para desempenho, quero destacar isso:

Eu tenho muitos aplicativos que não são do Windows que usam LDAP para autenticação e autorização. Eles são apenas apontados para um único controlador de domínio no momento.

A solução rápida óbvia aqui é apontar alguns de seus aplicativos para seus CDs adicionais. Obviamente, isso não é ideal, pois deixa os aplicativos vulneráveis ​​se um controlador de domínio cair, mas é uma maneira fácil de ajudar a espalhar sua carga imediatamente.

Para alta disponibilidade, você pode apontar aplicativos para o nome de domínio ou (ainda melhor) um cname do nome de domínio. Não é ótimo, porque significa um ajuste manual do DNS se algo der errado, mas facilitará a resposta.

Você pode combinar essas técnicas usando registros cname em vários controladores de domínio. A carga é distribuída e você pode facilmente ajustar um registro de nome de usuário para um controlador de domínio individual em caso de interrupção.

Joel Coel
fonte
1

Eu tenho 3 servidores em um VIP para essa circunstância.

Além disso, o uso do nome de domínio geralmente é ruim, pois atingirá o primeiro controlador de domínio na lista retornada, se o aplicativo não estiver ciente do site (a maioria não está). Isso pode estar em qualquer lugar do país e seria ruim para a carga e a latência da WAN.

Conta
fonte
0

Também tentamos usar um round-robin DNS. O problema é: a maioria dos aplicativos consulta o nome do host LDAP configurado uma vez, obtém o primeiro IP que volta e, em seguida, armazena em cache esse IP. Isso significa que todas as pesquisas LDAP desse aplicativo acabam sempre no mesmo servidor LDAP, derrotando o objetivo do round-robin. Tentamos algumas configurações diferentes do balanceador de carga, com resultados variados. Atualmente, estamos tentando a edição gratuita do Kemp LoadMaster. Até o momento, parece funcionar muito bem com nossos aplicativos internos, mas um aplicativo em particular (JAMF) teve muitos problemas ao tentar passar consultas LDAP através do firewall, mesmo que o firewall esteja configurado corretamente.

Bryce N
fonte