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!
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