Administrando Squid pelo browser, bloquear e liberar máquinas por IP, login, palavras

Este projeto tem como finalidade tornar as tarefas de administração do Squid WebProxy mais fáceis e transparentes, uma vez que nem sempre é o administrador Linux que fará a administração do servidor.

[ Hits: 69.444 ]

Por: José Rodrigues Filho em 23/04/2010


Introdução



AVISO IMPORTANTE: Estava procurando na internet um script para alteração de bloqueios e desbloqueios por site, IP, logins etc. Achei o squidadmin, desenvolvido por Juliano Biscaia, mas vi que o projeto foi descontinuado desde 02-09-2005, como informa o site:
Só não sei o motivo, pois foi ótima a ideia da criação do squidadmin e muito eficiente. Então resolvi pegar esse script e fazer algumas alterações para podermos colocá-lo em pratica novamente.

Caso gostem entre em contato para darmos continuidade ao projeto de Juliano Biscaia, adicionando mais funcionalidades.

Configurando o sudo

Ambiente que utilizo e que está em funcionamento: Ubuntu 8.04 - Hardy Heron GNU/Linux.

Edite o arquivo abaixo:

# visudo -f /etc/sudoers

Adicione essa linha no fim do arquivo:

www-data ALL=NOPASSWD:/usr/sbin/squid -k reconfigure, NOPASSWD:/usr/bin/sort

Permitindo gravação nas ACLs

Dê permissão total de escrita no arquivo das ACLs do seu Squid, no meu caso os arquivos de bloqueios estão em /etc/squid/acls/bloqueados e os liberados em /etc/squid/acls/liberados. Faça de acordo com suas configurações.

sudo chmod 777 /etc/squid/acls/bloqueados/sites
$ sudo chmod 777 /etc/squid/acls/bloqueados/ips
$ sudo chmod 777 /etc/squid/acls/bloqueados/logins
$ sudo chmod 777 /etc/squid/acls/bloqueados/palavras
$ sudo chmod 777 /etc/squid/acls/liberados/sites
$ sudo chmod 777 /etc/squid/acls/liberados/ips
$ sudo chmod 777 /etc/squid/acls/liberados/logins
$ sudo chmod 777 /etc/squid/acls/liberados/palavras


Obtendo o script PHP e configurando

Lembrando que já temos o Squid devidamente configurado e Apache2 com suporte PHP rodando perfeitamente, pois não iremos falar desses passos nesse artigo.

Download: squidadmin.tar.bz2

Descompacte o arquivo:

tar -jxvf squidadmin.tar.bz2

Copie para:

sudo cp -r squidadmin /var/www/

Entre na pasta do script:

cd /var/www/squidadmin

Agora mude de acordo com suas configurações os arquivos abaixo, localizando a linha no início do arquivo:

$local = "/etc/squid/acls/bloqueados/ips";

E alterando conforme suas configurações do squid.conf.

Por exemplo:

sudo vim bloquear_ips.php

Procure a linha:

$local = "/etc/squid/acls/bloqueados/ips";

No exemplo acima indico que o arquivo de bloqueio por IP está em /etc/squid/acls/bloqueados/ips.

Faça de acordo com suas configurações com o restante dos arquivos:

sudo vim bloquear_login.php
$ sudo vim bloquear_palavras.php
$ sudo vim bloquear_sites.php

$ sudo vim liberar_ips.php
$ sudo vim liberar_login.php
$ sudo vim liberar_palavras.php
$ sudo vim liberar_sites.php


    Próxima página

Páginas do artigo
   1. Introdução
   2. Alterando usuário e senha e script original
Outros artigos deste autor

OpenVPN - Servidor Ubuntu 10.04 LTS e Clientes Windows

Recebendo relatório do SARG via e-mail (Gmail)

CUPS + Jasmine (gerenciador de impressões e relatórios de impressão)

Administração - Controle de Acessos

FTP com autenticação LDAP

Leitura recomendada

Compilando o Squid com autenticação PAM

Squid 3 como proxy transparente + firewall Iptables

OpenBSD Proxy - Squid, SquidGuard, SquidClamAV e AdZapper

Squid 2.6 com autenticação e bloqueio de sites, downloads, Orkut, MSN, vídeos e googletalk

SQUID autenticado - Bloqueando o acesso dos usuários por grupos

  
Comentários
[1] Comentário enviado por doomk em 24/04/2010 - 15:39h

Show de bola, estava procurando uma solução desse tipo, que eu pudesse editar os menus, adicionar mais recursos de maneira fácil.

Parabéns pelo artigo.

[2] Comentário enviado por cpaynes em 25/04/2010 - 12:34h

oooopaaa...

parabens ai velhooo ... vai se de ajuda pra mta gente ...

o bom seria dar continuidade a esse projeto ...

valeww ae..

[3] Comentário enviado por dastyler em 25/04/2010 - 20:28h

Bom artigo, mas tem o webmin que faz a mesma coisa e permite facil administração tambem...basta dar um treinamento bem basico de como usar a ferramenta. Implentaie em um cliente há meses e raramente me questionam com dúvidas...

[]´s

[4] Comentário enviado por lpossamai em 25/04/2010 - 23:12h

Boa noite ! Tudo bem joservf?

Estou com um problema.

Quando digito o usuário e senha, ele loga tranquilamente.
Mas, ao clicar em SITES, ou PALAVRAS ( Para bloquear/liberar ) ele diz:

"A senha ou login digitado estao incorretos. Tente novamente."

O que acontece?

Estou usando um CENTOS 5.3 com Lighttpd
permissão na pasta está: root + 755

Abraços !

[5] Comentário enviado por joserf em 25/04/2010 - 23:39h

amigo para testar vc pode retirar das paginas essas linhas abaixo, no inicio dos arquivos , assim nao ira pedir senha.

<?php
include "valida.php";
?>

veja tbm se esta configurado certinho o caminho das acls, para nao ter problemas de um chmod 777 nos arquivos das acls

até mais.

[6] Comentário enviado por magnolinux em 26/04/2010 - 07:09h

Amigo muito bom..

Como vc mesmo disse acima, nem sempre é o administrador do servidor que faz esses bloqueios.

Uma pena que o projeto foi descontinuado.

Abraço..

[7] Comentário enviado por spartac0s em 26/04/2010 - 10:43h

Joserf blz...

Bem legal este tutorial, bem eu configurei este tutorial em meu squid no suse enterprise fiz algumas alterações de nomes de acls...
Mas o problema e que eu não estou conseguindo logar, já dei permissões nas pastas e tento logar como root aparece a seguinte mensagem.

A senha ou login digitados estão incorretos, ou então o usuário não tem permissões. Tente novamente.

Tem algum usuário especifico para logar ?

Abraço..

[8] Comentário enviado por spartac0s em 26/04/2010 - 10:45h

Joserf

Andei olhando aqui e achei o usuario e a senha: User senha 1234

Valeu, foi um vacilo meu aqui.

[9] Comentário enviado por joserf em 26/04/2010 - 10:48h

Alterando usuário e senha
Para não deixarmos qualquer pessoa alterar as configurações, criamos um simples sistema de login, então mude de acordo com suas configurações, por padrão eu deixei usuário "user" e senha "1234".

Edite o arquivo:

$ sudo vim valida_login.php

Altere a linha 17 colocando seu usuário e senha para ter acesso.

[10] Comentário enviado por silent-man em 26/04/2010 - 14:33h

Eis uma versão mais "atual"

http://www.grupoponte.com.br/squidadmin

[]s

[11] Comentário enviado por brunocontin em 26/04/2010 - 15:03h

show de bola meu brother, oque vc usou para mudar o script?

[12] Comentário enviado por plague70 em 26/04/2010 - 15:19h

onde se encontra os arquivos pois codigolivre.org.br so da erro de pagina?????




[13] Comentário enviado por tutu_bh em 26/04/2010 - 16:44h

Boa Tarde joserf

Gostei do seu trabalho com o squid, e fiz uma alteracao com o pessoal aqui do desenv.. sou da area de ADM Rede e nao sei PHP entao qualquer coisa que nao tenha ficado boa criticas sao bem vidas.

O que fiz foi um PHP que adiciona o usuario e senha no squid nao precisando de adicionar fazer na unha.

se quiser que poste por favor me da um toque ...

[14] Comentário enviado por joserf em 26/04/2010 - 18:46h

opa !!! posta ai pra gente ver amigo, estou no aguardo.

[15] Comentário enviado por rndrama em 26/04/2010 - 19:13h

Muito bom cara!!! Agora tem como restartar o squid via php? Já usei a função exec para conseguir capturar os mac dos clientes num preenchimento de formulário, mas nunca conseguir fazer o squid ou o dhcp ser reiniciado via php. Alguém já conseguiu?


[16] Comentário enviado por jhugor em 26/04/2010 - 21:39h

otimas dicas e ideias! parabens! espero poder usar em breve e poder contribuir tambem!

[17] Comentário enviado por joserf em 27/04/2010 - 01:27h

estou trabalhando e fazendo um curso, mas no fim de semana posso fazer esse esqueminha de reiniciar o squid sim :)

[18] Comentário enviado por silent-man em 27/04/2010 - 11:02h

rndrama,

para restartar qualquer serviço você deve usar o mesmo raciocionio usado aqui no sudoers

ex:
www-data ALL=NOPASSWD:/etc/init.d/squid

[19] Comentário enviado por rndrama em 27/04/2010 - 13:53h

Ok joserf, vlw pela força.

silent-man, obrigado pelo apoio, mas esse raciocínio não serviu para arquivos php, fiz um teste e não funfou.

[20] Comentário enviado por silent-man em 27/04/2010 - 15:06h

rndrama

qual a distro?

ultilizo isso em debian, ubuntu-server, centos.

Apenas no centos os parametros são diferentes

[21] Comentário enviado por rndrama em 27/04/2010 - 15:45h

Foi mal cara, nem dei conta, fiz o teste no script antigo, pensando que tinha atualizado, usando a função exec, foi confusão minha.
To rodando no fedora rei, talvez seja merda que eu fiz aqui, coloquei da seguinte forma com a função exec:

<?php

exec("service squid restart", $out);

echo "$out[0]<br>";

echo "Squid restartando!!!!!!!!!!";

?>

Saída:
Stopping squid: [FAILED]
Squid restartando!!!!!!!!!!

Mas como ficaria no script php esse comando: www-data ALL=NOPASSWD:/etc/init.d/squid?
Vlw pela ajuda.




[22] Comentário enviado por silent-man em 27/04/2010 - 15:53h

no php

<?php

system('sudo /etc/init.d/squid restart');

?>

Não entendi isso:

Mas como ficaria no script php esse comando: www-data ALL=NOPASSWD:/etc/init.d/squid?


Essa entrada www-data ALL=NOPASSWD:/etc/init.d/squid deve ficar no arquivo /etc/sudoers

Testei agora aqui em um fedora 12 e funfou normal

[23] Comentário enviado por rndrama em 28/04/2010 - 16:00h

Vlw silent-man, funfou legal.
Obrigado.

[24] Comentário enviado por agente 47 em 28/04/2010 - 17:59h

Otimo Artigo!

Mas não estou conseguindo fazer o restart, inseri o comando www-data ALL=NOPASSWD:/etc/init.d/squid em /etc/sudoers

e o scritp deixei assim

$local = "/etc/squid/regras/proibido/sites_proibidos";
if(count($_POST) > 0)
{
$arquivo = fopen("$local", "w+");
fwrite($arquivo, $_POST['arquivo']);
fclose($arquivo);
exec ("sudo /usr/bin/sort $local -o $local");
exec ("sudo /etc/init.d/squid reload");

Minha distribuição é o Centos 5.3, alguem pode me ajudar !!!!

[25] Comentário enviado por joserf em 28/04/2010 - 19:48h

galera alguem posta ai certinho o esquema em php com um botaozinho bacana para reiniciar o squid bem explicadinho pra galera.

[26] Comentário enviado por tutu_bh em 28/04/2010 - 21:06h

agente 47 confere se no seu usuario nao é www pois muda conforme for a distro.

debian = www-data
fedora = www / apache

enfim.... amanha vou postar a parte de adicionar usuario que fiz e colocar um botao de start stop e reload do squid....

abraço a todos...

OBS: poderiamos ter uma Distro do VOL para gateways... temos muitas e ate mesmo participantes do site sao coder's de algumas... mas ta ai a ideia...

[27] Comentário enviado por manoserpa em 30/04/2010 - 09:18h

Muito Joserf!

Valeu.

[28] Comentário enviado por berdam em 01/05/2010 - 14:41h

Olá, estou com um problema curioso, o botão de alterar presente em cada página para salvar as alterações não aparece, será que estou fazendo alguma coisa de errado.

Se puder me ajudar eu agradeço, não entendo muito de php.

[29] Comentário enviado por joserf em 02/05/2010 - 12:21h

muito estranho amigo berdam , é uma pagina de internet normal, apague os arquivos e baixe o codigo de novo

[30] Comentário enviado por Agente 47 em 03/05/2010 - 15:03h

Ainda não estou conseguindo fazer o restart, inseri o comando,

apache ALL=NOPASSWD:/usr/sbin/squid -k reconfigure, NOPASSWD:/bin/sort

alterei o scritp.

$local = "/etc/squid/regras/proibido/sites_proibidos";
if(count($_POST) > 0)
{
$arquivo = fopen("$local", "w+");
fwrite($arquivo, $_POST['arquivo']);
fclose($arquivo);
exec ("sudo /bin/sort $local -o $local");
exec ("sudo /usr/sbin/squid -k reconfigure");

Ele altera a Acl sites_proibidos, mas não da o squid -k reconfigure, já fiz varios testes e nada,
alguem teve esse mesmo problema ?

Squid esta rodando no Cento 5.3.

[31] Comentário enviado por onslaught.ieu em 03/05/2010 - 18:38h

ola, funcionou abertura da pagina,clico no que quero alterar mas nao salva o arquivo: ocorreu no bloqueio de ips, sera que falta comando salvar ou algo do genero.

parabens, foi de grande ajuda, pois nao e complexo quanto o wenmin.


[32] Comentário enviado por onslaught.ieu em 03/05/2010 - 18:41h

ah sim estou usando debian 5.0.4 e nao to conseguindo instlar o apache normal tbm se alguem puder ajudar!!!

[33] Comentário enviado por red_slack em 15/06/2010 - 13:59h

não estou conseguindo colocar o comando:
www-data ALL=NOPASSWD:/usr/sbin/squid -k reconfigure, NOPASSWD:/usr/bin/sort
esou no Debian 5.0.4 e não tem o /etc/sudoers, no Dedian onde fica isso? por favor.

Outro detalhe não ta fanzendo o bloqueio por IP, crieio o arquivo "ips" no /etc/squid/acls/bloqueados/, dei permissão chmod 777 /etc/squid/alcs/bloqueados/ips, vou no 192.168.10.250/squidadmin colocao os ips, salva normal, vou no arquivo ips e estão, deu um squid -k reconfigure e não faz o proqueio, o bloqueio por sites esta funcionado que colocar agora por IP, aguardo a colaboração de vocÊs.


Abraços e bom jogo para nós
Brasil 6 x 0 Coreia do Norte

[34] Comentário enviado por silent-man em 15/07/2010 - 16:02h

squidadmin v2

http://codigolivre.org.br/projects/squidadmin-v2/

Uma versão demo online:

http://www.grupoponte.com.br/squidadmin

[35] Comentário enviado por joserf em 16/07/2010 - 00:10h

Obrigado pelo link silent-man, eu ja fiz umas modificações nesse meu artigo logo irei postar aqui, vamos esperar a versao para download pois ainda nao esta disponivel no site do grupoponte

um abraço.


VIVA A LIBERDADE !!!

[36] Comentário enviado por silent-man em 19/07/2010 - 10:37h

É isso ai joserf, ainda não está disponível para download porque tinha dado um tempo no desenvolvimento dele. Estou criando um pacote .deb e outro .rpm para a comunidade e em breve estará disponível.

A versão demo ainda está no ar para quem quiser testar.

[]s

[37] Comentário enviado por leandrod_86 em 27/07/2010 - 11:25h

Bom dia,

gostaria de ajuda, pois no meu caso está dando o seguinte erro. quando coloco no browser = http://192.168.1.xxx/squidadmin">http://192.168.1.xxx/squidadmin

ele me volta uma opção para download:

Voce selecionou abrir:

Tipo: application/x-httpd-php
Site: http://192.168.1.xxx

estou usando exatamente a mesma configuração de cima no ubuntu-server 9.10.

tenho o sarg e o mrtg funcionando perfeitamente.

[38] Comentário enviado por joserf em 27/07/2010 - 19:17h

amigo vc esta com php instalado no server ?

[39] Comentário enviado por leandrod_86 em 28/07/2010 - 11:06h

sim php 5, com todos os pacotes.

[40] Comentário enviado por silent-man em 28/07/2010 - 12:04h

leandrod_86

Faz um teste simples ai.

cria uma página php com o seguinte conteúdo.

<?php
phpinfo();
?>

coloca esta página em seu diretório root do apache ex: /var/www/

tenta acessá-la.

http://192.168.1.xxx/pagina.php

veja o que retorna.

[41] Comentário enviado por leandrod_86 em 28/07/2010 - 15:17h

Resolvido o problema, realmente meu php 5 tava com bug. agora tá indo que eh um doce.

aé outra observação, no arquivo referente ao site(bloqueado e liberado), estão com erro, ele procura um arquivo de nome dominio.


Valeu a ajuda.

[42] Comentário enviado por joserf em 28/07/2010 - 17:41h

vc tem que criar uma regra com uma acl de de nome "dominio" no seu squid.conf se seguir o tutorial é em

/etc/squid/acls/bloqueados/dominios

[43] Comentário enviado por setor5hc em 11/08/2010 - 16:15h

parceiro, seu topico é do caralho...

fiz tudo como vc me pediu manin, porem estou com um problema...

uso o ubuntu, toda vez que eu jogo o ip da maquina server ( http://10.10.10.102/squidadmin ) ele me retorna um download pra fazer.... sabe me dizer se falta alguma coisa?


[44] Comentário enviado por joserf em 12/08/2010 - 22:21h

da uma olhada no seu servidor cara ve se ta o php certinho instalado pode ser isso como o de nosso amigo ai logo acima.


Ubuntu + Apache2 + MySQL + PHP5
$ sudo apt-get install apache2 mysql-server-5.1 php5 php5-mysql


abraço

[45] Comentário enviado por leandrod_86 em 08/10/2010 - 09:31h

Ae Galera blz, olha só, estou com problema no botão de alterar, ele não está executando o squid -k reconfigure. só isso.

Meu /etc/sudoers está assim:
############################
Defaults env_reset

root ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
www-data ALL=NOPASSWD:/usr/sbin/squid -k reconfigure, NOPASSWD:/usr/bin/sort
############################

alguma ideia?

[46] Comentário enviado por valdinei.campos em 25/11/2010 - 15:11h

Para funcionar nas distibuição do Centos é necessario comentar a seguinte linha no arquivo sudoers

#Defaults requiretty

[47] Comentário enviado por leandrosoaresluz em 01/03/2011 - 12:58h

tutu_bh

tem como vc postar o PHP com criação de usuario que vc comentou acima? abraços

[48] Comentário enviado por foderation em 05/03/2011 - 20:46h

funcionou perfeitamente! excelente artigo..

[49] Comentário enviado por brunotec em 19/04/2011 - 15:26h

@ silent-man

Obrigado pelo link primeiramente cara, mas vc tem novidades sobre o squidadmin2?? pois o demo online dele é show de bola cara!

@ joserf

Muito Bom seu artigo cara, inclusive estarei utilizando o squidadmin em um projeto meu lá da facu.

um abraço.

[50] Comentário enviado por silent-man em 28/04/2011 - 11:21h

@ brunotec

entre em contato comigo que envio para você o mesmo que está como demo.

gleison.r2@gmail.com

[]s

[51] Comentário enviado por franklincsilva em 23/02/2012 - 10:16h

Show de bola mesmo...

já implementando o squidadmin.

Pode me passar o squidadmin v2?

vamos dar sim continuidade no projeto acredito que ele pode ser implementado junto com o iptables futuramente.

Abraço.


[53] Comentário enviado por rodrigokk em 28/05/2012 - 11:31h

tutorial muito bom, seria interessante acrescentar bloqueios por grupo de usuário, colocar gráficos de uso de banda, relatório de acesso por usuários, que vcs acham, alguém não implementa essa funções ai? Vlw

[54] Comentário enviado por phrich em 28/08/2012 - 12:34h

Não sou muito fã de realizar as tarefas por interfaces gráficas, todavia para quem gosta está de parabéns!

Bom acho que você poderia resumir alguns comandos, por exemplo:

$ sudo chmod 777 /etc/squid/acls/bloqueados/sites
$ sudo chmod 777 /etc/squid/acls/bloqueados/ips
$ sudo chmod 777 /etc/squid/acls/bloqueados/logins
$ sudo chmod 777 /etc/squid/acls/bloqueados/palavras
$ sudo chmod 777 /etc/squid/acls/liberados/sites
$ sudo chmod 777 /etc/squid/acls/liberados/ips
$ sudo chmod 777 /etc/squid/acls/liberados/logins
$ sudo chmod 777 /etc/squid/acls/liberados/palavras

por

sudo chmod -R 777 /etc/squid/acls

Assim ele já realizaria a alteração recursivamente...

Outra, se vc der permissão 777, seria uma falha grave, pois como você estaria dando permissão total para os arquivos, seria muito simples baixarmos ele e editarmos, mudando assim a política de acesso não acha?

Seria melhor dar as permissões para www-data e squid apenas...

[55] Comentário enviado por carlosaugustini em 24/04/2014 - 18:57h

Um painelzinho bacana feito há tempos e eu aqui sofrendo para achar um administração web (já conhecia o Webmin).... Valeu comunidade!!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts