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

Embed Size (px)

Citation preview

Squid com autenticao e ACLs apartir do grupos do Active DiretoryNo 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 SquidVamos 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 AcessoPrimeiramente 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 SquidAps 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

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