Controle de clientes e acessos no Squid

Esse artigo mostra como criar e usar um script no Squid prontinho para um controle de clientes, acessos e downloads.

[ Hits: 71.445 ]

Por: Djair Dutra C. Jr. em 15/02/2006


Requisitos para a aplicação do script



Desenvolvi este script na pressa e em apenas um dia deixei-o pronto. A necessidade era criar "rapidamente" uma solução amigável que fizesse o trabalho de controlar os acessos do Squid.

Já o coloquei para funcionar no cyber café do provedor onde trabalho e até agora não recebi nenhuma reclamação, mas admito que foi apenas o primeiro passo para um projeto maior. Este script ainda está cru.

Na verdade este script apenas acrescenta usuários ao Squid e permite criar uma lista de restrições para acessos e downloads. Não há nele nenhuma referência ao firewall (iptables) ou controle de banda (cbq). Com o script é possível:
  1. Adicionar clientes ao Squid;
  2. Excluir clientes.
  3. Diferenciar clientes por tipo de acesso:

    ACESSO TOTAL: Tem acesso total às páginas e não "cai" em nenhuma restrição de páginas, download ou velocidade do download.

    ACESSO RESTRITO: Tem acesso, mas passa por todas as restrições criadas pelo administrador da rede. Não acessa sites pornográficos, sites hackers, nem faz downloads de arquivos especificados pelo administrador da rede.

  4. Adicionar/excluir lista de restrições (URLs);
  5. Adicionar/excluir lista de arquivos bloqueados para download;
  6. Adicionar/excluir lista de exceções aos bloqueios.

    Se, por exemplo, você bloqueou a palavra sexo, mas deseja abrir um site de nome sexoseguro, no qual não há conteúdo pornográfico, terá problemas. Neste caso você deverá adicionar a exceção sexoseguro. Dessa forma a palavra sexo continuará bloqueada, mas quando o site for sexoseguro, o acesso será liberado. Bacana, né?!?! :-)

Como já disse anteriormente, desenvolvi este script na pressa, portanto não pensei numa solução que abrangesse todas as distribuições Linux. Na verdade todos os comandos do script estão baseados na organização dos arquivos de um Conectiva Linux 10, mas podem ser editados para adaptar o script a qualquer outra distro.

    Próxima página

Páginas do artigo
   1. Requisitos para a aplicação do script
   2. Configuração do Squid
   3. Iniciando o script
   4. Considerações finais
Outros artigos deste autor

Cópia completa do HD - cluster por cluster

Layer7 e compilação do kernel mole-mole com Conectiva 10

O dia em que o KDE me surpreendeu

Autenticação de sites com PHP e MySQL

Esqueça tudo e venha para o Linux!

Leitura recomendada

Implementação de um proxy/cache para ganho de conexão

Squid transparente com cache de arquivos + Windows Update + taxa de transferência em downloads

Compilação do Squid 3 no Debian Wheezy

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

Instalando o Squid + SquidGuard

  
Comentários
[1] Comentário enviado por metall em 15/02/2006 - 08:19h

quando vc executa o script ta com este erros...
./squid_add: line 264: unexpected EOF while looking for matching `"'
./squid_add: line 274: syntax error: unexpected end of file
Usando Conectiva 10
soh pra te reportar o problema...

Abraco.

[2] Comentário enviado por bosetti em 15/02/2006 - 08:35h

Cara, gostei do seu artigo, queria ter encontrado ele 4 meses atrás, hehe
Agora não preciso mais =p
Mas vou testar mais tarde aquele "programa" (o_O"?)que você criou, que achei muito bom!

Continua assim cara,
[]'s
Rafael Bosetti

[3] Comentário enviado por agk em 15/02/2006 - 13:59h

Parabéns, muito bom o seu artigo. É uma forma de deixar mais fácil o manuseio do squid para usuários menos experientes.

[4] Comentário enviado por laranjeira em 15/02/2006 - 20:57h

Parabens pelo artigo, tenho estudado o squid e não estou sabendo fazer um que ele bloquei download por exemplo ...poderia me mandar o arquivo que contem as extenções para bloqueio de download.. Desde ja agradeço pela atenção.
laranjeira_jr@hotmail.com

[5] Comentário enviado por malacker em 17/02/2006 - 16:50h

Depois de ver o código fonte aqui no VOL percebo qie algumas linhas apareceram quebradas e podem ocasionar erros. Corrigi este problema colocando o script no local apropriado para download:
http://www.vivaolinux.com.br/scripts/verScript.php?codigo=1731

Até logo!!!

[6] Comentário enviado por bosetti em 17/02/2006 - 16:55h

Eu ainda não peguei esse script pra testar, mas já que você disse que pode dar erros, gostaria que me passasse então!

rafaelbosetti hotmail com

[]'s
Rafael Bosetti

[7] Comentário enviado por cauan em 20/02/2006 - 12:28h

Parabéns, o script parece bem completinho. A algum tempo fiz um semelhante. Só não uso menus, é tudo direto na linha de comando.

De cara, sem testar o script as únicas coisas que recomendo são usar a função tempfile e manter um backup dos arquivos que modificar.

a função que criei para revogar as permissão de download dos usuários ficou +- assim:

del_dl () {
# Retira permissao de download do usuario
${ECHO} "removendo permissão de download do usuário: ${1}."
TEMP=`tempfile -m 0600`
# Cria lista de usuarios sem o nome do usuario em arquivo temporario
${GREP} -v ${1} ${DL_FILE} > ${TEMP}
# Faz um backup da lista atual
${CP} ${DL_FILE}{,.old}
# Sobrescreve a lista atual pela temporaria
${MV} ${TEMP} ${DL_FILE}
}

Att
Cauan C. Guimarães

[8] Comentário enviado por technoroot em 17/03/2006 - 12:32h

Tambem gostei muito do script e gostaria de receber um e-mail com as linhas corretas para evitar erros, mas ficou muito bom mesmo...

Valeu pela sua contribuição com a nossa comunidade!!!

[9] Comentário enviado por andersonunai em 19/04/2006 - 23:06h

Parabéns, Djair... ótimo artigo... Att Anderson

[10] Comentário enviado por mineiro em 01/05/2006 - 21:13h

Olá, gostei do seu script e gostaria de recebe-lo por email com as correções dos erros. Não estou sabendo bloquear downloads poderia me mandar o script que contem as extenções para bloqueio de download? Desde ja agradeço a atenção e parabens pelo artigo.
jbbs@terra.com.br

[11] Comentário enviado por eduradaelli em 26/07/2006 - 00:05h

Muito bom seu artigo.
Tive que fazer alguns ajustes para funcionar no debian, mas esta ok.
Abraços

[12] Comentário enviado por dill_tche em 23/08/2006 - 09:32h

muito bom cara, to começando a ver squid e ta me ajudando um monte.

[13] Comentário enviado por technoroot em 23/08/2006 - 09:42h

Cara gostei muito, estou tentando criar algo assim so que para rodar no browser, minha esposa programa em php, só tirando uma duvida antes de começarmos tem algo a mais que precisa fazer para o php ler este arquivo e jogar no browser?

Se puderem me dar uma dica eu agradeço muito!!!

Ate mais ver!

[14] Comentário enviado por zennh em 23/08/2006 - 10:27h

legal!!!

mas onde eu salvo esse script ???

em que pasta ?????

[15] Comentário enviado por mbcbs07 em 08/09/2006 - 18:33h

Boa dica, agora me diz uma coisa.
Pra eu colocar os ip´s, tanto de acesso_total quanto no acesso_restrito. Eu vou separar por , ou por ; ou vou ter de pular uma linha.
Aguardo retorno.

[16] Comentário enviado por uranium em 02/11/2006 - 14:39h

Olá voce tem algum script que so deixe passar internet somente aqueles ips cadastrados no dhcp?

[17] Comentário enviado por Golinelli em 06/08/2008 - 17:56h

OLa!!! Estou desenvolvendo um script parecido com o seu mas como sou iniciante em shell vai me ajudar muito esse..

Parabéns !! vc me deu boas ideias para melhorar o meu,, e tambem estou fazendo com dialog,. mas sem restricões de acesso onde vou utilizar..

Gostei do script para checar se o servidor ou determinado host esta pingando ,vou adaptar ele as minhas necessidades!!

Mais uma vez Parabéns!!

[18] Comentário enviado por morfetico em 01/04/2010 - 10:15h

Fiz um squema com apache e php que libera automaticamente palavra restrita por exemplo:
"sex" esta proibido mas sexta não pode ser proibido, coloquei no /usr/share/squid/error/Portuguese/ERROR_ACCESS_DENIED
um redirecionamento para uma pagina local com as variaveis dos endereços tanto da pequisa google quanto do endereço,
estas variaveis são analizadas e quando se for somente "sex" manda uma mensagem dizendo que não vai liberar e apareçe
um formulário para o usuário preencher se identificar e o motivo porque que a palavra deve ser liberada, este formulario
envia para o meu email e fico sabendo que alguem pediu pra liberar uma palavra que não libera de forma alguma.
Se a palavra for "sex" não libera se for "sexta" esta palavra é colocada no arquivo do squid de palavras liberadas e o cron
de minuto em minuto roda um script que verifica se houve alteração e executa o "squid -k ", pronto agora tenho sussego e
não preciso liberar manualmente palavra por palavra, isto libera a palavra em no máximo 1 minuto e não mais quando eu
abrir meu email, isto está funcionando redondinho. Fiz uma interface web com caixa de texto para eu adicionar e
excluir palavras para não ter que utilizar o putty o tempo todo, assim qualquer um pode trabalhar com segurança sem
ser o root. Tenho um problema com as caixas de texto que quando salvo envia a quebra de linha "^" essa porcaria
confunde o script que analiza a palavra e o negócio não funciona direito, ja coloquei o php pra rodar antes do2unix no
arquivo como root mas nao resolve, so estou utilizando atravéz do putty, se alguem sabe como fazer o html salvar em
um arquivo txt sem mandar "^" pro final da linha fico agradecido.

[19] Comentário enviado por eduardo_jst em 16/02/2011 - 17:12h

Alguem pode ajudar neste problema


Boa tarde, fiz a seguintes regras vendas_bloqueado (eduardo, cpd01) onde terao acesso em paginas q estao nas liberados em vendas_liberado e criei acls personalizada a cada usuario destes grupos,e apesar de serem do mesmo grupo, preciso liberar determinadas paginas a eduardo que cpd01 nao pode ter acesso e vice versa.
O problema que hora acessa, hora bloqueia as paginas que estão na liberação, se logo com eduardo primeiro acesso ok, mas ao deslogar e logar cpd01 ja bloqueia seus acessos liberados, se logar cpd01 primeiro acessa suas liberações ok, mas se deslogar e logar eduardo bloqueias suas liberações tb,

Alguem pode me dar um auxilio, pode me dizer pq esta tendo esta intermitencia? corrigir minhas regras?

fico no aguardo


#http_access allow usuarios acesso_livre

# ---- Regras de acesso por grupos
# ---- GRUPO VENDAS
acl vendas proxy_auth "/etc/squid/regras/grupos/vendas_bloqueado"
acl vendas_liberado url_regex -i "/etc/squid/regras/acessos/grupos/vendas_liberado"
http_access allow vendas_liberado
http_access deny vendas !vendas_liberado
http_access allow usuarios vendas

#***** Regras de acesso de usuarios por usuario

#----Usuario Eduardo-----#
acl eduardo proxy_auth "/etc/squid/regras/usuarios/eduardo_bloqueado"
acl eduardo_liberado url_regex -i "/etc/squid/regras/acessos/usuarios/eduardo_liberado"
http_access allow eduardo_liberado
http_access deny eduardo !eduardo_liberado
http_access allow usuarios eduardo


#----Usuario cpd01-----#
acl cpd01 proxy_auth "/etc/squid/regras/usuarios/cpd01_bloqueado"
acl cpd01_liberado url_regex -i "/etc/squid/regras/acessos/usuarios/cpd01_liberado"
http_access allow cpd01_liberado
http_access deny cpd01 !cpd01_liberado
http_access allow usuarios cpd01


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