Implementar autenticação do Squid integrando-o ao Active Directory da Microsoft. Nesse artigo foi usada a versão 3 do Squid juntamente com a versão 2008 do Windows. Minha intenção com essa documentação é reunir todas as experiências que eu coletei e dicas a mim enviadas e que me levaram ao sucesso na implementação dessa solução.
O ambiente usado nesse artigo consiste de um servidor com Windows 2008 e o Active Directory devidamente configurado, mais um servidor proxy Linux. Não vou abordar as configurações desse servidor, pois na internet existem muitas informações sobre essas configurações.
NOTA: Alguns trechos deste artigo foram transcritos de outros tutoriais publicados na internet. No final do documento você encontrará referência para todas as fontes de pesquisa.
Tipos de autenticação
Depois de várias pesquisas e de muita interação com a comunidade, pude verificar que basicamente existem dois tipos de autenticação baseadas no Active Directory, a primeira onde não é necessário configuração específica nenhuma, ao setar o endereço do proxy no navegador ele abre uma pop-up pedindo usuário e senha, bastando o usuário colocar login e senha do domínio para ele estar autenticado para acesso a internet.
Já a segunda é uma pouco mais trabalhosa, pois o Squid irá obter de forma automática usuário e senha, é um "login automático", sem a necessidade de preencher o pop-up com usuário e senha. Abordaremos nesse artigo as duas formas de autenticação.
Primeiramente vamos tratar da integração do Linux ao domínio do AD e da autenticação transparente sem pop-up do Squid, para tal precisaremos instalar em nosso servidor algumas ferramentas tais como Kerberos, Winbind e Samba. Vamos ao Kerberos.
Kerberos
Kerberos é um sistema de autenticação que permite usuários utilizarem serviços de rede se identificando e autenticando em tempo real, utilizando um sistema seguro e criptografado. Em um sistema convencional é requerido ao usuário uma identificação e que este usuário autentique esta identificação antes da utilização do sistema. Uma rede que conecta possíveis clientes a serviços por ela providos também precisa identificar e autenticar estes clientes, que podem ser usuários ou softwares.
O problema é que muitos serviços de rede aceitam sem questionar a autenticação provida pela máquina cliente, que está sobre total domínio do usuário. E um serviço seguro de rede não pode confiar na integridade da autenticação provida por uma máquina cliente.
Com o Kerberos, toda vez que um possível cliente for utilizar um serviço da rede, ele vai questionar sua identidade e a respectiva autenticação, permitindo ou não o uso do serviço pelo cliente. Além disso, Kerberos provê um meio criptografado de comunicação, mesmo em uma rede não segura, como a internet.
O sistema de autenticação Kerberos é baseado no protocolo de autenticação de três vias e foi desenvolvido pelos membros do projeto Athena no MIT (Massachusetts Institute of Technology).
O Kerberos provê aos usuários ou serviços "ticket" que são utilizados para a identificação e chaves criptografadas para comunicação pela rede.
O Kerberos é usualmente utilizado na camada de aplicação, provendo a segurança entre o usuário e o host. Mas também pode ser usado para prover segurança entre hosts, trabalhando com os protocolos IP, TCP e UDP.
Em uma rede com Kerberos é definido um host, denominado Servidor de Autenticação, que centraliza as funções administrativas do Kerberos e é onde também está o Centro de Distribuição de Chaves (KDC). Este servidor mantém uma base de dados com todas as senhas secretas dos usuários. Sendo que ele é o responsável por gerar os tickets quando dois usuários desejam se comunicar através de um meio seguro, identificando e autenticando estes usuários.
Vamos instalá-lo usando os pacotes disponíveis nos repositórios oficiais do Debian:
# apt-get install krb5-config krb5-user
Agora que ele encontra-se instalado, vamos configurá-lo. Faça uma cópia de segurança do arquivo krb5.conf, a configuração do Kerberos a seguir serve tanto para o Windows 2003 quanto para o Windows 2008, vamos fazer uma cópia de segurança do arquivo /etc/krb5.conf.
Observe que temos as entradas dominio.local e DOMINIO.LOCAL, que devem ser substituídas pelo domínio do seu Windows, inclusive se esse for um domínio real (dominio.com.br), deve ser respeitado o texto em caixa alta (DOMINIO.LOCAL).
Salve o arquivo e saia.
Uma coisa muito importante, temos que configurar nosso resolv.conf para o AD, já que ele terá instalado um servidor de DNS, isso é importante pois o DNS do AD ajudará a resolver os nomes facilitando assim a integração do Linux ao domínio da Microsoft.
# vi /etc/resolv.conf
nameserver 172.16.10.254 # onde o ip é o ip do servidor 2008
Em seguida vamos ao arquivo /etc/hosts da máquina, para nele inserirmos o ip do servidor do AD:
# vi /etc/hosts
172.16.10.253 proxyvm.dominio.local proxyvm # servidor proxy
172.16.10.254 adsrv.dominio.local adsrv # servidor AD
172.16.10.254 dominio.local dominio # servidor AD
Quando usamos essa solução integrada ao Windows 2003, temos a necessidade de ativar o serviço WINS (Windows Information Service), que nada mais é que um serviço de DNS da Microsoft.
Em nosso servidor Windows (2003/2008) devemos criar no DNS uma entrada para o nosso servidor de impressão, no exemplo estou usando:
Hostname proxy.dominio.local
Ip: 172.16.10.26
Agora vamos testar, para tal usaremos o comando kinit, conforme abaixo:
# kinit Administrador@DOMINIO.LOCAL
Se ele não der erro nenhum está tudo certo. Para listarmos o domínio:
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrador@DOMINIO.LOCAL
Valid starting Expires Service principal
12/18/09 16:26:03 12/18/09 23:06:03 krbtgt/DOMINIO.LOCAL@DOMINIO.LOCAL
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cache
Nesse ponto, caso não obtenha a saída acima, podemos incorrer em duas situações, são elas:
# kinit administrator@DOMINIO.COM.BR
Password for administrator@DOMINIO.COM.BR:
kinit(v5): Clock skew too great while getting initial credentials
O relógio não está sincronizado com o controlador de domínio. Para evitarmos esse problema, podemos sincronizar data/hora do nosso servidor com o comando:
# ntpdate ntp.usp.br
E a outra situação:
# kinit administrator@dominio.com.br
Password for administrator@dominio.com.br:
kinit(v5): KDC reply did not match expectations while getting initial credentials
O domínio foi digitado com letras minúsculas. Para corrigir esse erro é só tocar as letras minúsculas do dominio.com.br por maiúsculas, DOMINIO.COM.BR. Lembrando sempre que DOMINIO.LOCAL ou DOMINIO.COM.BR deve ser substituído por seu domínio, seja ele real, ou local. Em seguida vamos passar ao winbind.
[1] Comentário enviado por calaff2 em 20/01/2010 - 09:40h
Muito bom o artigo , só faltou você criar as acl com determinado grupo do ad. ex: Grupo acesso total, Grupo acesso restrito e criar essas acl para esses grupos.
[8] Comentário enviado por giaco em 22/01/2010 - 09:47h
Para o pessoal que está enfrentando problemas:
No tutorial, no arquivo smb.conf, realm = dominio.local. Deve ser em maiúsculo, realm = DOMINIO.LOCAl
Mesmo assim estou enfrentando problemas. Até o Windows Vista funciona legal, mas no Windows 7, com IE8, falha a autenticação. Penso eu que é porque existe algo de errado com minhas configurações que não permitem o uso do NTLMv2. Tanto que o Firefox no Windows 7 funciona. Se alguém conseguiu autenticar no Windows 7, por favor, poste a solução.
[9] Comentário enviado por paulotrad em 22/01/2010 - 10:25h
silent-man,
este é o erro que está aparecendo quando digito este comando:
root@srvr:~# wbinfo -t
checking the trust secret via RPC calls failed
Could not check secret
root@srvr:~#
root@srvr:~# wbinfo -u
Error looking up domain users
root@srvr:~# wbinfo -g
Error looking up domain groups
root@srvr:~# net ads info
LDAP server: 192.168.1.253
LDAP server name: SRVDR.MEUDOMINIO.LOCAL
Realm: MEUDOMINIO.LOCAL
Bind Path: dc=MEUDOMINIO,dc=LOCAL
LDAP port: 389
Server time: Fri, 22 Jan 2010 10:22:21 BRST
KDC server: 192.168.1.253
Server time offset: 43
root@srvr:~#
será q eu tenho q mudar a porta em que o kerberos se comunica ?
no krb5.conf notei que tem esta linha 192.168.1.253:479 , isto é uma porta neh
acho q falta muito pouco pra eu conseguir q tudo funcione,,,,
minha intencao é q no relatorio do sarg apareça o nome do usuario que usa a internet.
[12] Comentário enviado por leandromoreirati em 22/01/2010 - 11:51h
Pessoal,
Desculpe-me a falta de reposta, minha esposa ganhou nenem e estava artibulado com os afazeres de pai de primeira viagem, como o Paulo observou, faltou depois da configuração do samba uma:
Tem que ser nessa ordem, foi um erro de ctrl+c ctrl+v
Giago, essa configuraçao de autetnicação funciona apensa no IE quanto o W7 ele usa ntmlv2 e somente v2 por isso o erro, a versão 3.5. do samba ja deve vir com esse suporte.
Quanto al realm testei maiuscula e minuscula e funcioou do mesmo jeito, so pra voce ter uma ideia esse smb.conf, esta em procução em um de meus servidores que estao integrados ao AD, antes de postar o artigo, fiz varios testes pra verificar que estav tudo Ok, depois coloquei em produção e so aee que postei o artigo.
[13] Comentário enviado por leandromoreirati em 22/01/2010 - 11:56h
Giaco,
foi como expliquei anteriormente, essa solução funciona mto bem nno XP e vista, já no W7 que usa apenas ntlmv2 nao esta homologada, a equipe do sambe, vai liberar um nova versão do samba acredito que ate o fim de março, com a correção desse problema, pois a versão samba que esta em produção no debian so porta apenas ntlmv1, sendo incompativem com o w7
[14] Comentário enviado por giaco em 22/01/2010 - 15:55h
Leandro, parabéns pelo artigo e obrigado pelas respostas.
Falei da maiúscula porque testei minúsculo e não foi, mas tudo bem, talvez eu tenha alterado outra coisa.
Quanto ao suporte para o Win7, você tem algum link onde eu possa verificar quando sair a versão? Será que baixando e compilando pode funcionar?
Baixei a segurança no Win7 para não usar NTLMv2 e então consigo acessar a internet normalmente. Mas não recomendo que isso seja feito em produção. Melhor aguardar o suporte do Samba.
[17] Comentário enviado por giaco em 03/02/2010 - 13:31h
Uma dúvida: eu tenho alguns usuários que não possuem conta no AD, são de 'fora' da rede, mas precisam acessar o proxy, também com senha. Como fazer isso?
[18] Comentário enviado por leandromoreirati em 03/02/2010 - 14:35h
Giaco,
Vou te dizer o que eu faria nao sei se e a melhor solução, eu cadastraria esses usuários no AD e colocaria a senha pra expirar tipo a cada 24/36/72 hs conforme a necessidade, so assim você consiguirá um controle efetivo, ou voce levanta uma outra instancia do squid (li testei e nao consgui funcionar, mas ja vi casos de pessosas na net que conseguiram) e cria uma auteticação por nsca por exemplo, cadastra esse s users maquina (linux) e todas as vezes que eles acessaram, vai ter q preencher o pop-up com usuário e senha.
[20] Comentário enviado por leandromoreirati em 08/02/2010 - 14:08h
Callaff2,
Por incrivel que parece estou acabando de testar as configurações de grupo, pois você não e o primeiro que me sugere, nao criei inicialmente pois isso nao era escopo do artigo, mas sim a integração do squid com o AD propriamente dita.
[21] Comentário enviado por whyper em 15/02/2010 - 07:55h
Viva,
alguem me ajuda a instalar o squid3,
quando corro apt-get install squid3
recebo esta mensagem:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package squid3
ja activei o "third party software" em software sources sem sucesso.
alguma dica?
agradeço desde já pelo excelente artigo!
[23] Comentário enviado por junior em 08/03/2010 - 10:48h
Primeiramente, quero parabenizar pelo artigo. Ótimo material, objetivo e bem explicado.
Bom, tenho uma dúvida: Se eu tiver uma máquina que está no domínio Windows e tentar navegar, o brownser não vai pedir autenticação, certo?
MAS... Se eu colocar uma máquina qualquer, que não estejano domínio, o browser abre o popup de autenticação, certo?
Quero saber se pra eu deixar automático (quando estiver no domínio vai direto, e quando não estiver pede autenticação) tenho que usar a primeira ou segunda configuração.
[24] Comentário enviado por leandromoreirati em 08/03/2010 - 11:07h
Junior,
Eu não fiz esse teste, os acessos que testei sao apenas com maquinas no domínio, pois o usuários também devem estar no domínio para as configurações tenham efeito, mas acredito que sua colocação seja procedentes, uma vez que como a maquina nao eta no domínio muito provalmente deve pedir usuário e senha.
No momento nao tenho como fazer esse teste pois estou sem ambiente de teste, assim q conseguir, posto aqui no forum.
[25] Comentário enviado por whyper em 12/03/2010 - 11:55h
Sim Junior, já testei isso, se eventualmente a máquina não estiver a logar no dominio, aparece o popup a pedir a autenticação de dominio, senao não dá acesso.
[26] Comentário enviado por ctavares em 19/03/2010 - 17:33h
Estou tentando adicionar meu servidor ao Dominio Windows 2008 mas está dando o erro abaixo, aparentemente tem a ver com o tamanho do nome netbios, alguém saberia me ajudar?
Our netbios name can be at most 15 chars long, "SOL-DC # NOME NETBIOS DO SERVIDOR" is 33 chars long
Invalid configuration. Exiting....
Failed to join domain: WERR_INVALID_COMPUTER_NAME
[28] Comentário enviado por leandromoreirati em 23/03/2010 - 10:09h
Acredito que o nome netbios não possa ser retirado pois o windows precisa desse nome para identificar o host, o que você pode fazer é tentar trocar por um nome menor. ja que o erro que esta aparecendo é que o nome é muito grande.
[29] Comentário enviado por whyper em 23/03/2010 - 12:23h
à frente do cardinal (#) não é apenas um comentário?
parece que está a interpretar toda a linha como o nome netbios, quando na realidade o nome é apenas "SOL-DC"
[32] Comentário enviado por ctavares em 24/03/2010 - 17:43h
Interessante, tudo estava funcionando em meu AD, adicionei máquinas Windows XP a ele e tudo rodava as 1000 maravilhas, só que ao adicionar o servidor debian 5 ao domínio ele parou de funcionar o AD e o DNS, e mesmo depois de rebootar nada funciona. Vou reinstalar ele para testar novamente e depois eu dou maiores detalhes aqui. Eu estou usando o Windows 2008 R2. Vocês chegaram a testar com dominio do Windows 2008 R2 inclusive com o AD construido sobre a estrutura funcional do Windows 2008 R2?
[33] Comentário enviado por ctavares em 25/03/2010 - 19:43h
Pois é, quando eu tento adicionar o servidor linux ao domínio o DNS do Windows 2008 dá pau e o AD consecutivamente para de funcionar, tentei encontrar uma resposta na internet mas nada, então deixei o problema no technetbrasil para ver se alguém da uma luz, os erros de DNS são 4000 e 4007 e acontece em nível funcional de domínio tanto 2008 R2 quanto em nível funcional 2003.
[34] Comentário enviado por leandromoreirati em 26/03/2010 - 08:47h
Caros,
Pude verifica aqui e criei meu artigo em cima de um windows 2008 standart, e nao o R2 conforme alguns estao tendo dificuldades, vou ver se arrumo um R2 pra eu testar e posto em breve aqui os resultados.
[35] Comentário enviado por takeshi em 26/03/2010 - 16:32h
Sobre esse problema com o ad e o dns, eu tb tive, mas foi com o windows server 2003 r2. Consegui solucionar o problema seguindo a dica que se encontra nesse site : http://www.tabugado.com/
[36] Comentário enviado por silveriosr em 27/04/2010 - 14:31h
Amigo... segui o seu tutorial, porem o script do SQUID nao aceita... o script contem erros.. queria q voce verificasse esse script e testasse no seu ambiente de teste para vc verificar que esta com problema
[37] Comentário enviado por leandromoreirati em 27/04/2010 - 17:03h
silveriosr,
Não existe erro no script pois varias pessoas ja o seguiram e conseguiram concluir os passos do artigo sem problema, o que pode estar acontecendo e voce esta comentendo erro em algum passo ou estar tentando autenicar no 2008 R2, que pelo que ja andei lendo da problemas mesmo, mas como nao tenho nehuma versão dele pra testar nao tenho como comprovar, no W2008 R1 o artigo ta mais que testado e aprovado.
[38] Comentário enviado por silveriosr em 27/04/2010 - 17:36h
kra... a versao do Windows 2008 que estou utilizando é a versao Enterprise Edition Service Pack 2, nao é a R2... tipo o meu squid ta dando o seguinte erro:
proxy:~#squid3 -k parse
2010/04/27 17:33:22| Processing Configuration File: /etc/squid3/squid.conf (depth 0)
2010/04/27 17:33:22| aclParseAccessLine: ACL name 'manager' not found.
FATAL: Bungled squid.conf line 87: http_access allow manager localhost
Squid Cache (Version 3.0.STABLE8): Terminated abnormally.
CPU Usage: 0.008 seconds = 0.000 user + 0.008 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0
Observei que voce chama a acl manager antes de declara-la... ai eu corrigi isto, porem existe uma acl que vc chama com o nome de AuthorizedUsers que voce nao declarou.. esse erro que eu descrevi acima, eu corri alterando a posicao que chamou o arquivo, porem essa acl AuthorizedUsers nao axei lugar nenhum onde vc declarou ela!
[39] Comentário enviado por silveriosr em 28/04/2010 - 10:52h
Caro colega, lendo mais atentamente o seu artigo, eu consegui fazer funcionar na minha empresa a sua proposta, porem quero alertar que tive que fazer alteracoes, pois em alguns lugares voce chama uma acl sem antes declara-la. Antes de lhe fazer uma ultima pergunta, quero te parabenizar, pois esse solucao é muito positiva para empresas e administradores de redes como nós.
A ultima coisa que queria te perguntar, que na realidade eu fiquei na duvida é a seguinte, nesse script seu, nao foi feito a configuracao para que o usuario X pode acessas as paginas X,Y e Z por exemplo. O seu script apenas testa se o usuario é valido ou nao, se for ele le as regras padroes do script. Voce teria um script implementado que teria esse tipo de tratamento, para cada usuario autenticado um determinado tipo de acesso diferente.....
[40] Comentário enviado por leandromoreirati em 28/04/2010 - 16:55h
Silverio,
Como pode ver na ultima página, existe sim a acl AuthorizedUsers, o que pode ter havido é um equivo da minha parte em nao ter postado o squid.conf completo, tenho ate que verificar pois creio que o fiz, mas basta apenas colocar o bloco abaixo, como vc pode ver tem uma outra entrada http_access allow all AuthorizedUsers , indicando que o bloco de autenticação deve ficar antes dela, caso reste alguma dúvida basta consultar a pagina 4 da documentação.
# Autenticação no Windows 2008
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl AuthorizedUsers proxy_auth REQUIRED
...
http_access allow all AuthorizedUsers
[44] Comentário enviado por thiago.golin em 30/06/2010 - 15:05h
Galera, consegui fazer todos os passos do artigo com sucesso.
Porém, quando inicio o squid, ocorrem alguns problemas com o tal do basicauthenticator. O squid tenta iniciar umas 5 vezes e para.
Olha o que descreve o log:
Ready to serve requests.
WARNING: basicauthenticator #3 (FD 9) exited
Too few basicauthenticator processes are running
The basicauthenticator helpers are crashing too rapidly, need help!
O squid não chega a rodar, dá sempre esse problema ao iniciar....
[46] Comentário enviado por thiago.golin em 30/06/2010 - 16:01h
Leandro Moreira
Eu fiz mais alguns testes aqui, e descobri que o problema é com a chamada ao autenticador, o ntlm_auth.
Testei o squid sem as linhas que chamam o autenticador e ele funciona normalmente.
E sim, o wbinfo funciona, consegui listar os usuários e grupos do domínio.
Pelo jeito o problema é com o programa mesmo, chamando pela linha de comando /usr/bin/ntlm_auth.
Quando executo ele diretamente pela linha de comando, vem o seguinte erro ao final:
utils/ntlm_auth.c:174(get_winbind_domain) could not obtain winbind domain name!
[47] Comentário enviado por thiago.golin em 30/06/2010 - 16:12h
Executei novamente via linha de comando o autenticador .... esse erro do winbind não apareceu mais
depois de reiniciar o samba e o winbind.
Porém, o squid continua não iniciando.
[49] Comentário enviado por carrolan em 22/07/2010 - 19:00h
campeão esse tópico, mas estou com problema e não sei se vocês poderam me ajudar, pois não estou usando squid ou proxy com o ad, só gostaria de servidor de arquivos (samba) com ad, bom o opensuse 11.3 samba 3.5.4..., conseguiu autenticar com o ad win2008, quando digito # wbinfo -u ele traz os usuarios cadastrados no ad, só que em uma estação windows não entra nos compartilhamentos do samba por onde toda vez ele pede um usuario e senha para autenticar com o samba, se eu digito um usuario cadastrado no linux ele entra, alguém saberia me dizer oq seria, pois que se trata disso é o winbind correto?
[52] Comentário enviado por carrolan em 24/07/2010 - 11:38h
Bom estou tendando usar as 2 plataforma win7 e o xp, os 2 dá o mesmo problema pede autenticação e só aceita pelo usuario cadastrado no linux. Sei que no win7 tem que fazer alteração na Segirança de rede: nivel de autenticação LAN Manager = Enviar LM e NTLM - usar segurança de sessão NTLMv2, se negociada.
[53] Comentário enviado por emerson.fp em 17/08/2010 - 10:26h
Consegui isntalar tudo certinho, estou lendo grupos e usuários do AD perfeitamente.
Mas quando inicio meu aquid, ele fica iniciando e parando.
Comentei as linhas da autenticação no AD e ele funcionou perfeitamente.
Quando descomento as linhas de autenticação, ele fica assim:
Aug 17 10:23:20 proxy03 squid[4156]: Squid Parent: child process 4158 started
Aug 17 10:23:21 proxy03 squid[4156]: Squid Parent: child process 4158 exited with status 1
Aug 17 10:23:24 proxy03 squid[4156]: Squid Parent: child process 4207 started
Aug 17 10:23:25 proxy03 squid[4156]: Squid Parent: child process 4207 exited with status 1
Aug 17 10:23:28 proxy03 squid[4156]: Squid Parent: child process 4250 started
Aug 17 10:23:30 proxy03 squid[4156]: Squid Parent: child process 4250 exited with status 1
Aug 17 10:23:33 proxy03 squid[4156]: Squid Parent: child process 4297 started
Aug 17 10:23:34 proxy03 squid[4156]: Squid Parent: child process 4297 exited with status 1
Aug 17 10:23:37 proxy03 squid[4156]: Squid Parent: child process 4342 started
Aug 17 10:23:38 proxy03 squid[4156]: Squid Parent: child process 4342 exited with status 1
[54] Comentário enviado por leandromoreirati em 17/08/2010 - 10:42h
Emerson,
Qual log e esse, isso e apenas o IPD do processo do squid, seu squid autentica no AD?
Como vc instalou compilou ou usou pacote?
Qual distro esta usando?
[55] Comentário enviado por emerson.fp em 17/08/2010 - 11:17h
Estou usando Debian. Instalei tudo conforme este tutorial.
Esse log eu peguei de /var/log/messeges.
Essas são as linhas do squid.conf que se descomento, não funciona:
# Autenticacao no Dominio Windows
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl AuthorizedUsers proxy_auth REQUIRED
[56] Comentário enviado por emerson.fp em 17/08/2010 - 13:55h
Deixa eu mesmo me corrigir: não posso usar as 2 opções, né? ou essa:
# Autenticacao no Dominio Windows
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl AuthorizedUsers proxy_auth REQUIRED
e a linha que tá me dando dor de cabeça é essa:
external_acl_type nt_group ttl=0 concurrency=5 %LOGIN /usr/lib/squid/wbinfo_group.pl
achei ela num site que diz que ela é a responsável por fazer o squid ler os grupos do AD, permitindo acls deste tipo:
acl gerencia external nt_group gerencia
onde gerencia é um grupo do AD.
[57] Comentário enviado por emerson.fp em 17/08/2010 - 15:35h
Descobri meu erro anterior: caminho de arquivos errados.
Agora meu Squid não tá lendo meus usuários e grupos do AD...
Achei 2 tipos:
external_acl_type NT_global_group children=10 %LOGIN /usr/lib/squid3/wbinfo_group.pl
acl acessototal external NT_global_group acessototal
acl emerson proxy_auth DOMINIO/emerson.pedrotti
http_access allow emerson
Não libera internet pra ninguém, nem pra mim (emerson)
e assim:
external_acl_type nt_group ttl=0 concurrency=5 %LOGIN /usr/lib/squid3/wbinfo_group.pl
acl acessototal external nt_group acessototal
http_access allow acessototal
Libera internet pra todos, até quem nao esta no grupo acessototal do AD.
[58] Comentário enviado por cyberdps em 23/09/2010 - 20:58h
Primeiramente, queria elogiar o arquigo que ficou muito bom e funcionou perfeitamente na emresa que trabalho, encontrei apenas um problema e gostaria de saber se tem alguma sugestão a respeito, alguns usuários depois que implementei esse modelo de proxy não conseguem mais utilizar o mensseger, e se eu desabilitar o proxy e rencaminhar para internet direto a maquina faz a conexão. Vc te idéia do que pode ser isto?
[59] Comentário enviado por zimmer54 em 05/10/2010 - 16:54h
Boa tarde, seu trabalho ficou excelente! Estou seguindo seu artigo como base para fazer meu TCC de redes de computadores da escola técnica do SENAI de Porto Alegre.
Estou apenas com uma dificuldade na hora de tirar aquele erro do "DNS Update Failed". Ele entra no dominio pois aparece o host no windows server, porém quando vou fazer os outros comandos retornam mensagens de erro:
# wbinfo -t
checking the trust secret via RPC calls failed
error code was NT_STATUS_INVALID_HANDLE (0xc0000008)
Could not check secret
Nos outros comandos nenhuma anormalidade occore, veja o comando # net ads info
LDAP server: 192.168.0.5
LDAP server name: mercurio.senai.com
Realm: SENAI.COM
Bind Path: dc=SENAI,dc=COM
LDAP port: 389
Server time: Ter, 05 Out 2010 15:52:24 AMT
KDC server: 192.168.0.5
Server time offset: 29
Essas são as informações que tenho. Lembrando que ja comentei as linhas do loopback no arquivo hosts:
Eu estou usando o ubuntu 10.04 e windows server 2003, rodando na VirtualBox. Acredito que não tenha problema mas qualquer coisa me fala dai. Obrigado por enquanto, abraço.
[63] Comentário enviado por leandromoreirati em 29/10/2010 - 14:13h
Daniel,
Voce substituiu SENHA_DO_ADMINISTRADOR, pela senha do seu servidor AD?
manda o seu krb5.conf pra eu dar uma olhada, pois ele nao ta conseguindo ingressar no dominio, qual windows server vc esta usando?
[67] Comentário enviado por leandromoreirati em 02/11/2010 - 13:27h
jonas,
Ou o proxy e transparente ou ele é autenticado, mas eu testei uma tecnica que deu muito certo que foi o wpad, crie uma entrada no dns apontando para um servidor web (maquina virtual simples com http 1.0 rodando somente esse script no /var/www)
vi /var/www/wpad.dat
function FindProxyForURL(url, host)
{
return "PROXY ip_do_proxy:porta_do_proxy";
}
Depois no DNS (interno linux) crie uma entrada dizendo que o wpad era do 10.0.0.30, depois foi so ir no navegador e marcar detectar script automaticamente que meus usuários tinha configuração de proxy manual "transparente" no dns do windows também funciona, tem q fazer um procedimento que infelizmente nao sei qual é apenas sei que tem q liberar o endereço do wpad na consulta do DNS pois no dns do windows o nome wpad é reservado quando fiz no windows tinha um admin microsoft que fez esse passo pra mim até pedi a ele pra em enviar mas ... usuárui M$ e usuáruio M$.
Dessa forma vc faz seu proxy funcionar como transparente na boa, comecei a atauliazar essa documentação para o windows 2008 R2 mas ainda nao tenho prazo para publica-la infelizmente pois to muito apertado no trabalho e na faculdade e a nova documentação já virá com essa "bem feitoria do wpad"
[68] Comentário enviado por leandromoreirati em 02/11/2010 - 13:30h
Daniel,
Infelizmente tenho lido alguns relatos de problemas com o w2008R2 estou começando a atualizar essa documentação para o R2, pois ela foi feita sobre o R1 infelizmente nao disponho de um w2008 pra fazer os testes e temo que 2GB de ram no meu notebook que tem 4GB pode nao ser suficiente pois so consegui o R2 64 bist.
[69] Comentário enviado por matheuskamphorst em 07/12/2010 - 10:57h
Pessoal primeiramente, parabens otimo how to, porém gostaria de saber na regra com autenticação automatica aonde coloco o grupo ou usuario que vai estar usando
[70] Comentário enviado por leandromoreirati em 19/12/2010 - 20:52h
Pessoal
Depois de um tempao prometendo, refiz todo o artigo usando o windows 2008 R2 fundation, (avalição liberada pela M$), segui na integra os passos descritos no artigo e meu squid3 autrenticou no AD 208 R2 sem nenhum problema.
[71] Comentário enviado por dimago em 05/01/2011 - 15:55h
Leandro, parabéns pelo artigo, realmente, perfeito.
Então, essa versão ai já estpa OK para o R2, certo?
Vamos a minha dúvida.
Em caso da máquina NAO estar no dominio, ele deve pedir usuário e senha (popup) aqui, ocorre isso OK.
Porém, na caixa de usuário e senha, ele nao traz as informações do squid, como o realm, que coloquei lá no conf
E preciso colocar a autenticação deste modo: dominio\usuario
Queria ver se tem como arrumar estas duas questoes:
1 - na caixa de popup, ele trazer as informações do realm, e o servidor ali no nome da janela
2 - nao precisar colocar dominio\usuario
[73] Comentário enviado por junior em 08/04/2011 - 17:41h
@carlos_petronet: No caso do MSN, é só tu ir nas configurações de conexão e colocar um usuário e senha do ad, que autentica normalmente no squid, desde que esse usuário já autentique navegando, por exemplo.
[74] Comentário enviado por rickbrandao em 25/05/2011 - 16:26h
Olá amigão, bom meu AD é um 2008 enterprise sp1, entendi seu questionamento, realmente estou colocando meu dominio, sendo que o mesmo está configurado em Maiusculo. Então, tendo ingressar com o usuário "administrador" mesmo.
Estou usando o Ubuntu server 10.04.
Erro au tentar entrar no dominio
root@PROXY:/etc/samba# net ads join -U administrador -S DOMINIO.LOCAL
Enter administrador's password:
[2011/05/25 14:14:06, 0] libads/sasl.c:819(ads_sasl_spnego_bind)
kinit succeeded but ads_sasl_spnego_krb5_bind failed: Server not found in Kerberos database
Failed to join domain: failed to connect to AD: Server not found in Kerberos database
Mas o computador aparece no AD.
[79] Comentário enviado por tihbaptista em 15/06/2011 - 13:00h
DenerSantos e aantunes, postem seus arquivos de configuração pra mim dar uma olhada, estava com o mesmo problema e consegui resolver refazendo as configurações com atenção...
[82] Comentário enviado por aantunes em 20/06/2011 - 16:04h
Todos do vol, agora estou com esse problema com o squid. o aquivo de configuração foi tirado daqui no control+c e control+v, alterando somente os ips. funciona quase tudo. o que esta acontecendo. Fiz o bloqueio do site http://pt-br.facebook.com, até ai tudo funciona. mas quando coloco o no browse o enredeço https://pt-br.facebook.com/ (https) ele não exibe a mensagem do site negado. Exibi a mensagem do IE: "O Internet Explorer não pode exibir a página da Web" alguem já pssou por isso saber como ajudar?
[83] Comentário enviado por ulisses.santos em 04/07/2011 - 15:03h
amigo, boa tarde estou tentando colocar um debian 6 para autenticar no ad 2003 mas esta dando este erro alguma ideia?
root@squid:/etc/samba# net ads join ASEFE.ORG.BR -U ulisses.santos@ASEFE.ORG.BR
Enter ulisses.santos@ASEFE.ORG.BR's password:
Failed to join domain: failed to find DC for domain ASEFE.ORG.BR
smb.conf
unix charset = ISO-8859-1
workgroup = ASEFE.ORG.BR
netbios name = SQUID
server string = squid
log level = 5
load printers = no
log file = /var/log/samba/log.%m
max log size = 500
realm = asefe.org.br
security = ads
auth methods = winbind
#password server = win2003.dominio.local # Endereço do servidor de autenticação nome/ip
password server = 192.168.7.142
winbind separator = +
encrypt passwords = yes
printcap name = cups
winbind cache time = 15
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
local master = no
os level = 233
domain master = no
preferred master = no
domain logons = no
#wins server = 192.168.7.142
dns proxy = no
ldap ssl = no
printing = cups
disable spoolss = yes
show add printer wizard = no
template shell = /bin/bash
template homedir = /home/%U
[84] Comentário enviado por thiago.golin em 12/07/2011 - 16:43h
galera... estou tendo problema do debian 6 também
no debian 5 ele funciona bonitinho!!! mas instalando no debian 6
dá tudo certo até tentar listar os usuários!!
root@cohab-squid1:/etc/samba# wbinfo -t
checking the trust secret for domain XXX_DOMAIN via RPC calls succeeded
ao usar o wbinfo -u ele lista apenas dois usuários... o primeiro usuário utilizado para entrar no domínio e o usuário nobody
ao tentar listar grupos... nada é listado.
Alguém já instalou utilizando o Debian Squeeze (6)?
[85] Comentário enviado por thiago.golin em 15/07/2011 - 17:58h
Galera. Consegui resolver este problema de não listar os usuários e grupos.
É um bug das últimas versões do samba e winbind.
Em vez de usar o padrão unix charset = ISO-8859-1,
utilizem o padrão UTF-8 que o wbinfo já vai listar os usuários e grupos.
Pode ainda aparecer outro problema de não conseguir converter o nome de alguns grupos com o seguinte erro : Could not convert sid to gid.
Este problema pode ser resolvido apagando winbindd_idmap.tdb e reiniciando o winbind e o samba em seguida.
Assim o problema é eliminado e o Squid resolve o problema de converter o UTF-8 para Locale.
[88] Comentário enviado por vampbrujah em 20/08/2011 - 19:58h
Só uma dúvida. Se eu quiser que o squid e o AD estejam integrados e com popup de nome de usuário e senha, eu não vou precisar instalar os outros programas? Só vou usar o squid?
[90] Comentário enviado por joaoferreira em 01/11/2011 - 14:35h
Olá Léo,
Bom dia, meus parabéns pelo excelente artigo, seguir arista os passos contido neste artigo e funcionou belezinha.
Atualmente temos cerca de 500 host's, 02 controladores de domínio, uma máquina com configuração: Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz
, 3GB DE MEMÓRIA RAM, 80 GB DISCO RÍGIDO. Rodando o nosso servidor proxy, o mesmo tem instalado o Sistema Operacional: Debian Squeeze.
Porém Léo de um tempo para cá os usuários vem se queixando do pop-up que aparece toda hora, o problema só resolvi quando eu reiniciou o servidor do winbind. Eu não sei o que fazer para solucionar este problema, atualmente estou analisando novamente todos os log's para tentar localizar o erro.
[91] Comentário enviado por gpimenta em 06/12/2011 - 11:33h
Estou com o seguinte erro ao ingressar o linux no server 2008
Failed to join domain: Invalid configuration ("workgroup" set to 'LABORATORIO.CNSP # DOMINIO A QUAL O SERVIDOR PERTENCE', should be 'LABORATORIO'"realm" set to 'LABORATORIO.CNSP # DOMINIO DO SERVIDOR', should be 'laboratorio.cnsp') and configuration modification was not requested
root@lab-security:/var/www/lab#
meu arquivo é este:
1 unix charset = ISO-8859-1
2 workgroup = LABORATORIO.CNSP # Dominio a qual o servidor pertence
3 netbios name = PROXYM
4 server string = proxyvm
5 log level = 5
6 load printers = no
7 log file = /var/log/samba/log.%m
8 max log size = 500
9 realm = laboratorio.cnsp # Dominio do servidor
10 security = ads
11 auth methods = winbind
12 password server = 192.168.100.253 # Endereco do servidor de autenticao nome/ip
13 winbind separator = +
14 encrypt passwords = yes
15 printcap name = cups
16 winbind cache time = 15
17 winbind enum users = yes
18 winbind enum groups = yes
19 winbind use default domain = yes
20 idmap uid = 10000-20000
21 idmap gid = 10000-20000
22 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
23 local master = no
24 os level = 233
25 domain master = no
26 preferred master = no
27 domain logons = no
28 dns proxy = no
29 ldap ssl = no
30 printing = cups
31 disable spoolss = yes
32 show add printer wizard = no
33 template shell = /bin/bash
34 template homedir = /home/%U
[92] Comentário enviado por sergiosgs em 21/12/2011 - 12:54h
Caro Leandro
Quero parabenizá-lo pelo excelente artigo, segui todos os passos (nas duas situações) e funcionaram corretamente no meu ambiente (AD 2008 R2 + Linux Squid 2.7 e firewall c/ iptables)
Sei que esse não é o post, mas caso saiba, para que eu possa colocar esse ambiente em prática, preciso só acertar os bloqueios de acesso de páginas e fechar meu firewall contra ataques externos.
Você e nosso amigos tem algumas dicas? Já procurei bastante e sempre encontro divergências a repeito das mesmas
[93] Comentário enviado por leandromoreirati em 22/12/2011 - 15:52h
Sem conhercer sua topologia de rede fica complicado de opiniar, mas estou presumindo que seu proxy/Firewall fica entre sua rede e a internet (lê -se roteador de empresa de telecom) bom eu trabalharia no firewall com a política dropa tudo e libera apenas o necessário ja no proxy, basicamente trabalho com 3 situações
1) Lista para "Diretoria" passa pelo proxy loga o que os caras fazem mas não bloqueia nada
2) Lista de acesso normal, bloqueia tudo e permite apenas acesso a sites de bancos, noticas dentre outros
3) Lista de bloqueado, quem ta nessa lista acessa apenas a intranet
Não sei se é a mehor prática mas é a que eu testei e aprovei junto aos meus clientes, ainda tem uma boa ferramenta de reltório de acesso a internet, sou muito fam do mysar, pois ele te permite a ter relatório de acesso em tempo real sem sentar a maquina como o sarg por exemplo faz.
[94] Comentário enviado por sergiosgs em 23/12/2011 - 10:58h
Oi Leandro...
Minha topologia é essa mesma (Internet => Proxy/Firewall (com 2 palcas de rede) => Rede Interna)
Já fiz algumas regras de bloqueio impedindo acesso a sites e relatórios pelo SARG... mas ainda tenho que fechar a saída do MSN e estou com um pouco de difucldades para isso... Além disso tenho que liberar acesso semelhante a situação 1 que você comentou...
[98] Comentário enviado por rondineli.araujo em 16/03/2012 - 19:29h
Eae galera, blza?
O meu conf. ficou bem legal.
O que ocorre é que tem uma coisa que esta me incomodando bastante, no meu caso, criei dois grupos um INTERNET_RESTRITA E OUTRO INTERNET-LIBERADA, uma acl de bloqueio e outra de unblock para INTERNET_RESTRITA e o grupo INTERNET_LIBERADA sem acl de bloqueio.
PROBLEMA:
Eu sou do grupo INTERNET_RESTRITA e quero acessar um site bloqueado, ele não carrega, porém ele não mostra a página de erro enquanto eu cancelar a solicitação de senha, ele insisti em pedir a senha, o problema são para sites que tem varios popups por exemplo o ITAU, Yahoo e etc...ele até carrega o site mas pede senha umas 5 vezes....alguem sabe uma forma de ele pedir a senha no primeiro acesso e depois quando tentar acessar um site bloqueado ele mostra a página de bloqueio direto.
[100] Comentário enviado por paulotrad em 20/03/2012 - 17:22h
ola jonatasvales
verifique se a porta do active directory está corretamente configurada
isso pode ser uma falha de comunicação do seu linux com o windows server
eu tive alguns problemas como este durante a implantação deste serviço numa empresa
mas logo resolvi
veja meus comentários anteriores aqui.
esta mensagem q vc postou diz que ele nao consegue resolver o endereço do KDC para o domínio "docasdesantana.com.br" para obter as credenciais iniciais
é bom checar todos os conf, os IP's, e os dominios certinhos.
Criei as seguintes ACLs que que se referem aos referidos grupos:
acl Todos_os_usuarios external gruposad G_TODOS_PROXY (Pega todos os users do AD)
acl Acesso_restrito external gruposad G_acesso_so_sites_oficiais (so acessará alguns sites, listados no arquivo da regra)
acl Acesso_bloqueado external gruposad G_acesso_internet_bloqueado (não acessa nada)
acl Tudo_liberado external gruposad G_Tudo_Liberado (acessa qualquer coisa, até lista de sites bloqueado o restos dos usuarios (sao os superSUPER))
acl sites_oficiais dstdomain -i "/etc/squid/acls/apenas_sites_oficiais" (lista de sites que acesso restrito pode acessar)
acl extensoes_bloqeadas dstdomain -i "/etc/squid/acls/extensoes_bloqueadas" (auto-explicativo)
acl sites_proibidos dstdomain -i "/etc/squid/acls/proibidos_para_todos" (relacao de sites proibidos para todos, MENOS para a ACL Tudo_liberado)
Quero conseguir fazer essa configuração ai funcionar, de modo efetivo e de modo que não peça tela de LOGIN para o grupos de usuários que terão o acesso todo bloqueado.
Estou precisando disso com uma certa urgência, e acho que devido a tanto mexer, estou meio cego e não consigo ver como deveria fazer.
[103] Comentário enviado por geff.s em 28/03/2012 - 16:37h
Olá pessoal to com alguns probleminhas para fazer a coisa toda funcionar!
Meus Servidores são Windows 2008 Server Standart R2 e CentOS release 5.7 (Final)
A princípio a configuração do meu krb5.conf está igual a do tópico, claro que com as devidas alterações de ip e domínio para a minha rede.
De inicio quando vou levantar o krb5kdc dá erro:
[root@server /]# service krb5kdc start
Iniciando Kerberos 5 KDC: krb5kdc: cannot initialize realm DOMINIO-X.SC.GOV.BR - see log file for details
[FALHOU]
Nos logs tenho o seguinte:
[root@server /]# cat /var/log/krb5kdc.log
krb5kdc: No such file or directory - while initializing database for realm DOMINIO-X.SC.GOV.BR
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Quanto ao winbind não consigo encotrar a linha no /etc/init.d/winbind mensionada no tópico para substitui-la, devo adicionar essa linha no winbind?
local master = no
domain master = no
preferred master = no
domain logons = no
dns proxy = no
ldap ssl = no
load printers = yes
cups options = raw
; printcap name = /etc/printcap
#obtain list of printers automatically on SystemV
; printcap name = lpstat
printing = cups
disable spoolss = yes
show add printer wizard = no
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
Quando inicializo o samba da ok!
Quando dou o comando abaixo me retorna esse erro:
[root@server /]# net ads join DOMINIO-X.SC.GOV.BR -U administrador%senhaxyz
[2012/03/28 16:23:02, 0] libads/kerberos.c:ads_kinit_password(228)
kerberos_kinit_password administradoor@DOMINIO-X.SC.GOV.BR failed: Client not found in Kerberos database
Failed to join domain: Improperly formed account name
[root@server /]# net ads info
LDAP server: 192.168.0.1
LDAP server name: server2008.dominio-x.sc.gov.br
Realm: DOMINIO-X.SC.GOV.BR
Bind Path: dc=DOMINIO-X,dc=SC,dc=GOV,dc=BR
LDAP port: 389
Server time: Qua, 28 Mar 2012 16:29:16 BRT
KDC server: 192.168.0.1
Server time offset: 0
Desculpa pela pergunta tão grande, mas se alguém puder me ajudar fico muito agradecido.
[104] Comentário enviado por edubsi em 04/04/2012 - 14:12h
Leandro,
Parabéns pelo ótimo artigo.
Eu também estou com o mesmo problema do Lucas, ou seja, funcionou tudo, porém, quando algum usuário do ad vai iniciar o navegador ele pede usuário e senha toda hora. Sendo que eu fiz pela primeira opção: SEM POPUP. Única coisa que fiz diferente da sua solução foi NT_global_group para buscar grupos do ad, gostaria de saber o que fazer a mais para não pedir senha, só falta isso para colocar em produção:
acl AuthorizedUsers proxy_auth REQUIRED
##adicionado para buscar grupos do AD#
external_acl_type NT_global_group children=10 %LOGIN /usr/lib/squid3/wbinfo_group.pl
####ACL grupos do ad#
acl ProxyUsersP1 external NT_global_group squiddefault
#http_access allow all AuthorizedUsers
http_access allow redesinternas AuthorizedUsers ProxyUsersP1
Esta linha acima estaria correta Leandro? para liberar os sites "internos" somente os usuarios autenticados no AD do grupo=squiddefault ?
Dominio: Windows 2003 STD
Debian Squeeze GNU/Linux 6.0
Samba version 3.5.6
winbindd: Version 3.5.6
Squid Cache: Version 3.1.6
As estações clientes utilizando windows 7, mas tb fiz teste no XP e também pede usuário e senha.
[106] Comentário enviado por raragao em 23/10/2012 - 15:27h
Olá,
Fiz a implementação do seu tutorial, muito bom por sinal, e com pequenas ajustes funcionou de primeira. Agora estou na fase de testes, porém tem alguns serviços que não funcionam mais.
Percebi que no log que os acessos que não estão funcionando não estão com a identificação do usuário, como se o squid não identificasse estes casos.
[107] Comentário enviado por DouglasMenger em 04/11/2012 - 18:47h
Amigo leo_jfa,
Quero agradecer por você compartilhar seu conhecimento.
Usei seu artigo para montar um ambiente virtual com o Active Directory e SQUID depois de muitas tentativas consegui e esta funcionando, pretendo implantar na empresa onde trabalho.
[108] Comentário enviado por carlos.santosdf em 26/02/2013 - 18:58h
Galera VoL Alguem pode me ajudar .... me perdi exatamente nessa parte .... rs
"Quando usamos essa solução integrada ao Windows 2003, temos a necessidade de ativar o serviço WINS (Windows Information Service), que nada mais é que um serviço de DNS da Microsoft.
Em nosso servidor Windows (2003/2008) devemos criar no DNS uma entrada para o nosso servidor de impressão, no exemplo estou usando:
Hostname proxy.dominio.local
Ip: 172.16.10.26 "
quando dou o comando aparece essa erro..
root@DebianServer:/etc/squid# kinit Admistrador@meudominio.com.br
kinit: Client not found in Kerberos database while getting initial credentials
[109] Comentário enviado por pedregulho87 em 05/06/2013 - 11:43h
[108] Comentário enviado por carlos.santosdf em 26/02/2013 - 18:58h:
Galera VoL Alguem pode me ajudar .... me perdi exatamente nessa parte .... rs
"Quando usamos essa solução integrada ao Windows 2003, temos a necessidade de ativar o serviço WINS (Windows Information Service), que nada mais é que um serviço de DNS da Microsoft.
Em nosso servidor Windows (2003/2008) devemos criar no DNS uma entrada para o nosso servidor de impressão, no exemplo estou usando:
Hostname proxy.dominio.local
Ip: 172.16.10.26 "
quando dou o comando aparece essa erro..
root@DebianServer:/etc/squid# kinit Admistrador@meudominio.com.br
kinit: Client not found in Kerberos database while getting initial credentials
Alguem pode me ajudar ?!?
voce esta usando uma conta de administrador (ex.: carlos.santosdf@gdf.gov.br)? ou como vc escreveu ai ??
[110] Comentário enviado por pedregulho87 em 05/06/2013 - 11:45h
Boa tarde galera... estou com uma duvida tbm....
o erro que retorna eh:
kinit : KDC reply did not match expectations while getting initial credentials
porem jah procurei o erro e nao achei.... alguem pode me ajudar ??
[libdefaults]
default_realm = DPU.GOV.BR
dns_lookup_realm= true
dns_lookup_kdc= true
ticket_lifetime= 24h
forwardable= yes
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).
[111] Comentário enviado por snowblack85 em 23/06/2013 - 13:59h
Otimo tutorial.
Fiz tudo seguindo os passos agora na hora de adicionar no domino da certo mas apresenta a mensagem de erro.
root@srvproxy:~# net ads join -U administrador
Enter administrador's password:
Using short domain name -- PRATICA
Joined 'PROXY' to realm 'pratica.local'
DNS Update for proxy.pratica.local failed: ERROR_DNS_UPDATE_FAILED
DNS update failed!
não sei porque tá acontecendo isso já refiz tudo mas sempre da esse erro.
segue as configuração:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
###################################################
/etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
[112] Comentário enviado por leandromoreirati em 25/06/2013 - 21:53h
Prezado snowblack85,
Pode postar seu /etc/hosts, o erro apresentado é de DNS, pode ser que a informação do kerberos esteja divergente do /etc/host que é um serviço de DNS, que o linux consulta antes de ir no resolv.conf.
[113] Comentário enviado por leooliosi em 28/06/2013 - 15:04h
Boa tarde Leandro,
seguinte cara segui seus passos e funcionou tudo perfeitamente, só que após fazer essa implementação todas as maquinas que possuem windows 7 inclusive meus dois servidores com 2008 ficam com o ponto de exclamação na conexão de rede só que navega e autentica 100%, ao rodar o wireshark noto alguns erros de DNS referente a comunicação do 2008 com o samba...
Gostaria da sua ajuda para resolver este pequeno problema se possível claro.
com diferentes níveis de acesso, como por exemplo "acesso total" "acesso a sites não bloqueados" "acesso a sites liberados", gostaria de saber como defino estes níveis de acesso autenticando pelos usuários do AD?
[120] Comentário enviado por leandromoreirati em 05/02/2014 - 16:50h
Dsmi,
Estou reescrevendo esse artigo agora para o AD 2012, infelizmente não cheguei ainda nesse ponto mas pelo que eu me lembro você terá de criar os grupos no AD e colocar os usuários nos mesmo, criando as respectivas acl's no squid tipo:
Grupos no AD:
Liberado
Restrito
Diretoria
Depois deve configurar o squid para ler os grupos do AD com a linha abaix:
[121] Comentário enviado por W@lyk em 07/02/2014 - 09:11h
Bom dia!
Esse tutorial é excelente e muito funcional. Queria agradece-lo.
Tenho uma dúvida. Se eu uso um SQUID autenticado no AD os micro que estão no domínio funcionam perfeitamente e nem pedem autenticação, vai direto pelo LDAP.
Os micros fora do domínio ficam pedindo usuário e senha, eu coloco meudominio\usuário e digito a senha e mesmo assim não consigo navegar. Já tentei também inserir usuário@meudominio e senha e também sem sucesso.
Queria saber se tem como funcionar tanto para micros do domínio quanto para fora do domínio? Se sim, o que devo alterar no meu SQUID para funcionar?
[122] Comentário enviado por Juan_sabino em 07/05/2014 - 08:03h
Muito bom dia.
Parabéns por este excelente artigo.
Estou com um pequeno problema.
Meu squid está autenticando no AD do Windows 2008 R2, porém ele não faz de forma automática, ele exibe um prompt para o usuário digitar.
E das duas linhas que fazem autenticação do squid.conf, a que utiliza a seguinte linha não funciona:
"/usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp"
[123] Comentário enviado por bruno_ua em 10/07/2014 - 09:55h
Boa Tarde,
Quando faço : "wbinfo -t"
Apareçe o erro:
"could not obtain winbind interface details: WBC_ERR_WINBIND_NOT_AVAILABLE
could not obtain winbind domain name!
checking the trust secret for domain (null) via RPC calls failed
failed to call wbcCheckTrustCredentials: WBC_ERR_WINBIND_NOT_AVAILABLE
Could not check secret"
[126] Comentário enviado por akira27jp em 29/12/2014 - 08:58h
Galera, bom dia!
Sou novo no mundo Linux e mais ainda no uso de Squid.
Recentemente um amigo implementou um proxy aqui, usando esse método Squid + kerberos + winbind + samba.
Todos os usuários tecnicamente deveriam se logar de forma transparente, mas isso não tem acontecido e 70% do dia, a janela de popup abre porque a primeira autenticação falha.
Quando isso acontece, dou um wbinfo -t e ele me retorna o seguinte erro:
could not obtain winbind interface details!
could not obtain winbind domain name!
Conversei com esse amigo e ele disse que o problema está no usuário que usamos para dar um join no domínio.
Meu usuário tem alguns direitos administrativos, já que sou adm de rede da localidade, mas não sou Domain admin. Na empresa onde trabalho, já disseram que não darão essa função ao meu user.
Gostaria de saber se algm sabe exatamente qual a role necessária para que o user possa dar um join de forma adequada.
Lembrando que p ticket é gerado, o pessoal se loga por um tempo, mas a confiança é perdida ás vezes.
só pra se ter uma ideia, quando rodamos wbinfo -*g ou -u, ele retorna um erro.
[127] Comentário enviado por marvinsantos em 09/01/2015 - 16:22h
Boa tarde a todos!
Estou com um problema. Inseri o código para autenticação com o AD sem mostrar a tela de autenticação, mas aparece a tela de autenticação e não autentica com o usuário.
Segue o arquivo squid.conf:
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl bloqueia url_regex -i facebook
acl AuthorizedUsers proxy_auth REQUIRED
# Autenticacao no Windows 2008
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param ntlm keep_alive on auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hour
http_access allow all AuthorizedUsers
http_access deny bloqueia
# Deny CONNECT to other than secure SSL ports
http_access allow all
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access allow manager
[128] Comentário enviado por marcelohcm em 23/03/2015 - 12:44h
Quando uso esse método de autenticação, abre popup qd abro o navegador... não era pra ja estar logado no dominio?
# Autenticação no Windows 2008
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl AuthorizedUsers proxy_auth REQUIRED
...
http_access allow all AuthorizedUsers
[131] Comentário enviado por marcelohcm em 24/04/2015 - 11:13h
quando eu faço o comando no terminal:
/usr/lib/squid3/squid_ldap_auth -R -b "dc=dominio,dc=local" -D "cn=Administrador,cn=Users,dc=dominio,dc=local" -w "SENHA_DO_AD" -f sAMAccountName=%s -h ip_do_ad
aparece
ERR missing username...
mesmo com o usuario e a OU certas....
outra: o squid3 que estou usando é o 3.3.8, que não tem o arquivo squid_ldap_auth. O arquivo se chama basic_ldap_auth que está dentro de /usr/lib/squid3. existe diferença entre esses arquivos?
[132] Comentário enviado por marcelohcm em 11/05/2015 - 10:20h
estou em duvida nessa parte:
# Autenticação no Windows 2008
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
acl AuthorizedUsers proxy_auth REQUIRED
...
http_access allow all AuthorizedUsers
diz que a autenticação é sem popup, mas tem a acl proxy_auth REQUIRED????
[134] Comentário enviado por fabiodurgante em 31/05/2015 - 11:09h
para autenticar no AD do samba4 nao funcionou retirando acl AuthorizedUsers proxy_auth REQUIRED le nunca pede senha, mesmo para maquinas logadas no dominio e maquinas nao logadas no dominio, pelo correto seria maquinas logadas no dominio samba4 nao pedir senha e maquinas nao logadas sempre pedir senha, dessa maneira nao funciona alguem sabe como fazer funcionar ???
[135] Comentário enviado por marcelohcm em 30/07/2015 - 10:26h
depois de muito tempo consegui fazer essa budega de integração funcionar usando ntlm: proxy ubuntu server 14.04 e ad win2008r2
partindo do premissa que ja esta td funcionando: klist, samba no dominio, wbinfo -u e -g listando td que tem no ad.... o que eu estava confundindo é que o ad que tem aqui (que não foi eu quem configurou) possui unidades organizacionais, e não grupos. O wbinfo -g só lista grupos, então criei um grupo chamado acesso_internet e coloquei como membro desse grupo todos os usuários do ad.
no squid.conf, ficou:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm Proxy Squid - Digite suas credenciais
auth_param basic credentialsttl 5 hours
acl autenticados proxy_auth REQUIRED
http_access allow autenticados
external_acl_type acesso_internet %LOGIN /usr/lib/squid3/ext_wbinfo_group_acl
e voalá!!!
a autenticação ficou transparente e o log do squid mostrou os nomes dos usuarios!!!!
a linha que tem o basic_ncsa_auth é pra quem ta fora do dominio, ai vai pedir autenticação.. pra criar o usuario, é: #htpasswd -c /etc/squid3/passwd nomedousuario (o -c é pra criar o arquivo na primeira vez, depois não é mais necessário)
estou usando squid 3.3.8
[136] Comentário enviado por marcelohcm em 03/08/2015 - 10:12h
olá denovo!!!
volto aqui para relatar o que aconteceu depois que reiniciei o proxy... os usuario conectados no dominio pediam user e senha no navegador... achei estranho, não entendi nada.... lembrei que tinha trocado o dono e o grupo da pasta /var/lib/samba/winbindd_privileged para proxy:proxy, sendo que no original estava root:root...
quando coloquei somente o dono dessa pasta como proxy, a autenticação foi transparente, porém o comando wbinfo -t não funciona... e se eu reiniciar o proxy talves o winbind não inicie... portanto tem que fazer essas alterações de dono nessa pasta.
[137] Comentário enviado por joaoafricano em 22/10/2015 - 19:28h
Grande tutorial, sigo esse tutorial toda fez que preciso configurar um proxy con autenticação integrada ao AD.
Desta vez porem a seguinte ACL não esta funcionando direito:
http_access deny POUCO !Liberados
Nesta ACL deveria bloquear todos os sites menos os que esta permitidos em um arquivo a parte, porem não esta liberando nada, esta dando tudo negado. Segue o meu squid.conf
acl SSL_ports port 443 448 563 30000
acl ssl_ports port 8443 # Transit do Brasil
acl safe_ports port 8080 # TYSSEN
acl Safe_ports port 88 89 90 91 92 # http intranet bervel
acl Safe_ports port 80 # http
acl safe_ports port 3127 # http cidadao
acl safe_ports port 81
acl safe_ports port 82
acl safe_ports port 83
acl safe_ports port 84
acl safe_ports port 85
acl safe_ports port 202
acl safe_ports port 100
acl safe_ports port 146
acl safe_ports port 443 448 563 1863
acl Safe_ports port 21 # ftp
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-29999 # unregistered ports
acl Safe_ports port 30001-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# Autenticação no Windows 2008
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 80
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 10 second
acl AuthorizedUsers proxy_auth REQUIRED
# Confere grupo do Ad
external_acl_type ADGroup %LOGIN /usr/lib/squid3/wbinfo_group.pl
acl POUCO external ADGroup NADA
acl PADRAO external ADGroup MEIO
acl TOTAL external ADGroup TUDO
# Regras de restricao e liberacao baseadas em arquivos externos
acl Bloqueados dstdomain -i "/etc/squid3/acls/dominios_bloqueados.txt"
acl Liberados dstdomain -i "/etc/squid3/acls/dominios_liberados.txt"
acl Palavroes url_regex -i "/etc/squid3/acls/palavras_proibidas.txt"
acl URLnegada url_regex -i "/etc/squid3/acls/urls_negadas.txt"
acl URLliberada url_regex -1 "/etc/squid3/acls/urls_liberadas.txt"
#acl media urlpath_regex -i "/etc/squid3/acls/media.txt
[138] Comentário enviado por paulohat em 10/11/2015 - 11:25h
Aqui deu quase tudo certo. Quanto coloco a linha para buscar grupos do AD meu squid pára e recebo o seguinte erro:
2015/11/10 11:04:33 kid1| Finished rebuilding storage from disk.
2015/11/10 11:04:33 kid1| 0 Entries scanned
2015/11/10 11:04:33 kid1| 0 Invalid entries.
2015/11/10 11:04:33 kid1| 0 With invalid flags.
2015/11/10 11:04:33 kid1| 0 Objects loaded.
2015/11/10 11:04:33 kid1| 0 Objects expired.
2015/11/10 11:04:33 kid1| 0 Objects cancelled.
2015/11/10 11:04:33 kid1| 0 Duplicate URLs purged.
2015/11/10 11:04:33 kid1| 0 Swapfile clashes avoided.
2015/11/10 11:04:33 kid1| Took 0.01 seconds ( 0.00 objects/sec).
2015/11/10 11:04:33 kid1| Beginning Validation Procedure
2015/11/10 11:04:33 kid1| Completed Validation Procedure
2015/11/10 11:04:33 kid1| Validated 0 Entries
2015/11/10 11:04:33 kid1| store_swap_size = 0.00 KB
2015/11/10 11:04:33 kid1| WARNING: grupo_AD #1 exited
2015/11/10 11:04:33 kid1| Too few grupo_AD processes are running (need 1/5)
2015/11/10 11:04:33 kid1| Closing HTTP port 192.168.1.250:3128
2015/11/10 11:04:33 kid1| storeDirWriteCleanLogs: Starting...
2015/11/10 11:04:33 kid1| Finished. Wrote 0 entries.
2015/11/10 11:04:33 kid1| Took 0.00 seconds ( 0.00 entries/sec).
FATAL: The grupo_AD helpers are crashing too rapidly, need help!
Squid Cache (Version 3.3.8): Terminated abnormally.
CPU Usage: 0.028 seconds = 0.016 user + 0.012 sys
Maximum Resident Size: 76544 KB
Já pesquisei demais na internet, mas não achei nada a respeito.
Desde já agradeço.l
[139] Comentário enviado por dbcazon em 21/07/2016 - 15:43h
Boa tarde,
Pessoal, eu implementei essa solução em um ambiente de teste. Um firewall Debian, um Servidor 2012 R2 e uma estação Win10.
Minha dúvida é sobre o pop-up, ele não está aparecendo, como posso confirmar que está correta a configuração, buscar algum log?
Aqui o Leo não aborda o Iptables, eu fiz uma configuração para poder liberar a net, são duas placas no Firewall, uma para a rede interna e outra para a rede externa.
No modo sem pop-up como posso verificar se está funcionando tbm?
[140] Comentário enviado por gustavo0904 em 22/04/2017 - 00:30h
Ola , amigo tudo bem ?
tentei fazer algumas adptações ao squid.conf na minha empresa , porem fica solicitando a senha toda hora pra navegar
segue abaixo o meu squid.conf
sera que voce consegue me ajudar ?
# Squid normally listens to port 3128
http_port 3128
# preferencia entre ipv6 e ipv4
dns_v4_first on
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid3 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid3
# Visible Hostname
visible_hostname srvspoxvproxy01.mlsf.infra
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 128.1.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher'
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 8002 # CPJ Embracon
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl Safe_ports port 8443 # HTTPS - Mercedes Benz
acl Safe_ports port 43843 # VNC
acl Safe_ports port 43844 # VNC
acl Safe_ports port 43845 # VNC
acl Safe_ports port 8086 # ICAPTO
acl purge method PURGE
acl CONNECT method CONNECT
#######################################################
# Recommended minimum Access Permission configuration:#
# #
# Deny requests to certain unsafe ports #
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports #
http_access deny CONNECT !SSL_ports
# Only allow cachemgr access from localhost #
http_access allow localhost manager
http_access deny manager
#######################################################
#########################################################################
# Example rule allowing access from your local networks. #
# Adapt localnet in the ACL section to list your (internal) IP networks #
# from where browsing should be allowed #
# http_access allow localnet #
http_access allow localhost
#########################################################################
###########################################################################################################
############### CONFIGURAÃS DE SITENS SEM AUTHENTICAÃ AQUI ##############################################
############### ACLS ######################################################################################
acl java_app browser Java/1.4 Java/1.5 Java/1.6 Java/1.7 Java/1.8 Java/1.9;
acl java_vm browser regexp -i Java;
acl java urlpath_regex -i \.class$ \.jar;
acl libjava url_regex javadl-esd.sun.com/*
acl liberados_SA dstdom_regex -i "/etc/squid3/perez/liberado_semautenticacao"
###########################################################################################################
############### PERMISSAO DE SITES SEM AUTHENTICAÇO AQUI #################################################
http_access allow java
http_access allow java_app
http_access allow java_vm
http_access allow libjava
http_access allow liberados_SA
###########################################################################################################
###########################################################################################################
# Metodo de autenticacao #
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 200
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic realm Squid Proxy - Cache de Internet perez
auth_param basic credentialsttl 8 hours
auth_param basic children 60
auth_param basic credentialsttl 8 hours
external_acl_type grupo_ad %LOGIN /usr/lib64/squid/ext_wbinfo_group_acl
###########################################################################################################
##################################################################
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS #
##################################################################
###############################
# ACL's Active Directory AQUI #
###############################
acl ad_intoperacao external grupo_ad intoperacao
#########################
# ACL's Permissoes AQUI #
#########################
acl acesso_intoperacao_dominio dstdomain "/etc/squid3/intoperacao_dominio"
#####################################
# Regras de permissao/bloqueio AQUI #
#####################################
#REGRAS DE LIBERAÃO
http_access allow all Safe_ports ad_intoperacao
#REGRAS DE BLOQUEIO
# And finally deny all other access to this proxy
http_access deny all
[142] Comentário enviado por SK5_RJ em 23/04/2018 - 16:47h
Olá, colocou o domínio em caixa alta? O Administrador está em português? Aqui, de primeira não funcionou, então coloquei em letra maiúscula como no artigo e foi.
[141] Comentário enviado por supportware em 23/07/2017 - 21:08h
Na hora de testar, o comando kinit, conforme abaixo:
# kinit Administrador@DOMINIO.LOCAL
No meu não rolou! procurei nos comentários e não consta o mesmo problema:
kinit: Cannot contact any KDC for realm 'DOMAIN.LOCAL' while getting initial credentials.