com autenticação tipo NCSA no Squid. No post anterior ensinei quais as ACLS e configurações necessárias para podermos implantar a autenticação de forma básica.
Porém, todos sabemos que os usuários possuem perfis de acesso diferentes.
Seja em casa, empresa. Você não vai querer bloquear o acesso do diretor ao facebook, não vai liberar acesso total ao pessoal do escritório correto para eles passarem o dia inteiro baixando mp3 e consumindo sua preciosa banda correto? Como vamos solucionar o problema ? Facilmente, criando grupos de usuários com perfis diferentes para acessarem o proxy. Então chega de blá, blá blá ! e vamos lá!
Partindo do principio que você seguiu ou pelo menos leu os tutoriais anteriores. Você já sabe criar os usuários e implementar a autenticação.
A ideia aqui é que você vá lendo post a post e no decorrer das etapas, desenvolvendo seu conhecimento. Por isto é muito importante se você deseja adquirir um conhecimento mais completo sobre o Squid ou os demais assuntos que serão postados aqui. É desejável que você sempre leia a sequência completa dos posts sobre um assunto.
Nos posts anteriores, você já aprendeu o que é o Squid, como funciona, para o que ele server, o que são ACLs quais são os principais tipos e como elas funcionam e outros conceito importantes.
OBS: Este tutorial é valido para Debian e derivados porém, nada impede de aplicar os conceitos e algumas configurações aprendidas aqui em outras distribuições.
Primeiro vamos instalar com o comando abaixo o pacote apache2-utils com o qual geraremos nosso arquivo contendo os usuários..
# apt-get install apache2-utils
Agora vamos instalar o squid com o comando abaixo:
# apt-get install squid3
# htpasswd -c passwd ribeiro
Ao digitar o comando a cima o comando pede a senha e sua confirmação.
você pode digita a senha que você quiser neste caso teste01
Em nosso tutorial, para fins didáticos criaremos 10 Usuários para nós. Dividiremos eles em 5 grupos,
Operacional, suporte, diretoria, adm, full. Com estes grupos criaremos níveis de acesso que atenderão
as necessidades do nosso cenário.
Você pode e deve criar quantos usuários e grupos achar necessário.
Os demais usuário serão criados com os comandos abaixo:
# htpasswd -c passwd secretaria1
# htpasswd -c passwd secretaria2
# htpasswd -c passwd diretor1
# htpasswd -c passwd diretor2 antonio
# htpasswd -c passwd jose
# htpasswd -c passwd suporte1
# htpasswd -c passwd suporte2
# htpasswd -c passwd sysadmin1
OBS: passwd aqui, não é o comando passwd e sim, o nome do nosso arquivo de senhas. Poderíamos chamar ele com o nome que quisermos, basta substituir passwd pelo nome que preferirmos.
Agora dentro do diretório /etc/squid3/ criaremos os arquivos referentes aos grupos que vão conter os usuários. Com o comandos abaixo:
# touch full administracao suporte operacional diretoria
Agora, com nosso editor de texto favorito, vamos adicionar os usuários ao respectivos arquivos dos grupos. Não vou usar editor de texto aqui por que como neste caso são só dois usuários por grupo usarei o comando echo com redirecionamento para adicionar os usuários aos arquivos.
# echo "secretaria1" >> /etc/squid3/administracao
# echo "secretaria2" >> /etc/squid3/administracao
# echo "diretor1" >> /etc/squid3/diretoria
# echo "diretor2" >> /etc/squid3/diretoria
# echo "antonio" >> /etc/squid3/operacional
# echo "jose" >> /etc/squid3/operacional
# echo "suporte1" >> /etc/squid3/suporte
# echo "suporte2" >> /etc/squid3/suporte
# echo "sysadmin1" >> /etc/squid3/full
# echo "ribeiro" >> /etc/squid3/full
Agora vamos instalar o squid com o comando abaixo:
Criaremos o diretório /etc/squid3/listas/
Ele vai conter as listas de bloqueio que o Squid ira usar para delimitar o acesso dos grupos de usuários. Para isso, basta usar o comando abaixo:
# mkdir /etc/squid3/listas/
Agora, com o diretório listas criado vamos rntrar nele e criar os arquivos de listas com os comandos abaixo:
# cd /etc/squid3/listas
# touch sexo_regex extensoes redes_sociais_regex stream_regex sexo redes_sociais diversos stream
Usaremos este arquivos, para criarmos as ACLS que controlarão o acesso dos usuários.
Estes arquivos conterão os sites a serem bloqueados. Vejamos alguns exemplos de lista de bloqueio abaixo:
# vi /etc/squid3/listas/extensoes
.exe$
.com$
.zip$
.rar$
.iso$
.ace$
.bat$
.pif$
.scr$
.mp3$
.cmd$
# vi /etc/squid3/listas/redes_sociais
.facebook.com
.twitter.com
.orkut.com
.tumblr.com
orkut
twwitter
tumblr
# vi /etc/squid3/listas/sexo
.pornobuceta.com
.redtube.com
.batepapo.uol.com.br
.playboy.com.br
.sexy.com.br
.sandrinha.
.galinhas.
.redtube.com
.batepapo.uol.com.br
.playboy.com.br
.sexy.com.br
.sandrinha.
.galinhas.
# vi /etc/squid3/listas/sexo_regex
sexo
hardcore
ninfeta
penis
suruba
sexy
gostosa
peituda
playboy
puta
buceta
# vi /etc/squid3/listas/stream
.youtube.com
.youtube.com.br
.metacafe.com
# vi /etc/squid3/listas/stream_regex
xhamster
youtube
kboing
megavideo
dailymotion
# vi /etc/squid3/listas/diversos
.uolk.uol.com.br/
.justfilmeseseriados.org
.melhoresfilmes.net
.filmesprabaixar.com
.filmeshd.tv
.downfilmes.net
.filmesdiarios.org
.baixarsofilmes.com
.brfilmes.org
.freedownz.110mb.com
.portalfilmes.org
.filmesparadownloads.com
.cubodown.com
.melhordocinema.com
.cuberfilmes.org
.baixarfilmes.ws
.baixandolegal.org
.baixargratis.net
.filmesparabaixar.org
.torradeira.net/*
.rededownload.com
.baixarofilme.net
.filmes-rmvb.blogspot.com
.sormvb.net
.degracaemaisgostoso.org
.baixarfilmesfree.net
.filmes-gratis.org
.topcine.net
.baixeturbo.org
###########################################################################
Vale Lembrar que, devemos manter as listas o menor possível. Pois minha experiência, mostra que
lista grandes afetam diretamente o desempenho do Squid. Para filtrar conteúdo sugiro outras ferramentas que trabalham em conjunto com o Squid. Como o Dansguardian ou Squidguard os quais , demostrarei depois, como se configura cada um deles.
Agora vamos editar o arquivo, /etc/squid3/squid.conf deixando ele com o seguinte conteúdoCaso você não queira copiar e colar basta fazer o download do arquivo aqui
Vamos edita-lo com o comando abaixo:
# vi /etc/squid3/squid.conf
# porta padrão do squid onde o proxy escutará
http_port 192.168.101.1:3128
# No meu caso 192.168.101.1 a porta padrão do squid é a 3128 mas você
#pode substitui-la por qualquer outra de sua preferência como por exemplo a 8080
###### linhas referentes autenticação por usuários ############
auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
# processos simultaneos de autenticação em nosso caso 10 mas isso
# depende da capacidade do seu servidor
auth_param basic children 10
# menssagem que aparecera ao usuário solicitando autenticação
auth_param basic realm Digite seu logim e senha
# tempo que a autenticação é valida por janela de navegador
auth_param basic credentialsttl 3 hours
# opção case sensitive nas senhas tem gente que aconselha desabilitar eu
#por segurança sou contra Usuário tem que aprender digitar a senha
auth_param basic casesensitive on
#########################################
# opções de cache e outras
# Diretório padrão onde será criado o cache do squid
coredump_dir /var/spool/squid3
# Tamanho do cache de memória varia de acordo com a capacidade do seu # equipamento
cache_mem 128 MB
# tamanho do cache de memoria RAM usado pelo squid lembre-se quanto
# mais memoria para cache melhor # mas devemos respeitar os limites do
# hardware
cache_dir ufs /var/spool/squid3 5120 64 64
# diretório e quantidades de subdiretórios do squid
maximum_object_size_in_memory 64 KB
maximum_object_size 700 KB
minimum_object_size 0 kB
# tamanhos máximo e mínimo de objetos no cache do squid
# limite minimo de ocupação do cache
cache_swap_low 85
# limite maximo de ocupação do cache
cache_swap_high 95
# opções diversas sobre refresh em outros protocolos explicarei em outra oportunidade
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
# definições da rede na qual o servidor proxy ira trabalhar
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
# Log de acesso a paginas
access_log /var/log/squid3/access.log
#Diretório de Paginas de erros
error_directory /usr/share/squid3/errors/Portuguese
# você pode personalizar as sua paginas de erro sempre uma ótima opção
#Portas consideradas seguras pelo servidor proxy
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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
################## ACLS Autenticação ##################
acl usuarios proxy_auth REQUIRED
acl usuarios proxy_auth "/etc/squid3/passwd"
acl usuarios_full proxy_auth "/etc/squid3/full"
acl usuarios_diretoria proxy_auth "/etc/squid3/diretoria"
acl usuarios_suporte proxy_auth "/etc/squid3/suporte"
acl usuarios_operacional proxy_auth "/etc/squid3/operacional"
acl usuarios_adm proxy_auth "/etc/squid3/administracao"
################ Fim ###############################
######### Regras para controle do acesso dos grupos ############
# blacklist
acl sexo_regex url_regex -i "/etc/squid3/listas/sexo_regex"
acl extensoes urlpath_regex -i "/etc/squid3/listas/extensoes"
acl redes_sociais_regex url_regex -i "/etc/squid3/listas/redes_sociais_regex"
acl stream_regex url_regex -i "/etc/squid3/listas/stream_regex"
acl sexo dstdomain "/etc/squid3/listas/sexo"
acl redes_sociais dstdomain "/etc/squid3/listas/redes_sociais"
acl diversos dstdomain "/etc/squid3/listas/diversos"
acl stream dstdomain "/etc/squid3/listas/stream"
# Fim Black list
############### FIM ###########################
acl CONNECT method CONNECT
acl lan src 192.168.101.0/24
# acls Básicas do squid
# aqui vai uma dica muito importante a ordem das ACLs é fundamental uma
#vez que o squid interpreta as ACLs de cima para baixo ou seja se a anterior #bloqueia um coisa não adianta embaixo libera-la que ela ainda estará #bloqueada.
# ACLs que criam os grupos e níveis de acesso de usuários autenticados na # rede
http_access allow usuarios_full !sexo !sexo_regex
http_access allow usuarios_diretoria !sexo !extensoes
http_access allow usuarios_suporte !sexo !sexo_regex
http_access allow usuarios_operacional !sexo !sexo_regex !extensoes !redes_sociais !redes_sociais_regex !stream !stream_regex
http_access allow usuarios_adm !sexo !sexo_regex !extensoes !stream !stream_regex
##################### FIM ######################
http_access allow manager localhost
http_access allow localhost
http_access deny CONNECT !SSL_ports
http_access deny !Safe_ports
http_access deny manager
# A ACL abaixo é muito importante pois ela nega o acesso a quem não se enquadrar na condições
# anteriores ela é muito importante quando o assunto é segurança. explicarei o
# porque depois
http_access deny all
#################### Fim do arquivo ###################
Com este arquivo, temos um Proxy Squid com autenticação NCSA e níveis de acessos diferentes.
Uma para Cada área da empresa. Nos próximos posts, irei ensinar como integrar a autenticação do squid com o AD e com o MYsql ou o MariaDB.
Agora é somente autenticar e testar os usuários. Como ensinado nos posts anteriores a verificar os níveis de acesso.
Desde já agradeço e peço qualquer duvida ou comentário e só comentar aqui que eu ajudarei
o mais rápido possível.