Era uma vez, uma bela selva virtual quente na América do Sul e um servidor de Lula morava lá. aqui está uma imagem perceptiva da rede:
<the Internet>
|
|
A | B
Users <---------> [squid-Server] <---> [LDAP-Server]
Quando a Users
solicitação acessar a Internet, squid
pergunte o nome e o passaporte, os autentique LDAP
e se o LDAP os aprovar, ele os concederá.
Todos ficaram felizes até que alguns farejadores roubaram o passaporte no caminho entre os usuários e o squid [caminho A]. Este desastre aconteceu porque o squid usou o Basic-Authentication
método.
O povo da selva se reuniu para resolver o problema. Alguns coelhos ofereceram usando o NTLM
método Serpentes preferidas Digest-Authentication
enquanto Kerberos
recomendadas por árvores.
Afinal, muitas soluções oferecidas pelas pessoas da selva e tudo estava confuso! O leão decidiu acabar com a situação. Ele gritou as regras para soluções:
- A solução deve ser segura!
- A solução deve funcionar para a maioria dos navegadores e softwares (por exemplo, baixar softwares)
- A solução deve ser simples e não precisa de outro subsistema enorme (como o servidor Samba)
- O método não deve depender de um domínio especial. (por exemplo, Active Directory)
Então, uma solução inteligente, abrangente e abrangente, oferecida por um macaco, fazendo dele o novo rei da selva!
você consegue adivinhar qual foi a solução?
Dica:
O caminho entre squid
e LDAP
é protegido pelo leão, portanto, a solução não precisa protegê-lo.
Nota: desculpe se a história é chata e confusa, mas a maior parte é real! =)
/~\/~\/~\ /\~/~\/~\/~\/~\ ((/~\/~\/~\/~\/~\)) (/~\/~\/~\/~\/~\/~\/~\) (//// ~ ~ \\\\) (\\\\( (0) (0) )////) (\\\\( __\-/__ )////) (\\\( /-\ )///) (\\\( (""""") )///) (\\\( \^^^/ )///) (\\\( )///) (\/~\/~\/~\/) ** (\/~\/~\/) *####* | | **** /| | | |\ \\ _/ | | | | \_ _________// Thanks! (,,)(,,)_(,,)(,,)--------'
Atualizar:
Massimo explicou que o método de autenticação entre Users
- squid
e squid
- LDAP
não precisa ser o mesmo. podemos usar o método arbitrário para obter informações de autenticação dos usuários e o método arbitrário para os dados coletados autenticados.
Mas há um problema: a entrada / saída de todos os tipos de autenticadores não é a mesma. Por exemplo:
- um
Basic
autenticador deve ler o par "senha de nome de usuário" em uma linha e responder aOK
se a senha do usuário estiver correta ouERR
- um
Digest
autenticador deve ler umusername:realm
e responder um codificado em hexadecimal deHA(A1)
ou umERR
.
Embora não exista relação direta entre o método client-squid e o método squid-ldap, os dados coletados do cliente devem ser compatíveis com o método usado na parte squid-ldap. Portanto, se alterarmos o método de autenticação no lado do usuário, talvez também devamos alterar nosso autenticador.
Portanto, o problema simplifica para:
No primeiro nível, eu (o macaco!) Estou procurando um bom método de autenticação no lado do usuário. Qual método você recomenda, que é seguro e suportado pela maioria dos navegadores ? Estou confuso entre
NTLM
,Kerberos
eDigest
.Onde posso encontrar um autenticador que ofereça suporte a informações de credenciais do método selecionado e autentique através do LDAP.
Respostas:
Kerberos não é uma opção para autenticação HTTP. O NTLM não é bem suportado em nenhum navegador que não seja o IE. O Basic não é seguro, a menos que você o coloque atrás do HTTPS, que o AFAIK squid não pode fazer. Então você fica com o Digest.
fonte
digest_ldap_auth
(vem com o squid) no servidor LDAP.Negotiate
mecanismo; Eu usei com sucesso com Apache e Squid. O SSL também é uma opção para o Squid, apenas o Debian não o habilita devido a problemas de licença.Uma característica interessante que pode ajudá-lo aqui é que o método Squid usa para solicitar autenticação ao navegador do cliente (caminho A) não precisa estar relacionado ao método que ele usa para validar as credenciais fornecidas pelo usuário (caminho B) ) Isso significa, por exemplo, que você pode fazer o Squid "falar" o NTLM com os navegadores clientes, mas pode muito bem validar os usuários no banco de dados interno do usuário do Linux (/ etc / passwd). Não há necessidade de credenciais adquiridas usando NTLM (no caminho A) para serem realmente validadas em um domínio do Windows (no caminho B). O mesmo se aplica a qualquer combinação possível de métodos de autenticação do lado do cliente e de autenticação do lado do servidor.
O que isso significa no seu caso, é que você pode configurar o Squid com segurança para solicitar autenticação NTLM dos navegadores clientes em vez da autenticação básica, e isso não exigirá, de forma alguma, que você realmente use o Samba / WinBind / AD / o que for.
Assim, você pode escolher o método que deseja para autenticação no lado do cliente e continuar validando os usuários em um servidor LDAP depois que eles fornecerem suas credenciais usando o método selecionado.
A mágica acontece, é claro, em
squid.conf
:Cada
auth_param
diretiva permite uma autenticação específica para os navegadores clientes (caminho A), enquanto a parte "programa" define o que o Squid realmente usará para validar as credenciais fornecidas pelos usuários. Você pode usar o programa autenticador que desejar aqui (mesmo um personalizado), desde que possa receber um ID de usuário e uma senha e responder "sim" ou "não".Você só precisa pegar o autenticador que estiver usando para fazer sua consulta LDAP e colá-lo nas instruções "auth_param ntlm" ou "auth_param digest", em vez do "auth_param basic" onde está agora.
Atualizar:
Você definitivamente deve usar o squid_ldap_auth como seu autenticador, mas não posso dizer exatamente como, sem nenhum detalhe sobre o servidor LDAP específico que você está usando.
Em relação à autenticação do lado do cliente, qualquer um deve ser bom; Estou muito feliz com o NTLM e a maioria dos navegadores o suporta atualmente.
Essa configuração ficaria assim no squid.conf:
Isso solicitará credenciais do usuário (caminho A) usando NTLM e as validará em um servidor LDAP (caminho B); mas esses "parâmetros" dependem estritamente da implementação e configuração do LDAP.
Isso também pode ajudar: http://www.cyberciti.biz/tips/howto-configure-squid-ldap-authentication.html .
fonte
NTLM
?Kerberos
? qual deles é suportado na maioria dos navegadores e já possui um 'autenticador' que suporta ldap?auth_param ntlm program /usr/lib/squid/squid_ldap_auth <parameters>
não funciona para mim, o squid crash e é reiniciado toda vez que um usuário tenta se autenticar. Talvez porque usando o erradoparameters
, mas eu estou usando os mesmos parâmetros combasic
e funciona bem. Alguma ideia?