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.
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.
[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..
[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!
[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.
[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
[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
[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...
[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?
[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...
[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
[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.