Autenticação Squid em Active Directory

Publicado por Osandi augusto em 01/10/2009

[ Hits: 15.784 ]

 


Autenticação Squid em Active Directory



Olá pessoal,

Estou aqui para tentar mostrar como fazer o Squid autenticar no AD, isto vai servir para aqueles que gostarem de controlar acessos com o Squid e querem saber o que cada usuário está trafegando sem a necessidade de ter que criar mais uma senha para o usuário, pois ele utilizará a mesma senha usada para se logar na rede Windows.

Primeiramente vamos fazer algumas configurações no Windows 2003 Server que tenha o serviço de Active Directory.

Crie um OU "Unidade Organizacional", depois dentro desta OU crie os grupos que que serão utilizados para criar o controle de acesso. No meu caso eu criei 3 grupos:
  • AcessoRestrito - será responsável por restringir as páginas que não podem ser acessadas;
  • AcessoDownload - será responsável por restringir o download de extensões mp3, wma, rmvb, zip etc;
  • AcessoTotal - não possui restrições.

Logo após criar o grupo, crie um usuário que será utilizado para acessar estes grupos e também responsável por autenticar o Squid no AD. No meu caso criei um usuário PROXY.

Adicione este usuário como membro de cada grupo acima criado, logo após é só adicionar os usuários nos grupos acima.

Exemplo, se eu quero que "fulano de tal" não acesse tal página, adiciono-o ao grupo AcessoRestrito e assim sucessivamente.

Vamos para a configuração Linux, esta configuração foi testada em Ubuntu 8.04 Server e Fedora Core 6.

Instale o Squid:

# apt-get install squid
ou
# yum install squid

Caso for seguir o conf abaixo, crie as seguintes pastas e arquivos:

# mkdir /var/cache/squid/
# mkdir /var/cache/squid/1
# mkdir /var/cache/squid/2
# mkdir /var/cache/squid/3

# chown proxy.proxy /var/cache/squid/ -R
(usuário do Squid instalado no Linux)
# chmod 665 /var/cache/squid/ -R

Acesse a pasta /etc/squid/ e crie os seguintes arquivos:

# touch dominio_liberado

E adicione os sites que podem ser acessados, exemplo:

.bb.com.br
.caixa.gov.br

# touch dominio_bloqueado

Adicione os sites que não podem ser acessados. Exemplo:

.orkut.com
.youtube.com

# touch msn_bloqueado

Adicione os endereços de acesso ao MSN, exemplo:

passport.com
msn.com.br
msn.com
sc.msn.com
www.msn.be
207.46.110.11
messenger.msn.com.br
http.msg.yahoo.com
nickname.msn.com.br
chat.msn.com
chat.msn.com.br
msgr.hotmail.com
gateway.messenger.hotmail.com
http1.msgr.hotmail.com
http2.msgr.hotmail.com
http3.msgr.hotmail.com
http4.msgr.hotmail.com
http5.msgr.hotmail.com
http6.msgr.hotmail.com
http7.msgr.hotmail.com
http8.msgr.hotmail.com
http9.msgr.hotmail.com
http10.msgr.hotmail.com
http11.msgr.hotmail.com
http12.msgr.hotmail.com
http13.msgr.hotmail.com
http14.msgr.hotmail.com
http15.msgr.hotmail.com
http16.msgr.hotmail.com
http17.msgr.hotmail.com
http18.msgr.hotmail.com
http19.msgr.hotmail.com
http20.msgr.hotmail.com
www.ebuddy.com

# touch ips_bloqueados

Adicione os IPs que não podem ser acessados.

Agora vamos editar o arquivo /etc/squid/squid.conf deixando-o como exemplo abaixo:

http_port 3128
visible_hostname proxy.icts.org.br
cache_mem 1000 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 1024 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/cache/squid/1 399 16 256
cache_dir ufs /var/cache/squid/2 399 16 256
cache_dir ufs /var/cache/squid/3 399 16 256
cache_access_log /var/log/squid/access.log
#cache_effective_user nobody
#cache_effective_group nobody
#cache_access_log /var/log/squid/access.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

# As linhas abaixo se referem a autenticação de usuário no AD
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=dominio,dc=extensaododominio" -D "cn=Usuario_criado_no_AD_proxy,ou=Internet,dc=dominio,dc=extensaododominio" -w "senha_do_user_proxy_criado_no_AD" -f sAMAccountName=%s -h ip_do_servidor_Com_AD

auth_param basic realm Digite seu usuario e senha
auth_param basic children 5
auth_param basic credentialsttl 15 minutes

# ACL externa para autenticação nas bases LDAP do PDC
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=dominio,dc=extensaododominio" -D "cn=proxy,ou=Internet,dc=dominio,dc=extensaododominio" -w "senha_do_user_proxy_criado_no_AD" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,dc=dominio,dc=extensaododominio))" -h ip_do_servidor_Com_AD

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563 10000
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
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 901 # SWAT
acl Safe_ports port 10000 # webmin
acl purge method PURGE
acl CONNECT method CONNECT
###inicio as regras a serem criadas
acl ldapAcessoRestrito external ldap_group AcessoRestrito #Grupo de acesso com restrições do ACTIVE DIRECTORY
acl ldapAcessoTotal external ldap_group AcessoTotal #Grupo de acesso com restrições do ACTIVE DIRECTORY
acl ldapAcessoDownload external ldap_group AcessoDownload #Grupo de acesso com restrições do ACTIVE DIRECTORY

########Bloqueando_E_Liberando_Dominio##################
acl dominio_bloqueado dstdomain -i "/etc/squid/dominio_bloqueado"
acl dominio_liberado dstdomain -i "/etc/squid/dominio_liberado"

############bloqueando Gtalk contudo furo com https############
#acl gtalk url_regex -i .mail\.google\.com/mail/channel/bind. .chatenabled.mail.google.com.

###############bloqueando MSN##########################
acl msn_bloqueado dstdomain -i "/etc/squid/msn_bloqueado"

###########A ACL abaixo barra download de arquivos extenções#######
acl block_arq urlpath_regex -i \.iso \.mdf \.exe \.aif \.aifc \.aiff \.asf$ \.asx \.avi \.au \.m3u \.med \.mp3 \.m1v \.mp2 \.mp2v \.mpa \.mov \.mpe \.mpg \.mpeg \.ogg \.pls \.ram \.snd \.wma \.wvx \.mid \.midi \.rmi

############Bloqueia Ips-não autorizados#######################
acl ips_bloqueados src "/etc/squid/ips_bloqueados" #A acl faz bloqueio de acesso por IP"

###########Controle de Banda##############################
delay_pools 3
# Significa que teremos dois controles de banda
# Segundo controle
#delay_class 1 2

# Limita a sua banda para +- 75Kbits
#delay_parameters 1 -1/-1 -1/-1
#delay_access 1 allow ldapAcessoB

# Primeiro controle
#delay_class 2 2

# -1/-1 significa que não teremos limites para a delay pool 1
#delay_parameters 2 -1/-1 -1/-1
#delay_access 2 allow ldapAcessoTotal

# Segundo controle
delay_class 3 2

# Limita a sua banda para +- 75Kbits
delay_parameters 3 5600/5600 1000/1000
delay_access 3 allow ldapAcessoRestrito

####Executando regras############
http_access deny manager
http_access deny purge
http_access deny dominio_bloqueado
http_access deny msn_bloqueado
http_access allow dominio_liberado
http_access allow purge localhost

####liberando download para o grupo do AD AcessoDownload
http_access allow ldapAcessoDownload block_arq

#####bloqueando downloado para todos os demais grupos
http_access deny block_arq

#####limitando acesso a internet para o grupo do AD AcessoRestrito
http_access allow ldapAcessoRestrito

######limitando acesso a internet para o grupo do AD AcessoRestrito
http_access allow ldapAcessoB

#####permitindo acesso total a sites para o grupo do AD AcessoTotal
http_access allow ldapAcessoTotal

######bloqueando acessos
http_access deny all
error_directory /usr/share/squid/errors/Portuguese

E pronto, reinicie o Squid e tudo estará funcionando!

Outras dicas deste autor

Habilitar HTTPS no JBoss 4.2.1

Bloqueando acesso total ao chat do Gmail com Squid

Leitura recomendada

CONISLI - Congresso Internacional de Software Livre 2007

Ubuntu Linux Intrepid Ibex Alpha4 até 6 travando no boot

Wine - Como instalar um programa Windows para todos os usuários do computador (incluindo a conta Convidado)

Programando seu própio sistema operacional

Removendo opção inválida "KDE" da lista de sessões da tela de login do GDM

  

Comentários
[1] Comentário enviado por cardoso_ph em 20/07/2010 - 17:03h

Osandi...
Não estou obtendo sucesso com essa parte..

# ACL externa para autenticação nas bases LDAP do PDC
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=dominio,dc=extensaododominio" -D "cn=proxy,ou=Internet,dc=dominio,dc=extensaododominio" -w "senha_do_user_proxy_criado_no_AD" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,dc=dominio,dc=extensaododominio))" -h ip_do_servidor_Com_AD

Não consigo fazer essa parte funcionar dá erro fatal no squid

2010/07/20 16:44:14| WARNING: ldap_group #1 (FD 12) exited
2010/07/20 16:44:14| WARNING: ldap_group #2 (FD 13) exited
2010/07/20 16:44:14| WARNING: ldap_group #3 (FD 14) exited
2010/07/20 16:44:14| Too few ldap_group processes are running
FATAL: The ldap_group helpers are crashing too rapidly, need help!

Aborted

Está exatamente igual a parte que faz referencia a ACL externa, sendo assim gostaria de saber o eu posso estar errando nisso..

Aguardo uma ajuda..
vlw..

[2] Comentário enviado por ulisses.santos em 03/11/2010 - 11:32h

amigo bom dia, 2 perguntas
1ª: como testar a conexão do squid com o ad?
2ª: quais campos devem ser alterados nas linhas?
# As linhas abaixo se referem a autenticação de usuário no AD
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=dominio,dc=extensaododominio" -D "cn=Usuario_criado_no_AD_proxy,ou=Internet,dc=dominio,dc=extensaododominio" -w "senha_do_user_proxy_criado_no_AD" -f sAMAccountName=%s -h ip_do_servidor_Com_AD

auth_param basic realm Digite seu usuario e senha
auth_param basic children 5
auth_param basic credentialsttl 15 minutes

# ACL externa para autenticação nas bases LDAP do PDC
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=dominio,dc=extensaododominio" -D "cn=proxy,ou=Internet,dc=dominio,dc=extensaododominio" -w "senha_do_user_proxy_criado_no_AD" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a,dc=dominio,dc=extensaododominio))" -h ip_do_servidor_Com_AD

[3] Comentário enviado por renatolmorais em 20/04/2011 - 16:34h

Oi, amigo!
Após iniciar os serviços, sempre que eu adicionar um usuário em um grupo específico, eu tenho que reiniciar o Squid?
A solução já está implementada na empresa onde trabalho e funcionando, mas sempre que adiciono um novo usuário, o squid só o reconhece quando eu o reinicio.

[4] Comentário enviado por fomezero em 13/08/2012 - 15:30h

Ola Gostaria de saber se essas Regras e Expecificações são todas Funcionais com windows 2008 server por que eu segui alguns tutoriais que encontrei na net e acabei me deparando com um Probleminha meio chato em relação ao squid o que esta acontecendo com meu squid é ele fica pedindo PROXY o tempo todo mesmo com o usuario Logado Com uma Acc do Dominio ele continua pedindo autenticação do Poupap do Proxy o Kerberos esta configurado o winbind esta Puxando os usuarios e Grupos do AD o kerbero Receb o Ticket gran Ticket Normalmente Hora Sincronizada mas ainda Tenho esse Problema Com o squid Pedindo Usuario e senha e mesmo que eu Coloque um usuario valido ele nao Libera o Pou Pap para a navegação do cliente alguem poderia ou me dar um tuto legal ou Uma LUZ em relação a essa autenticação do squid ??



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts