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: 73.535 ]

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


Configuração do Squid



O script é baseado numa distribuição Conectiva Linux 10, com o Squid atualizado (2.5.STABLE9) pelo apt-get.

Veja a versão do seu Squid com o comando:

$ squid -v

Se você tiver tudo nas mãos, então vamos meter a mão na massa.

1. Dentro da pasta /etc/squid/, crie os seguintes arquivos (sem extensão):

acesso_total
acesso_restrito
bloqueado
liberado
download

2. Coloque as linhas abaixo nas ACLs do squid.conf sem alterar sua ordem:

############# DECLARANDO AS ACLs #############

# PCs com acesso total
acl acesso_total src "/etc/squid/acesso_total"

# PCs com acesso restrito
acl acesso_restrito src "/etc/squid/acesso_restrito"

# Lista de extensões bloqueadas para download (.avi .exe .wmv)
acl download url_regex -i "/etc/squid/download"

# Lista para bloqueio de sites
acl bloqueado url_regex -i "/etc/squid/bloqueado"

# Lista de exceções aos bloqueios
acl liberado url_regex -i "/etc/squid/liberado"

############# ATIVANDO AS ACLs #############

http_access allow acesso_total
http_access allow liberado
http_access deny download
http_access deny bloqueado
http_access allow acesso_restrito
http_access deny all

3. Crie conteúdos de teste para os arquivos vazios, conforme o exemplo:
  • acesso_total = IPs dos clientes com acesso total ao Squid;
  • acesso_restrito = IPs dos clientes com acesso restrito;
  • bloqueado = palavras de URLs que deseja bloquear;
  • liberado = exceções à regra anterior;
  • download = extensões de arquivos que não podem ser baixados. Exemplo:

    $.exe
    $.zip
    $.iso
    $.cab

4. Dê um restart ou um reload no Squid para testar. Se ocorrer algum erro, devem ser os arquivos vazios ou preenchidos incorretamente. Confira os IPs e as extensões.

5. Se desejar dar uma melhorada no visual e nas mensagens de erro do Squid, crie arquivos HTML com mensagens referentes ao bloqueio de páginas e downloads e coloque-os dentro do diretório /usr/share/squid/errors/Portuguese/.

Depois adicione a linha abaixo ao squid.conf, na seção error_directory, para que o Squid saiba onde estão os arquivos HTML de erro:

error_directory /usr/share/squid/errors/Portuguese

Adicione as linhas abaixo no squid.conf, na seção deny_info:

deny_info download.htm download
deny_info bloqueado.htm bloqueado

No exemplo acima criei os arquivos download.html e bloqueado.html com mensagens informando sobre as restrições o Squid.

Página anterior     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

Dando uma "enfeitada" no Ubuntu com o gDesklets

Autenticação de sites com PHP e MySQL

Estamos mais "INGNORANTES"?

A verdade sobre as ACLs do Squid

O que ainda falta pra você abandonar o Windows de vez?

Leitura recomendada

Configurando Squid para liberação de messenger em horário específico, dentre outros

Squid - Configuração básica, funcional e limpa

Manual traduzido do Squid - Parte 3

Manual traduzido do Squid

DansGuardian: Filtrando o acesso a Web

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts