quinta-feira, 26 de junho de 2014

Configurando proxy Squid com autenticação com niveis de acesso parte III

Olá, postarei  hoje como criar e gerenciar grupos de usuários autenticados
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

Agora  criaremos o arquivo que contém as senhas e os usuários.  Faremos isso com o comando abaixo:

# 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

# vi /etc/squid3/listas/redes_sociais_regex
facebook
orkut
twwitter

tumblr

# vi /etc/squid3/listas/sexo
.pornobuceta.com
.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údo
Caso 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.


  





Nenhum comentário:

Postar um comentário

Olá, agradeço por seu comentário aqui é o seu espaço para publicar
suas críticas desde já agradeço.