Squid - Níveis de bloqueio para usuários

Esse artigo mostra como bloquear o acesso a internet dos usuários sem autenticação e limitar usuários autenticados para acessar determinados sites, bloqueando o acesso por níveis.

[ Hits: 47.784 ]

Por: Cristiano Landsmann em 12/12/2008


Introdução



Esta dica é para mostrar como bloquear acesso a sites utilizando níveis de bloqueio, ex.:
  • Nível 1 - usuário "Admin" tem acesso total;
  • Nível 2 - usuário "Rogerio" e "Pedro" não tem permissão para acessar o www.vivaolinux.com.br;
  • Nível 3 - usuário "Rogerio" não tem permissão para acessar o www.vivaolinux.com.br e www.google.com.br, mas o usuário "Pedro" pode acessar o www.google.com.br.

Partirei do princípio que a instalação e configuração da autenticação do Squid estejam configurados, apenas colocarei as modificações feitas para funcionar o bloqueio por nível.

Para esta implementação foram usados:
  • Distro. Debian 4.0
  • Kernel v. 2.6.24-etchnhalf.1-486
  • Squid 2.6.STABLE5

Bloqueando por níveis

Trecho do arquivo squid.conf:

#Identificação da rede que tem acesso ao proxy
acl all src 0.0.0.0/0

#Regras para autenticação
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd
auth_param basic children 5
auth_param basic realm [---Bem Vindo ao XXX Internet Proxy Server---]
acl autenticados proxy_auth REQUIRED

#REGRA 1 - Arquivo "patrao", logins cadastrados para navegar no proxy
acl patrao proxy_auth "/etc/squid/patrao"

#REGRA 2 - Arquivo "usuarios", logins cadastrados para navegar no proxy
acl usuarios proxy_auth "/etc/squid/usuarios"

#REGRA 3 - Arquivo "usuarios_futebol", logins dos usuarios que não podem acessar sites de futebol
acl usuarios_futebol proxy_auth "/etc/squid/usuarios_futebol"

#REGRA 4 - Lista de Sites bloqueados para os "Usuários"
acl bloqueado_usuarios url_regex -i "/etc/squid/bloqueado_usuarios"

#REGRA 5 - Lista de Sites bloqueados para os "Usuários_Futebol"
acl bloqueado_futebol url_regex -i "/etc/squid/bloqueado_futebol"

#REGRA 5 - - Bloqueia acesso aos sites cadastrados em "bloqueado_futebol" para o grupo de usuários cadastrados "usuarios_futebol"
http_access deny bloqueado_futebol usuarios_futebol

#REGRA 4 - Bloqueia acesso aos sites cadastrados em "bloqueado_usuarios" para o grupo de usuários cadastrados "usuarios"
http_access deny bloqueado_usuarios usuarios

#REGRA 3 - Liberado acesso para o grupo cadastrados "usuarios_futebol"
http_access allow usuarios_futebol

#REGRA 2 - Liberado acesso para o grupo cadastrado "usuarios"
http_access allow usuarios

#REGRA 1 - Liberado acesso para o grupo cadastrado "patrao"
http_access allow patrao

#Liberado acesso para os usuários autenticados
http_access allow autenticados

#Bloqueia o acesso para os usuários sem autenticação
http_access deny all

Obs1.: A ordem das regras é muito importante para funcionar adequadamente.

Arquivos com os logins

Tudo liberado para estes usuários:

# vim /etc/squid/patrao

jose
pedro
admin
maria
rogerio
jardel

Usuários que terão os sites bloqueados pelo arquivo "bloqueado_usuario":

# vim /etc/squid/usuarios

maria
rogerio

Usuários que terão os sites bloqueados pelo arquivo "bloqueado_usuario e bloqueado_futebol":

# vim /etc/squid/usuarios_futebol

jardel
rogerio
pedro

Obs.: O usuário "Rogério" esta sendo bloqueado em 2 níveis.

Arquivos com os sites

# vim /etc/squid/bloqueado_usuarios

google.com.br
youtube.com.br
playboy.com.br

# vim /etc/squid/bloqueado_futebol

esporte.com.br
bolanarede.com.br

O proxy é liberado via autenticação, permite o acesso para todos os usuários cadastrados e bloqueia o acesso em 2 níveis.

Demais usuários que tentarem acessar o proxy sem autenticação serão barrados.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Balanceamento de 3 links com redundância no Linux

Balanceamento de links + redundância + acesso remoto + sites de bancos

Leitura recomendada

Manual traduzido do Squid - Parte 2

Servidor proxy (Squid)

Squid autenticando no Windows utilizando grupos do AD

Autenticando usuários do Squid em um banco de dados MySQL

ECache - O cache efetivo

  
Comentários
[1] Comentário enviado por jaimejr1987 em 12/12/2008 - 14:47h

Otimo Script, bom trabalho.

[2] Comentário enviado por cvs em 12/12/2008 - 16:13h

Só esse allow deny ultimo ai que fiquei intrigado, nunca vi isso funcionando... heheehhe
Melhor um deny all no final, não?

Valeu.

[3] Comentário enviado por info24hs em 12/12/2008 - 16:23h

hehehe... vamos arrumar...

[4] Comentário enviado por lucas.suporte em 12/12/2008 - 16:51h

Parabens pelo artigo ele é muito bom, curto e objetivo. Otimo para iniciantes.

Queria contribuir com esse otimo atigo com a seguinte dica:

para adicionar os usuarios no squid com senha.

para adicionar o usuario para autenticar seguindo o artigo faça:

adicionando o usuario lucas:
htpasswd -c /etc/squid/squid_passwd lucas

coloque a senha

adicionando o usuario convidado:
htpasswd -c /etc/squid/squid_passwd convidado
e pronto


Abraços a todos !!!

Lucas Rocha
Analista de Redes

[5] Comentário enviado por info24hs em 12/12/2008 - 16:56h

Opa! Vamos falar com a moderação e incluir sua dica no artigo.

Muito obrigado.

[6] Comentário enviado por vagnersobrinho em 12/12/2008 - 19:24h

Valeu Cara!!!

tava precisando disso mesmo

muito bom!

[7] Comentário enviado por albertoaalmeida em 14/12/2008 - 09:18h

Parabéns!

Estava a procura de um artigo igual a esse, foi de grande utilidade para mim.

Abraços.

Alberto A Almeida
www.albertoalmeida.blogspot.com

[8] Comentário enviado por lucianofsjr em 14/12/2008 - 14:35h

tenho que criar um servidor com squid pra amanha e já dou de cara com esse artigo!!
\o/

valeu cara!!

[9] Comentário enviado por calaff2 em 14/12/2008 - 22:18h

Muito bom amigo e com o complemento do Lucas ficou melhor ainda !! :) Viva o Linux

[10] Comentário enviado por zoomdigital em 14/12/2008 - 23:39h

Muito legal seu artigo cara parabéns!!

[11] Comentário enviado por Primoo em 15/12/2008 - 08:15h

funciona com Proxy Transparente?

[12] Comentário enviado por info24hs em 15/12/2008 - 08:38h

Não, vc até pode estar com o proxy transparente ativado, mas como existe a regra http_access deny all ele irá bloquear tudo que não tenha sido autenticado, com essa regra força os usuários não a mexerem nas configurações do navegador tentando burlar..

[13] Comentário enviado por edipo.magrelo em 15/12/2008 - 09:12h

Excelente artigo!!

[14] Comentário enviado por Primoo em 15/12/2008 - 09:56h

Excelente artigo!! Parabéns!

[15] Comentário enviado por di_gennaro em 28/12/2008 - 19:59h

Olá estou com uma dúvida existe algum procedimento para que dois usúario não se conectem com a mesma senha? tipo para que não haja emprestimos de senhas!

[16] Comentário enviado por info24hs em 29/12/2008 - 08:46h

Não conheço tal método...

[17] Comentário enviado por vagnersobrinho em 06/02/2009 - 12:23h

Mandou bem velho!

usei aqui onde trabalho e funcionou uma beleza!

[18] Comentário enviado por comfaa em 27/04/2009 - 09:17h

ficou bem legal,
mas estava precisando de uma dica que nao tenho
encontrado .... preciso adicionar um usuacio CONVIDADO
que seja controla por tempo .... mais ou menos assim ....
Eu determino quando tempo ele pode ficar acessando a net
tipo, de 13:00 as 14:00 horas .... quando chegar as 14:00
automaticamente o acesso dele na internet é bloqueado.

Desde já muito obrigado !!

[19] Comentário enviado por info24hs em 27/04/2009 - 10:49h

Cara é bem simples, cria outra acl com os nomes de quem quer que seja controlado por horário e restrinja com as regras abaixo... pesquisa no google que tem muita informação sobre..

acl manha time 08:00-12:00
acl tarde time 14:00-17:30
acl videos url_regex "/etc/squid/videos"

http_access deny tarde videos
http_access deny manha videos



Abraço..

[20] Comentário enviado por martinez18 em 18/05/2009 - 09:16h

Tenho uma duvida em relação ao controle de acesso:

Como faria para bloquear por IP ou Mac?
E tambem como seria mais ou menos para bloquear sites num determinado horario e libera-los apos o horaria, e se puderem ajudar como faço para saber qual usuario entrou no site, listando nome e site.

Desde já agradeço a atenção de todos.
Meu e-mail
martinez18@pop.com.br
Msn
kinho_martinez@hotmail.com

Abração

[21] Comentário enviado por info24hs em 18/05/2009 - 10:20h

Amigo,

Procure no google a página manual squid 2.7 e veja sobre "acl" a partir dai vai saber como bloquear por IP, sobre horário o post acima do seu mostra como fazer...

Abraço..

[22] Comentário enviado por manoserpa em 20/07/2009 - 20:47h

Parabéns!

[23] Comentário enviado por ferabong em 14/12/2009 - 17:30h

Nossa, gostei muito.

me esclareçam numa dúvida por favor.

estou trabalhando com um servidor proxy, e preciso adicionar mais um usuário nele, para autenticar o accesso as paginas e etc.


posso proceder desta forma que o lucas citou acima, ou devo realizar outra operação?

obrigado!

[24] Comentário enviado por info24hs em 14/12/2009 - 20:25h

Oi.. pode sim.. não esqueça de colocar os nomes dos usuários nas listas de bloqueio..

Boa sorte!

[25] Comentário enviado por murillo50 em 15/01/2010 - 07:48h

chegado pq ta dando esse erro o

FATAL: No port defined
Squid Cache (Version 2.7.STABLE3): Terminated abnormally.
CPU Usage: 0.004 seconds = 0.000 user + 0.004 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 0

[26] Comentário enviado por bpinheiro em 07/02/2012 - 20:04h

Boa Noite Cristiano.
Preciso montar um servidor linux aqui na empresa com squid e iptables.
Achei muito bacana seu artigo, acho que se encaixa bem no perfil que eu preciso, por usuário.
Deixa te fazer uma pergunta, não tenho experiência no linux, preciso instalar apenas squid e apache?

[27] Comentário enviado por diego17sg em 17/10/2012 - 18:23h

Olá AMigo
se os usuários fosse cadastrados no AD, como seria a regra?
eu usaria o proxy_auth também?

Obrigado!

[28] Comentário enviado por leo_suport em 19/09/2013 - 01:24h

Seu tutorial foi instrumento de consulta por algumas vezes, parabens por compartilhar,
e aproveitando o comentário, como criaria uma regra acl para colocar url de sites que eu nao gostaria que passasse pelo proxy, se eu quiser por exemplo colocar site de bancos, e e-mail, porque tenho tido problema, se puder me dar uma dica desde ja agradeço
sei que a ordem dessas regras sao tb o x da questao, se puder me orientar...

[29] Comentário enviado por eas2201 em 05/08/2014 - 10:45h

Parabéns pelo post muito bom!!!

Estou com um problema no meu squid, alguns sites ele bloqueia mesmo não estando na lista de bloqueados.

Alguém poderia dar uma AJUDA!?

[30] Comentário enviado por rodrigocontrib em 28/09/2014 - 11:31h

Cara, tem um detalhe que não funciona perfeitamente.
Tentei no squid3 e squid2
O problema é o seguinte, quando insiro uma entrada no squid para que ele bloqueie um grupo de usuários com uma entrada parecida com :
http_access deny bloqueado_usuários usuários
O serviço, no cliente não bloqueia diretamente o usuario, redirecionando a pagina para uma pagina de alerta padrão, o que acontece, ao menos comigo aconteceu foi uma espécie de loop de autenticação do usuário.Pedindo diversas vezes que o usuário coloque seu login e senha.
No entanto, quando configuro da maneira em que coloco
http_access deny bloqueado_usuarios
http_access allow usuarios
Tudo funciona bem, ou seja quando um usuario do grupo usuarios tenta acessar um site proibido para ele, ele instantaneamente é direcionado a uma pagina de alerta, onde o informa que o website não é desejado.
No entanto este artigo me foi de grande ajuda, e quero agradecer pelo apoio :)

[31] Comentário enviado por cainf em 15/03/2015 - 21:04h

Amigo e se eu quiser fazer ao contrario permitir que o usuario apenas acesse os sites que eu quero por exemplo site da empresa e alguns bancos o resto barra tudo

Valeu :)

[32] Comentário enviado por NewWave em 21/11/2015 - 14:58h

Indo na contramão dos comentários aqui do artigo do colega, eu não consegui entender. Certamente não é por falta de boa vontade do colega que escreveu o artigo, mas squid, na minha opinião, não é uma ferramenta intuitiva e amigável. E olha que eu não costumo quase nunca ter problemas com linhas de comando.Pelo contrário, eu prefiro muitas vezes usar uma linha de comando do que uma GUI. Só que 10 em cada 10 tutoriais de squid, só pra citar um exemplo, não dissecam a linha, comando por comando, o que trava a minha mente. Comandos como

acl all src 0.0.0.0/0

ou

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd

precisam ficar claros, palavra por palavra, para que qualquer que seja o usuário possa fazer suas próprias regras, adaptando-as a sua própria realidade. No final das contas a gente não sabe como fazer um script do zero, sem precisar pescar retalhos.
Continuo ainda na busca de um tutorial didático, que comece pelo fio da meada. Mesmo assim obrigado por contribuir com o mundo linux. Se todos entenderam, menos eu, então teu artigo pode ser considerado excelente. Destaque para o português de alto nível, o que conta demais no bom entendimento de um artigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts