Squid com autenticação e ACLs apartir do grupos do Active Diretory

No ambiente corporativo o uso de Internet necessita de um amplo monitoramento, afinal se colocarmos um Proxy com acesso livre, não vamos poder verificar quem está acessando determinado site. Neste artigo vamos configurar o Squid com autenticação feita na base de dados LDAP e a criação de grupos de acesso no próprio Active Directory.

[ Hits: 44.293 ]

Por: yros aguiar em 30/06/2011


Instalação do Squid



Vamos instalar o Squid, para instalá-lo pelos repositórios da sua distribuição, entre no terminal como root e digite o comando abaixo.

No RedHat, CentOS e Fedora:

# yum install squid

No Debian e Ubuntu:

# apt-get install squid

Para Instalar pelo arquivo fonte, baixe o squid na versão source, com:

# wget http://mirrors.ccs.neu.edu/Squid/squid-3.1.10.tar.gz

Descompacte o arquivo baixado do squid:

# tar -zpxvf squid-3.1.10.tar.gz

E finalmente, para instalar o squid:

# cd squid-3.1.10
# ./configure
# ./make
# ./make install

Pronto, a instalação está concluída, agora vamos determinar os níveis de acesso e criar o arquivo de configuração.

Determinando os Níveis de Acesso

Primeiramente temos que determinar os níveis de acesso. Os níveis de acesso devem ser implementados para que cada usuário tenha permissão de acessar o conteúdo que lhe seja permitido.

Por exemplo, se a empresa tem um sistema na nuvem, logicamente será permitido o acesso a este sistema, ao domínio ou site onde está hospedado o sistema da empresa, alguns usuários necessitam somente de acesso a este site, pois eles trabalham somente com a ferramenta da empresa. Outros usuários tem um acesso adicional onde é permitido pesquisas, envio de e-mail, etc, e ainda temos um nível que tem acesso total, normalmente no cargo de gerentes, chefia, onde tem acesso amplo a download, stremaing de vídeo, áudio, redes sociais, etc. Será determinado então 3 níveis de internet:
  • Nível 1 : Gerencia/Chefia, tem acesso total inclusive a streming de áudio, vídeo e downloads;
  • Nível 2 : Tem acesso moderado, não tem acesso a redes sociais, downloads, e streaming, só pode fazer pesquisas enviar e-mail, e acessar alguns sites, que não estão na blacklist;
  • Nível 3 : Somente tem acesso a sites pré-definidos, somente sites liberados anteriormente, domínios específicos, intranet, site de cadastro, etc.
Agora podemos configurar o Squid no Servidor.
    Próxima página

Páginas do artigo
   1. Instalação do Squid
   2. Configurações e Conclusão
Outros artigos deste autor

Introdução ao DevOps - Infraestrutura como código

Controle de banda com Slackware 10 + CBQ + Iptables + DHCP

Como gerenciar cotas de disco

Elaborando uma política de segurança para a empresa

Leitura recomendada

Analisando log Squid do Mikrotik no SARG

Firewall + Proxy autenticado + Apache (Centos 5.5 32/64 bits)

Squid autenticado no Active Directory com Winbind

Controlando acesso às páginas do Apache na rede interna

Cache Full Squid + WebHTB

  
Comentários
[1] Comentário enviado por djcelsodub em 30/06/2011 - 13:41h

Show de bola cara...
já utilizo o squid com esta configuração há algum tempo e funciona redondo.

excelente contribuição.

abs


Celso Faria
Americana/SP

[2] Comentário enviado por diogoborges em 18/10/2011 - 09:40h

Gostaria de uma ajuda de vocês pois consigo autenticar via LDAP no AD, mas minha intenção e fazer controle por grupo do AD. o link pra do fórum eh:
http://www.vivaolinux.com.br/topico/Debian/squid-autenticado-com-LDAP-por-grupo-no-AD

[3] Comentário enviado por bdelmedico em 07/12/2011 - 14:35h

Caros, estou tendo um problema chato no squid. ele esta autenticando tudo normal. porem qualquer alteraçao nos grupos do AD ele nao reconhece. dai eu tenho que dar o squid -k reconfigure

[4] Comentário enviado por awmoreira em 28/03/2012 - 13:35h

Caro yros,

Essa linha é necessária???
acl webserver src 172.16.16.1/255.255.255.255

Grato.

[5] Comentário enviado por yros em 28/03/2012 - 13:51h

acredito que sim, pois será a interface que o serviço está sendo escutado

[6] Comentário enviado por mou_338 em 19/03/2014 - 16:20h

Yros
Copie todo seu squid.conf alterando os dados necessarios mais ele pede autenticação e ai vai..Mas se tento restartar o servico ele da erro na acl de acl Nivel1 external internet Grupo_Internet_Nivel1 src 172.16.1.0/24

Segue o meu abaixo da uma olhada..

#inicio squid.conf

shutdown_lifetime 5 seconds
icp_port 0

#IP e Porta de conexãao Proxy
http_port 10.3.156.96:3128

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# Usuáo e grupo do squid
cache_effective_user squid
cache_effective_group squid
strip_query_terms on

# Arquivo de pid/execuç.
pid_filename /var/run/squid.pid

# Arquivos de Log
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
log_mime_hdrs off
forwarded_for off


#Acls Padroes

acl manager proto cache_object
acl webserver src 10.3.156.190
acl localhost src 127.0.0.1
acl SSL_ports port 443 563
acl Safe_ports port 21 53 465 587 993
acl CONNECT method CONNECT
acl servers_noauth src "/etc/squid/extras/server_noauth"
acl Nivel1 external internet Internet_Nivel1 src 10.3.156.190:389


# Acessos Padrao


# Sites com acesso livre sem passar por filtro de URL e autenticaç
#acl Sites_Livres dstdomain "/etc/squid/extras/sites_livres"
#http_access allow Sites_Livres

# Sites que nao cacheam
#acl semcache dstdomain "/etc/squid/extras/semcache"
#no_cache allow semcache

# Sites de atualizaç do windows, sem regras
#acl Windows_Update dstdomain "/etc/squid/extras/windowsupdate"
#http_access allow Windows_Update

# Permite guardar no cache arquivos de atualizaç
refresh_pattern windowsupdate.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims
refresh_pattern download.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims
refresh_pattern www.microsoft.com/.*\.(cab|exe|dll|msi) 10080 100% 43200 reload-into-ims
refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe|dll|msi) 4320 100% 43200 reload-into-ims


# Libera o Acesso a Internet aos Servidores sem autenticaç
acl ldap-auth proxy_auth REQUIRED


# Autenticaç do Squid na Base LDAP/AD

# Programa de autenticaç é squid_ldap_auth, neste exemplo utilizando CentOS 5.5 ele fica no diretó /usr/lib64/squid/, procure-o na sua distro.
#auth_param basic program /usr/lib64/squid/squid_ldap_auth -R -b "dc=teste,dc=com" -D "CN=squid,OU=Proxy,DC=teste,DC=com" -w "sserra@001" -f sAMAccountName=%s -h 10.3.156.190

#auth_param basic program /usr/lib64/squid/squid_ldap_auth -R -b dc=teste,dc=com -f sAMAccouNtName=%s -h 10.3.156.190:389 -D cn=squid,cn-users,dc=teste,dc=com -w sserra@001

auth_param basic program /usr/lib64/squid/squid_ldap_auth -R -b dc=teste,dc=com -f sAMAccountName=%s -h 10.3.156.190:389 -D cn=Administrador,cn=Users,dc=teste,dc=com -w sserra#901

# essa é parte mais complicada na configuraç: para sabermos corretamente os parâtros de dc, ou, temos que criar o usuáo que sera utilizado para pesquisa na base LDAP, e depois de criado o usuáo executar
#o seguinte comando no cmd: "dsquery -user nomedousuario" ele iráetornar a linha com os parametros corretos de OU, DC, CN, com isto em mã configure os parametros acima.
# o ip 172.16.1.1 refere-se ao IP servidor AD, na qual seráeita a autenticaç LDAP.

# configuraç do pop-up de login no squid
auth_param basic children 5
auth_param basic realm Digite seu Login e Senha para Acesso a Internet
auth_param basic credentialsttl 20 minute

#Solicitaç de autenticacao do proxy
acl Nivel2 external internet Internet_Nivel2 src 10.3.156.190:389


#Criaç de ACL externa para montagem dos níis de acesso em cima de grupos do active directory

#ACL externa para Autenticacao nas bases LDAP do PDC, a linha abaixo pesquisa se o usuáo pertence a determinado grupo no domío, e cria a acl de nome internet utilizando o programa squid_ldap_group

external_acl_type internet %LOGIN /usr/lib64/squid/squid_ldap_group -R -b "dc=teste,dc=com" -D "CN=Administrador,CN=Users,DC=teste,DC=com" -w "sserra#901" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=%a
,CN=UserS,DC=teste,DC=com))" -h 10.3.156.190:389"

# utiliza a Acl internet criada acima e verifica se o usuáo que fez autenticaç pertence ao grupo do domío especificado, no caso: Grupo_Internet_Nivel1

acl Nivel3 external internet Internet_Nivel3 src 10.3.156.190:389

# utiliza a Acl internet criada acima e verifica se o usuáo que fez autenticaç pertence ao grupo do domío especificado, no caso: Grupo_Internet_Nivel2
acl Porno dstdomain "/etc/squid/extras/porno"

# utiliza a Acl internet criada acima e verifica se o usuáo que fez autenticaç pertence a ao grupo do domío especificado, no caso: Grupo_Internet_Nivel3
acl Palavras_Bloqueadas_Nivel1 url_regex -i "/etc/squid/extras/palavras_bloqueadas_nivel1"

#Bloqueia sites porno
acl Bloqueio_Nivel1 dstdomain "/etc/squid/extras/bloqueio_nivel1"

#bloqueios do nivel1

acl streaming rep_mime_type ^video/x-ms-asf

acl proibir_musica urlpath_regex -i \.aif$ \.aifc$ \.flv$ \.asf$ \.aiff$ \.asf$ \.rmvb$ \.asx$ \.avi$ \.au$ \.m3u$ \.med$ \.mp3$ \.m1v$ \.mp2$ \.mp2v$ \.mpa$ \.mov$ \.mpe$ \.mpg$ \.mpeg$ \.ogg$ \.pls$ \.ram$ \.ra$ \
.ram$ \.snd$ \.wma$ \.wmv$ \.wvx$ \.mid$ \.midi$ \.rmi$ \.flv$



# bloqueios do nivel2
acl Palavras_Bloqueadas_Nivel2 url_regex -i "/etc/squid/extras/palavras_bloqueadas_nivel2"

#Regra para bloqueio de extensãde ráos online / arquivos de streaming:
acl Bloqueio_Nivel2 dstdomain "/etc/squid/extras/bloqueio_nivel2"
http_reply_access deny streaming

acl Downloads url_regex -i .exe$ .mp3$ .iso$ .zip$ .msi$ .mjpg$ .mpeg$ .mp4$ .ram$ .avi$ .wav$ .tar.gz$ .gz$ .bz2$ .arj$ .rar$ .rpm$ .wma$ .flv$ .mov$ .ra$ .rax$ .rm$ .rmm$ .m3u$ .smi$ .smil$ .aif$ .au$ .qt$ .mpg$ .
rmvb$ .rmv$ .rm$ .mp2$ .mpa$ .vob$ .scr$ .cpl$

acl Palavras_Bloqueadas_Nivel3 url_regex -i "/etc/squid/extras/palavras_bloqueadas_nivel3"

# Bloqueia downloads
acl Bloqueio_Nivel3 dstdomain "/etc/squid/extras/bloqueio_nivel3"



#Bloqueios do nivel3

# Downloads bloqueados

acl all src 0.0.0.0/0.0.0.0



http_access deny CONNECT !SSL_ports
http_access allow servers_noauth
http_access allow localhost
http_access deny Palavras_Bloqueadas_Nivel1
http_access deny Bloqueio_Nivel1
http_access deny Palavras_Bloqueadas_Nivel2
http_access deny Bloqueio_Nivel2
http_access allow Nivel2
http_access deny Palavras_Bloqueadas_Nivel3
http_access allow Bloqueio_Nivel3
http_access allow Nivel3
http_access deny Porno
http_access allow all all
http_access allow Nivel1





# Bloqueia os usuáos nãautenticados

# Parâtros de ajuste fino
emulate_httpd_log off
maximum_object_size 4096 KB
minimum_object_size 0 KB
cache_mem 2000 KB
cache_dir ufs /var/spool/squid 100 16 256
#httpd_accel_host virtual
#httpd_accel_port 80
#httpd_accel_with_proxy on
#httpd_accel_uses_host_header on
visible_hostname testeproxy
unique_hostname testeproxy
authenticate_ip_ttl 5 hour
#error_directory /usr/share/squid/errors/Portuguese


# FIm do arquivo squid.conf


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts