Você está na página 1de 7

Squid com autenticao 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, no vamos poder verificar quem est acessando determinado site. Neste artigo vamos configurar o Squid com autenticao feita na base de dados LDAP e a criao de grupos de acesso no prprio Active Directory. Por: yros aguiar

Instalao do Squid
Vamos instalar o Squid, para instal-lo pelos repositrios da sua distribuio, 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 verso 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 instalao est concluda, agora vamos determinar os nveis de acesso e criar o arquivo de configurao.

Determinando os Nveis de Acesso


Primeiramente temos que determinar os nveis de acesso. Os nveis de acesso devem ser implementados para que cada usurio tenha permisso de acessar o contedo que lhe seja permitido. Por exemplo, se a empresa tem um sistema na nuvem, logicamente ser permitido o acesso a este sistema, ao domnio ou site onde est hospedado o sistema da empresa, alguns usurios necessitam somente de acesso a este site, pois eles trabalham somente com a ferramenta da empresa. Outros usurios tem um acesso adicional onde permitido pesquisas, envio de e-mail, etc, e ainda temos

um nvel que tem acesso total, normalmente no cargo de gerentes, chefia, onde tem acesso amplo a download, stremaing de vdeo, udio, redes sociais, etc. Ser determinado ento 3 nveis de internet: Nvel 1 : Gerencia/Chefia, tem acesso total inclusive a streming de udio, vdeo e downloads; Nvel 2 : Tem acesso moderado, no tem acesso a redes sociais, downloads, e streaming, s pode fazer pesquisas enviar e-mail, e acessar alguns sites, que no esto na blacklist; Nvel 3 : Somente tem acesso a sites pr-definidos, somente sites liberados anteriormente, domnios especficos, intranet, site de cadastro, etc. Agora podemos configurar o Squid no Servidor.

Configuraes e Concluso Criando o arquivo de configurao do Squid


Aps feita a instalao crie o arquivo squid.conf, dentro do diretrio onde o squid foi instalado, no vamos utilizar o arquivo default pois o mesmo muito extenso e tem muitas configuraes que no utilizaremos, vamos criar um arquivo a partir do zero. squid.conf

#inicio squid.conf shutdown_lifetime 5 seconds icp_port 0 #IP e Porta de conexo ao Proxy http_port 172.16.1.1:8080 acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY # Usurio e grupo do squid cache_effective_user squid cache_effective_group squid strip_query_terms on # Arquivo de pid/execuo. 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 172.16.16.1/255.255.255.255 acl localhost src 127.0.0.1/255.255.255.255 acl all src 0.0.0.0/0.0.0.0 acl SSL_ports port 443 563 acl Safe_ports port 53 587 465 993 21 acl CONNECT method CONNECT http_access allow manager webserver http_access deny manager # Acessos Padrao http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Sites com acesso livre sem passar por filtro de URL e autenticao 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 atualizao do windows, sem regras acl Windows_Update dstdomain "/etc/squid/extras/windowsupdate" http_access allow Windows_Update # Permite guardar no cache arquivos de atualizao 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 reloadinto-ims # Libera o Acesso a Internet aos Servidores sem autenticao acl servers_noauth src "/etc/squid/extras/server_noauth" http_access allow servers_noauth # Autenticao do Squid na Base LDAP/AD # Programa de autenticao o squid_ldap_auth, neste exemplo utilizando CentOS 5.5 ele fica no diretrio /usr/lib64/squid/, procure-o na sua distro. auth_param basic program /usr/lib64/squid/squid_ldap_auth -R -b "dc=nomedosubdominio,dc=dominio" -D "CN=usuariodepesquisaldap,OU=Unidadeorganizancionaldousuario,DC=nomedodominio,DC=dom inio" -w "senha" -f sAMAccountName=%s -h 172.16.1.1 # essa a parte mais complicada na configurao: para sabermos corretamente os parmetros de dc, ou, temos que criar o usurio que sera utilizado para pesquisa na base LDAP, e depois de criado o usurio executar #o seguinte comando no cmd: "dsquery -user nomedousuario" ele ir retornar a linha com os parametros corretos de OU, DC, CN, com isto em mos configure os parametros acima. # o ip 172.16.1.1 refere-se ao IP servidor AD, na qual ser feita a autenticao LDAP. # configurao do pop-up de login no squid auth_param basic children 5 auth_param basic realm Digite seu Login e Senha para o Acesso Internet auth_param basic credentialsttl 20 minutes #Solicitao de autenticacao do proxy acl Usuarios_do_Dominio proxy_auth REQUIRED #Criao de ACL externa para montagem dos nveis de acesso em cima de grupos do active directory #ACL externa para Autenticacao nas bases LDAP do PDC, a linha abaixo pesquisa se o usurio pertence a determinado grupo no domnio, 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=nomedosubdominio,dc=dominio" -D "CN=usuariodepesquisaldap,OU=Unidadeorganizacionaldousuario,DC=apscoordenacao,DC=local" -w "hsm123" -f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn= %a,OU=unidadeoriganizacional,DC=nomedosubdomino,DC=dominio))" -h 172.16.1.1 # utiliza a Acl internet criada acima e verifica se o usurio que fez autenticao pertence ao grupo do domnio especificado, no caso: Grupo_Internet_Nivel1 acl Nivel1 external internet Grupo_Internet_Nivel1 src 172.16.1.0/24 # utiliza a Acl internet criada acima e verifica se o usurio que fez autenticao pertence ao grupo do domnio especificado, no caso: Grupo_Internet_Nivel2 acl Nivel2 external internet Grupo_Internet_Nivel2 src 172.16.1.0/24 # utiliza a Acl internet criada acima e verifica se o usurio que fez autenticao pertence a ao grupo do domnio especificado, no caso: Grupo_Internet_Nivel3 acl Nivel3 external internet Grupo_Internet_Nivel3 src 172.16.1.0/24 #Bloqueia sites porno acl Porno dstdomain "/etc/squid/extras/porno" http_access deny Porno #bloqueios do nivel1 acl Palavras_Bloqueadas_Nivel1 url_regex -i "/etc/squid/extras/palavras_bloqueadas_nivel1" acl Bloqueio_Nivel1 dstdomain "/etc/squid/extras/bloqueio_nivel1" http_access deny Palavras_Bloqueadas_Nivel1 http_access deny Bloqueio_Nivel1 http_access allow Nivel1 # bloqueios do nivel2 acl streaming rep_mime_type ^video/x-ms-asf #Regra para bloqueio de extenso de rdios online / arquivos de streaming: 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$ http_reply_access deny streaming acl Palavras_Bloqueadas_Nivel2 url_regex -i "/etc/squid/extras/palavras_bloqueadas_nivel2" http_access deny proibir_musica acl Bloqueio_Nivel2 dstdomain "/etc/squid/extras/bloqueio_nivel2" http_access deny Palavras_Bloqueadas_Nivel2 # Bloqueia downloads 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$ http_access deny Bloqueio_Nivel2 http_access allow Nivel2 #Bloqueios do nivel3 # Downloads bloqueados acl Palavras_Bloqueadas_Nivel3 url_regex -i "/etc/squid/extras/palavras_bloqueadas_nivel3" http_access deny Downloads acl Bloqueio_Nivel3 dstdomain "/etc/squid/extras/bloqueio_nivel3" http_access deny Palavras_Bloqueadas_Nivel3 http_access deny Bloqueio_Nivel3 http_access allow Nivel3 # Bloqueia os usurios no autenticados http_access deny all # Parmetros 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 nome-do-proxy unique_hostname nome-do-proxy authenticate_ip_ttl 5 hour error_directory /usr/share/squid/errors/Portuguese # FIm do arquivo squid.conf No esquea de criar os arquivos referente as ACLs, que fica dentro do diretrio extras no diretrio do squid: Arquivos: porno, bloqueio_nivel1, bloqueio_nivel2, bloqueio_nivel3, palavras_bloqueadas_nivel1, palavras_bloqueadas_nivel2, palavras_bloqueadas_nivel3, sites_livres, semcache, windowsupdate, server_noauth

Os diretrios de logs, e permisses nos arquivos: # adduser squid -g squid # chown -R squid.squid /var/log/squid/ # chown -R squid.squid /etc/squid/extras/ Criando o diretrio de cache: # squid -z Iniciando servio: # service squid start

Concluso
Agora voc pode determinar o nvel de acesso do usurio de internet, somente colocando ou retirando ele do grupo do AD, na qual a internet foi liberada. Espero que tenha conseguido ajudar a vocs, quaisquer dvidas ou comentrios sobre o artigo, estarei disposto a ajudar. Boa sorte a todos!