Squid autenticado no Active Directory com Winbind

Tutorial resumido, que trata da instalação e configuração do Squid com autenticação no Active Directory usando o Samba e Winbind para a comunicação de dados entre os servidores.

[ Hits: 158.770 ]

Por: Anderson Leite em 30/08/2006


Configuração do SQUID



Vamos remover as linhas que permitem o proxy transparente (caso já utilizasse o sistema desta forma), comente as linhas:

#httpd_accel_host virtual
#httpd_accel_port 80

#httpd_accel_with_proxy on

Insira também um bloco de configuração como este:

auth_param basic realm "Acesso a internet - Sua Empresa"

# Autenticação básica HTTP
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param ntlm children 5
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param ntlm use_ntlm_negotiate off

# Insira isto se você precisar que os usuários estejam contidos em grupos
external_acl_type nt_group ttl=0 concurrency=5 %LOGIN /usr/lib/squid/wbinfo_group.pl

OBS: Em algumas páginas que encontrei, se dizia para utilizar os helpers localizados em /usr/lib/squid (wb_ntlmauth), porém este helper não funciona com o SAMBA 3.x, utilize-o somente se você estiver usando SAMBA 2.x.

OBS 2: Não consegui fazer funcionar corretamente utilizando o seguinte helper:

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

Se quiser tentar, esteja à vontade, caso consiga fazê-lo funcionar corretamente, por favor me informe para que a solução seja adicionada a este documento, obviamente seus créditos serão mantidos :)

Após isto, insira as ACL's de acesso:

acl restrictedusers external nt_group <Grupo Restrito>
acl unrestrictedusers external nt_group <Grupo Liberado>

OBS: Algumas páginas de documentação que encontrei falavam de usar a tag NT_global_group, porém com o release do SQUID que estou utilizando neste momento (2.5.STABLE14), esta TAG não funciona.

Após inserir as ACL's, faça o trabalho sujo com o http_access:

http_access allow unrestrictedusers
http_access deny restrictedusers

No meu caso específico o cliente só desejava liberar ou negar o acesso a determinadas pessoas, mas muito mais pode ser feito, incluindo restrições por horário, por tipo de acesso e o que mais sua imaginação de Bastard Operator From Hell permitir, é igual a Neston: existem mil maneiras de preparar, invente a sua!

Após isto, se desejar, insira uma linha no seu script de firewall, para não permitir que ninguém navegue por fora do proxy:

/sbin/iptables -A INPUT -p tcp --dport 80 -j DROP

Um outro ponto importante é permitir que o usuário do Squid possa ler o diretório onde fica o socket do winbind, isso pode ser feito com o comando:

# chgrp proxy /var/run/samba/winbindd_privileged

Após a execução do comando, reinicie o winbind.

Dica: não tente mudar as permissões do diretório, se elas estiverem diferente de 750 o winbind simplesmente não sobe.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparação do ambiente
   3. Adicionando o servidor no domínio
   4. Configuração do SQUID
   5. Considerações finais
Outros artigos deste autor

Servidor de e-mail completo

Instalando o asterisk no Debian GNU/Linux

Leitura recomendada

Proxy em paralelo com o mikrotik

Thunder Cache - Cache inteligente

Grace - Usando a função "Regression"

Configurar servidor proxy Squid (Ubuntu)

Servidor proxy com Squid - Instalação e configuração

  
Comentários
[1] Comentário enviado por leoberbert em 30/08/2006 - 13:55h

Porra cara!!! Seu artigo era oq eu estava procurando de VERDADE!!!

Valeu pelo excelente artigo!!!

[2] Comentário enviado por calvii em 30/08/2006 - 15:30h

Acho q ja foi publicado um artigo sobre este assunto...........

[3] Comentário enviado por rootkit em 03/09/2006 - 06:40h

Eu realmente não sei dizer calvii, toda documentação que eu achei ou cobria a instalação com samba 2.xx ou com LDAP, como não atendiam as minhas necessidades, fui fazendo a instalação com samba 3.xx e winbind e documentando-a, o que acabou gerando este artigo :)

[4] Comentário enviado por cesarmoura em 04/09/2006 - 23:35h

Cara, muito bom o artigo.
Esquece as críticas de quem nunca escreveu um artigo, não sabe o quanto é difícil e trabalhoso. É, é verdade nunca postei algum aqui no vivaolinux, mas também nunca critiquei algum com qualidade igual ao teu.
Realmente está muito bom.
[ ]´s

[5] Comentário enviado por leoberbert em 18/09/2006 - 12:29h

Amigo.. Qual o SOURCE.LIST que vc está usando pq eu naum consegui encontrar os pacotes:

libnss-mdns
libpam-ccreds

Fico no aguardo!


[6] Comentário enviado por leoberbert em 18/09/2006 - 12:55h

Se puder me dar seu MSN pra me dar um ajudinha ficaria grato.. um abraço!

[7] Comentário enviado por rootkit em 20/09/2006 - 07:17h

Opa Leo,

Para esse servidor específico eu tô usando o seguinte sources.list:

deb http://ftp.us.debian.org/debian/ unstable main
deb-src http://ftp.us.debian.org/debian/ unstable main

deb http://security.debian.org/ stable/updates main

O meu contato do MSN tô te passando por e-mail, mas estou de férias no Brasil até o dia 29, então você provavelmente não vá me encontrar online por muito tempo até essa data :)

[8] Comentário enviado por tiagonanuca em 06/01/2008 - 21:56h

opa...
Excelente artigo....

Mais isso funciona com proxy transparente?

Vlw/Flw

[9] Comentário enviado por rootkit em 07/01/2008 - 04:22h

tiagonanuca,

Autenticação e proxy transparente são feitos para funcionar de formas separadas, mas, se tens um Active Directory ativo na tua rede, aplicas uma GPO a todos os usuários, para configurar automaticamente o proxy, ou podes ainda entregar as configurações de proxy via WPAD ou DHCP (estou escrevendo um artigo a respeito destas configurações, que deve ser publicado em breve).

[10] Comentário enviado por leandromoreirati em 14/01/2008 - 16:58h

Caros,
Preciso fazer meu proxy autenticar no AD, mas quando o usuário logar na maquina esse login servir para a internet. É possivel fazer isso?

Att.

Leandro

[11] Comentário enviado por paulomcpimentel em 22/02/2008 - 10:22h

DICA PARA SQUID 2.6 (apenas):

Se forem utilizar o squid 2.6 na linha do tipo acl externa (external_acl_type) para grupos do AD removam a opção concurrency, pois ela mudou suas características para esta versão causando o funcionamento incorreto da external_acl_type.

Abaixo esta a versão que estou usando.

# Insira isto se você precisar que os usuários estejam contidos em #grupos
external_acl_type nt_group ttl=0 %LOGIN /usr/lib/squid/wbinfo_group.pl

[12] Comentário enviado por nitromind em 19/03/2008 - 16:01h

oi pessoal! seguinte fiz tudo correto o unico problema eh que quando abro o browser nao aparece a caixa de dialogo pedindo login e senha oq pode ser ?

[13] Comentário enviado por rootkit em 19/03/2008 - 19:18h

nitromind,

O que o log do squid diz ? com o getent passwd você consegue listar os usuários do seu Active Directory ?

[14] Comentário enviado por nitromind em 19/03/2008 - 22:05h

cara agora to em casa, eh la no meu trabalho isso, mas no log o squid levanta tudo ok, consigo listar os usuarios e o net ads testjoin ta ok
aparentemente esta tudo ok
segunda-feira posto mais informacoes
valeu!

[15] Comentário enviado por nitromind em 24/03/2008 - 14:08h

http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 16 MB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 512 16 256
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param basic realm Este acesso monitorado, por gentileza digite seu login e senha para acesso - Sinf - SINC
#auth_param ntlm credentialsttl 15 minutes

#auth_param ntlm max_challenge_reuses 0
#auth_param ntlm max_challenge_lifetime 2 minutes
#auth_param ntlm use_ntlm_negotiate off

#Insira isto se vocêrecisar que os usuáos estejam contidos em grupos
external_acl_type nt_group ttl=0 %LOGIN /usr/lib/squid/wbinfo_group.pl
acl all src 0.0.0.0/0.0.0.0
acl rede src 192.168.0.0/24
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
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 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
#acl autenticacao proxy_auth REQUIRED
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
#http_access allow autenticacao
http_access allow rede
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_user proxy
cache_effective_group proxy
coredump_dir /var/spool/squid

cache.log do squid
tail -f /var/log/squid/cache.log
2008/03/24 11:44:35| 0 Objects expired.
2008/03/24 11:44:35| 0 Objects cancelled.
2008/03/24 11:44:35| 0 Duplicate URLs purged.
2008/03/24 11:44:35| 0 Swapfile clashes avoided.
2008/03/24 11:44:35| Took 0.6 seconds ( 0.0 objects/sec).
2008/03/24 11:44:35| Beginning Validation Procedure
2008/03/24 11:44:35| Completed Validation Procedure
2008/03/24 11:44:35| Validated 0 Entries
2008/03/24 11:44:35| store_swap_size = 0k
2008/03/24 11:44:36| storeLateRelease: released 0 objects

access.log do squid
tail -f /var/log/squid/access.log
1205945767.572 104 192.168.0.136 TCP_MISS/503 1558 POST http://www.vivaolinux.com.br/comentarios/enviarComentario.php - DIRECT/72.51.46.57 text/html

testjoin
net ads testjoin
Join is OK

info
net ads info
LDAP server: 192.168.0.9
LDAP server name: sinct01.sinc.int
Realm: SINC.INT
Bind Path: dc=SINC,dc=INT
LDAP port: 389
Server time: Seg, 24 Mar 2008 14:03:19 BRT
KDC server: 192.168.0.9
Server time offset: 7241

descomentando o #acl autenticacao proxy_auth REQUIRED o brownser pede login e senha porem nao autentica fica no looping
tai pessoal espero q com essas informacoes vcs possam me ajudar, estou no aguardo

[16] Comentário enviado por dmarcel em 04/05/2008 - 04:50h

Pessoal no meu serividor não aparece o arquivo wbinfo_group.pl, o unico lugar que encontrei foi na própria pasta de instalação, preciso copiar essa esse arquivo ou instalar algum módulo ?
obrigado.

[17] Comentário enviado por removido em 12/08/2008 - 14:28h

Cara, muito bom este artigo. Efetuei as configurações com base neste artigo e funcionaram perfeitamente. Com relação à utilização do helper squid-2.5-ntlmssp, para utiliza-lo precisamos habilitar a leitura do diretório /var/run/samba/winbind_privileged para o usuário proxy. Para isso podemos fazer de duas maneiras, alterando o grupo do diretório para proxy ou adicinando o usuário proxy ao grupo winbind_priv. Após efetuar a alteração as máquinas efetuam a autenticação automaticamente com o usuário que está logado no AD, sem solicitar user/pass. Valew.

[18] Comentário enviado por walterti em 11/11/2008 - 15:58h

Uma dúvida... quando o usuario fize logon no dominio ao ligar o pc, e tentar acessar uma pagina de internet, o browser vai abrir um prompt pedindo usuario e senha pra cada instancia do navegador, ou ele vai identificar o usuario/senha que ele utilizou pra logar no domínio e já autenticar??? queria era eliminar akele maldito prompt pq akilo eh chato pacas

[19] Comentário enviado por walterti em 11/11/2008 - 19:44h

Estão em débito de um tutorial desse pra ambiente slackware... os pacotes ali descritos eu nao encontri quase nada, vou lutar esse fds e tentar colocar pra funcionar, assim que conseguir penso em fazer um tutorial... mo dificuldade achar isso pra slack

[20] Comentário enviado por walterti em 15/11/2008 - 20:55h

bom, eu consegui, integrei slackware squid e windows 2003 server com active directory
usando samba com winbind e kerberos atraves do modulo ntlm_auth do squid.
irei escrever um artigo sobre o caso, porem antes preciso resulver um problema.
sempre que tento abrir uma página ele abre uma janela de autenticação,
mas nao eh akele prompt pedindo usuario senha do squid, eh um prompt
tipo qdo tenta acessar uma pasta numa maquina que tem senha, então fui no squid
e configurei da seguinte forma auth_param ntlm program /usr/libexec/sq/ntlm_auth -domain=dominio.com -username=administrador -password=senha
foi a unica forma de fazer funcionar mas acho que nao tah correto, afinal sempre os usuarios
estarao logados como administrador e nao tenho controle de quem acessa o que.
estou pensando ainda como resolver isso, se alguem souber eu ficaria grato

[21] Comentário enviado por rappa888 em 05/01/2014 - 18:18h

rootkit,
também não consegui usar com o helper:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp

sabe o que está impatando ??
trabalho em 2 sites, em um para autenticar, quando a máquina não está no dominio, autenticamos colocando o dominio \ login "DOMINIO\usuário"
usando o helper ..2.5-basic.. autentico apenas com o usuário. Isso não é ruim, mas é só uma dúvida.

neste novo site uso:
samba 2:3.6.6
winbind 2:3.6.6
squid 2.7.stable9
kerberos 5

no antigo:
samba 3x-3.5.4
winbind 3.5.4
squid 2.6.stable2
kerberos5

tem alguma idéia no que preciso alterar para voltar a autenticar "DOMINIO\usuario"..


valeu!!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts