Cobrando com o SQUID

A muito tempo venho pesquisando e pedindo opiniões referentes a COBRAR com o SQUID e não obtinha sucesso, mas como "água mole e pedra dura, tanto bate até que fura", persisti e encontrei uma forma de poder cobrar nossos clientes de internet através deste software, exibindo mensagens de débitos em atraso e fazendo bloqueios de acesso por falta de pagamento.

[ Hits: 42.825 ]

Por: Marcos Meira em 25/01/2007


CORTE e AVISO usando as ACLs



Para que possamos mostrar ao Squid quais CLIENTES deverão ser bloqueados e quais deverão ser AVISADOS de seu débito, faremos assim:

1°:

acl corte src "/etc/squid/corte"

Aqui dentro do arquivo CORTE colocaremos o IPs dos clientes que deverão ser bloqueados por completo e que receberão a mensagem da página PG_CORTE, avisando-o que foi negado o seu acesso devido ao débito em atraso por mais de 30 dias.

2°:

acl aviso src "/etc/squid/aviso"

Já neste serão colocados os IPs dos clientes que deverão receber a mensagem da página PG_AVISO, que neste caso, ele receberá o aviso a cada uma hora durante o período de um minuto.

3°:

acl tempo time "/etc/squid/tempo"

Por último, no arquivo TEMPO, mostraremos o intervalo de tempo que o cliente receberá as mensagens de aviso. Dentro deste arquivo deverão existir os comandos de início e fim do aviso, ex:

10:00-10:00

No exemplo acima o cliente será bloqueado exatamente às 10 horas durante 1 minuto, assim que o horário for 10:01, ele voltará a ter total acesso novamente.

Bom, agora é que vem parte "CHATA", para o cliente é claro. No arquivo "tempo" você poderá colocar vários horários de bloqueios para que o mesmo seja avisado do seu Débito em atraso durante o dia todo. Ficando assim:

00:00-00:00
01:00-01:00
02:00-02:00
03:00-03:00
04:00-04:00
05:00-05:00
06:00-06:00
07:00-07:00
08:00-08:00
09:00-09:00
10:00-10:00
11:00-11:00
12:00-12:00
13:00-13:00
14:00-14:00
15:00-15:00
16:00-16:00
17:00-17:00
18:00-18:00
19:00-19:00
20:00-20:00
21:00-21:00
22:00-22:00
23:00-23:00

Neste caso o cliente será avisado a cada 1 hora durante o período de 1 minuto, você pode mudar de acordo com sua vontade.

Não se esqueça de criar os arquivos dentro do diretório /etc/squid/, no meu caso uso o PICO. Ex:

# pico /etc/squid/"corte, aviso, tempo"

Agora só falta na área de http_access você definir as permissões dos arquivos. Ex:

http_access deny corte
http_access deny aviso tempo

Bom, agora é só salvar seu arquivo squid.conf e reiniciar o Squid. Para fazer teste, coloque seu IP dentro dos arquivos CORTE ou AVISO para ver e ficou tudo OK.

Página anterior     Próxima página

Páginas do artigo
   1. Criando páginas de AVISO e CORTE
   2. CORTE e AVISO usando as ACLs
   3. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Shell Script para WEB

Backup automático em Shell Script

Introdução ao Shell Script

Linguagem Lua - Introdução ao Aprendizado da Linguagem

Como matar um processo - kill, killall, pkill e xkill

  
Comentários
[1] Comentário enviado por leoberbert em 25/01/2007 - 13:11h

Amigo você concorda comigo na seguinte forma:

Se vc tiver IP fixo para seus Clientes Isso com certeza vai funcionar, mais e se pro acaso alguem alterar o IP? Na minha opnião vc deveria fazer assim:

acl corte arp "/etc/squid/corte" e dentro de cada uma colocar o endereço mac de cada um deles para que fique mais seguro. Visto que pelo que entendi você pegaria um determinado link e distribuiria entre outras pessoas...

Abração..

Léo!!!

[2] Comentário enviado por fabio em 25/01/2007 - 13:52h

Se for acesso autenticado com IP dinâmico, dá pra criar um script que pegue a relação de usuários x IP do radius e que monte o arquivo de corte dinamicamente.

[]'s

[3] Comentário enviado por coffani em 25/01/2007 - 13:57h

Concordo com o amigo leoberbert e tb com o fabio, mas parabéns o artibo ficou muito bom...

[4] Comentário enviado por DondaJr em 25/01/2007 - 15:09h

Achei interessante a ideia, gostei mesmo do artigo parabens pelo artigo e pela perceverança.

Abraços

[5] Comentário enviado por oxroll em 25/01/2007 - 17:38h

Caros colegas, bom, gostei da ideia do amigo LEO, mas é por q no meu caso eu tenho controle de IP x MAC com o IPTABLES, assim se o cliente mudar o IP, ele não navega de forma nenhuma. Mas a idéia é boa!

[6] Comentário enviado por Druide em 26/01/2007 - 10:14h

A solução pode funcionar em partes, pois, como já foi falado, o cliente poderia muito bem alterar o IP dele e conseguir entrar. Mesmo no caso de utilizar o endereço MAC não é tão eficaz, pois é possível alterar a placa de rede ou até utilizar outro endereço MAC na própria rede (sim, é possível).

Creio que as duas alternativas seria fazer o acesso via um login, bloqueando o mesmo quando necessário. OU então, se não quiser ter login, pode fazer uma "lista branca" de endereços MACs, aí então seria possível bloquear por placa. Nesse caso, quando o usuário mudasse a placa de rede precisaria lhe informar para acrescentar na lista. A placa de rede muito comum queimar, esses tempos numa empresa que presto consultoria precisei trocar cerca de 30% delas depois de uma tempestade.

[7] Comentário enviado por oxroll em 26/01/2007 - 17:07h

Bom, como já informei acima, no caso no controle de MAC X IP, não tem como o cliente acessar, aq uso o controle com o IPTABLES e seo clientes alterar o MAC, a PLACA, o IP, qual quer alteração dessas, será necessário reconfigurar o acesso dele no servidor, caso não for feito isso ele não acessa.

[8] Comentário enviado por bfmano em 26/01/2007 - 18:16h

Isso aê Marcão, ja tah dominando o squid heim!!!!
Parabéns!!!

[9] Comentário enviado por tiago_herrmann em 27/01/2007 - 00:01h

Olá,

bloquear via MAC Address só seria possível se todos os clientes do provedor estivessem no mesmo domínio de colisão, em outras palavras, eles não poderiam passar por nenhum roteador intermediário em seu caminho até o proxy. MAC address não é roteado, pois pertence a camada de enlace.

Para esta situação realmente o melhor é associar cada MAC a um IP e fazer o controle via IP no squid, ou recorrer a autenticação, que é pouco desejável pois causa alguns transtornos para o usuário.

Realmente é possivel forjar o MAC address em algumas placas, mas para este caso não há muito o que fazer além de tentar um controle via switch gerenciável, que custa relativamente caro e talvez não compense o investimento.

até.

[10] Comentário enviado por ludbaxster em 27/01/2007 - 10:29h

Real mente, essa e uma boa dica que tambem pode ser alterada para pessoas que acessam muitos sites "pula-proxy" alterando apena o texto... podemos deixar o usuario de "castigo"... por algum tempo .

Esses sites malditos por mais que a gente bloqueia via iptables ou squid mais aparecem... parece uma praga..rs..

Parabens pela dica... realmete e fantastica Marcos!

[11] Comentário enviado por dumleao em 28/01/2007 - 22:25h

E Marcão!! Mandando vê no Squid!!! ;-0 Vlw

[12] Comentário enviado por bfmano em 29/01/2007 - 14:04h

Caro tiago_herrmann,
Correto, todos deverão estar no mesmo dominio de colisão, mas poderia ser usado uma bridge ou switch transparente, ou seja, que repasse os macs, podendo o controle ser feito via MAC sem problemas.

[13] Comentário enviado por tiago_herrmann em 29/01/2007 - 17:56h

Olá bfmano,

realmente, com um bridge seria possível, porém a utilização de bridges diminui a escalabilidade da rede, uma vez que há o repasse de broadcasts.
É uma ótima opção dependendo do tamanho da rede.
Quando ao switch transparente, nunca ouvi falar. Qual seria o princípio?

até

[14] Comentário enviado por fellipe em 07/02/2007 - 14:56h

Muito bom cara, show de bola mesmo!

[15] Comentário enviado por cytron em 15/02/2007 - 20:53h

Bom o artigo não deu a solução segura definitiva, acho que não era o objetivo do oxroll, foi uma introdução à técnica, aprovita quem for esperto.

Eu uso pppoe + radius, com isso tenho que fazer um script para gerar a lista automaticamente...

Só que fui além disso, periodicamente dou recados aos meus clientes usando popups ou janelas flutuantes em javascript. Existem muitas possibilidades.

Bom artigo oxroll!

[16] Comentário enviado por jacolinux em 19/02/2007 - 01:48h

Olá cytron voce poderia me passar alguma ideia que como seu ambiente de autenticacao de clientes e corte funciona ???w

Pois estou usando aqui o chillispot e o radius e queria implementar as paginas de corte e avisos.

Grato.

Jacó

[17] Comentário enviado por mega90 em 21/03/2007 - 17:59h

sou novato no linux e uso o cl10.. gostaria de saber em que local do squid.conf colocar as acl para corte e aviso.. coloquei no final e não bloqueou...

[18] Comentário enviado por oxroll em 23/03/2007 - 16:50h

As deny_info vc coloca logo após: http_access deny CONNECT !SSL_ports
depois, vc coloca as ACLs. E na área de http_access, vc coloca como as primeiras as: http_access deny corte e http_access deny atraso aviso.

Qualquer coisa vc me manda seu arquivo SQUID.CONF, que eu completo e te mando de volta.

FALOWWW, espero que consiga!!

[19] Comentário enviado por mega90 em 08/04/2007 - 23:08h

ainda não consegui teu email !

[20] Comentário enviado por oxroll em 10/04/2007 - 08:24h

Velho, olha meu e-mail aê: oxroll@hotmail.com

Faloww!!

[21] Comentário enviado por alex_a_souza em 13/06/2007 - 15:17h

Fiz tudo como vc descreveu aki, e não funcionou nada o squid deu pau.
Tive que comentar tudo pra voltar a funcionar.
A pagina pode ter .html, eu tava vendo as outras paginas de erro e elas não tinha a .html no final.
Vou add vc no messenger, OK!!!!

[22] Comentário enviado por adrianoturbo em 20/07/2007 - 08:28h

Bem simples bloqueia o Squid via ssh até o cliente sanar todas as dívidas seria anti-ético fazer esse tipo de coisa ,mas colocando essas regras no contrato tudo é possível.

[23] Comentário enviado por wellingtonpg em 23/02/2008 - 13:16h

Também gostei muito, aida mais das ideias de nossos amigos.
Coloquei na empresa e está sendo de granda valia, todos os inadimplentes estão nos ligando....
MUITO BOM MESMO....rs

[24] Comentário enviado por cytron em 23/02/2008 - 16:39h

Opa jacolinux!!!

Só hoje entrei no VOL, foi mal pela demora.

Meu método de autenticação é um servidor pppoe (rp-pppoe) que é o NAS, ele autentica no Radius (freeradius+MySQL). Pelo freeradius dá para especificar user bloqueado (badusers) e data de expiração, com isso desenvolvi um sisteminha de controle de clientes, pagamento de mensalidades, esse sistema coloca automaticamente a data de expiração sempre para o próximo mês, então se o cliente pagar a mensalidade eu lanço o pagamento e o sistema renova a data de expiração, com isso, se o cliente não pagar ele expira sem que eu precise fazer isso. E quando quero bloquar um user, vou no sistema e bloqueio, o sistema vai no banco de dados do radius e lança ele na tabela badusers. O freeradius já barra o user apartir daí.

Sei que eu poderia usar uma aplicação pronta como Mikrotik, ApLinux e até mesmo o SAGU.

Mas cá entre nós, não estou vivo porque é rum morrer! Estou vivo porque adoro viver, fazer as coisas. Não teria graça alguma se eu não pudesse fazer eu mesmo.

Uso Linux não porque é seguro e funcional, eu uso porque gosto de mexer nele, configurar... Linux é muito doido! hehehe

Não penso no meu provedor como um trabalho, penso como meu divertimento. É tão bom mexer em Linux. eheheh.

Pois é, fui um pouco além né? Desculpem.

Quando falo de Linux sempre empolgo. Atire a primeira pedra quem nunca vibrou ao fazer uma configuração no Linux. kkkk!!!

[25] Comentário enviado por lucianoonwave em 12/08/2008 - 21:28h

Na tentativa de fazer esses passo, deu certo da seguinte maneira:
Ele não abre a pagina de aviso ou corte que está dentro do diretorio de errors, ele abre o arquivo ERR_ACCESS_DENIED.
Ele não faz hora em hora, se eu colocar apenas uma hora ele faz, lembrando que ele abre a pagina ERR_ACCESS_DENIED sempre.
Se eu colocar varios horarios ele não faz.

o que pode ser?

[26] Comentário enviado por oxroll em 13/08/2008 - 12:34h

Olá Luciano, verifique se vc está usando corretamente as deny_info.

ex:

deny_info PG_CORTE corte
deny_info PG_AVISO aviso


lembrando que no lugar de "corte" e "aviso" deverá ter o nome das acls q vc criou. ah...e estas deverão está antes de das outras regras.


E quanto ao tempo, acho estranho o fato de funcionar somente com um determinado horário, tente copiar e colar o exemplo q fiz acima
do arquivo TEMPO. Vlw.,...qual quer dúvida, estamos aí...

[27] Comentário enviado por lucianoonwave em 17/08/2008 - 16:21h

Em relação ao horario ele está processando apena o ultimo, por exemplo 23:00-23:00 ou qualquer horario que esteja na ultima linha

[28] Comentário enviado por lucianoonwave em 01/09/2008 - 17:11h

Sem acordo com meu squid pele que vejo ta tudo ok,
primeiro escrevi a deny_info
segundo a acl dos ip
terceito a acl do tempo
quarto o http_access deny

o que pode ser? continua nao abrindo a pagina designada e o tempo tambem nao responde todos os horarios so o ultimo horario

[29] Comentário enviado por oxroll em 01/09/2008 - 17:33h

Olá Lucianoonwave!

Se desejar posso tentar te ajudar pelo msn: oxroll@hotmail.com

Vlw!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts