Neste artigo vou mostrar como bloquear usuários que acessam a Internet através de compartilhamento via iptables, fazer com que estes usuários bloqueados recebam uma página de aviso sobre o bloqueio. Isto ajudará muito a provedores de acesso a Internet a rádio que sentem a necessidade de bloquear usuários com pendências.
Criando um IP virtual para reposta local do subdomínio
Todo subdomínio, bem como domínio, somente funciona se houver um IP
atribuído a ele.
Primeiramente precisamos criar um IP virtual para nossa placa de rede
para que o subdomínio responda em nossa rede local. No meu caso criei o
IP virtual 192.168.255.1.
Você deverá criar o seu IP virtual de acordo com a classe IP que você
utiliza (exemplo: 10.0.0.1, 100.0.0.1).
Para isso vá até a pasta /etc/sysconfig/network-scripts:
# cd /etc/sysconfig/network-scripts
Localize o arquivo ifcfg-ethX da sua interface de rede local e faça uma
cópia deste arquivo com o nome "ifcfg-ethX:255"
# cp ifcfg-ethX ifcfg-ethX:255
Este arquivo é responsável pelo funcionamento da sua interface de rede
e é através dele que nós criaremos uma interface virtual para que nosso
subdomínio funcione.
Não esqueça que "X" se refere ao número da sua interface de rede local
(exemplo: eth0, eth1).
Agora precisamos editar o arquivo que criamos. Abra-o com seu editor de
textos predileto e apague todas a linhas do arquivo, exceto essas:
#IPADDR="192.168.255.1" # número IP VIRTUAL
#NETMASK="255.255.255.252" # Mascara de subrede
[1] Comentário enviado por parad em 16/05/2005 - 15:39h
Nélio, como posso programar o sistema para que o acesso a internet seja encerrado após um período?
Tipo o sistema após 2 horas encerra o acesso a internet e o usuário tera que se logar novamente.
[3] Comentário enviado por agk em 16/05/2005 - 19:13h
Bacana o artigo, nos abre diversas possibilidades quanto ao bloqueio de acessos. Mas acredito que só bloquear a porta 80 não seja o suficiente, a não ser que as demais já estejam previamente bloqueadas. Não sei se todos os provedores de internet a rádio fazem, mas aqui na minha cidade eles bloqueiam tudo, você não consegue fazer nada, apenas acesso a páginas, e-mail e msn. Se for para ter internet assim eu prefiro discada.
[4] Comentário enviado por alissonline em 16/05/2005 - 21:36h
Legal! Estou mesmo precisando usar no meu pequeno provedor...
mas Uso Slack e num encontrei a o diretorio sysconfig... como faço pra encontrar o arquivo?
[6] Comentário enviado por infocampi em 17/05/2005 - 21:02h
Complementando o artigo e o comentário do nosso amigo AGK pode usar o seguinte script para bloquear por completo o usurário:
# iptables -A FORWARD -p all -s IPDOCLIENTE -j DROP
# iptables -A INPUT -p all -s IPDOCLIENTE -j DROP
# iptables -A OUTPUT -p all -s IPDOCLIENTE -j DROP
[8] Comentário enviado por HaCkErX em 19/05/2005 - 11:42h
Muito bom esse artigo, mas eu queria saber se você poderia me passar como que coloco uma autenticação no meu sistema via web, sendo, todo cliente para acesar a rede ou internet terá que autenticar na página.
[10] Comentário enviado por Bique em 22/11/2005 - 09:10h
Bom esse seu artigo...E por isso que o mundo livre continua BUE DE FIXE...Será possivel responder aos users com um banner de proibição?Um abrço de Moçambique.
[11] Comentário enviado por enioha em 03/02/2006 - 12:23h
Tenho uma rede interna. configurado um compartilhamento de internet junto com um PDC(Samba). Quero apenas que o usuario do ip 192.168.0.10 acesse os seus e-mail atravez de outlook(portas 110 e 25) e não consiga navegar pelo browser.. Como aplicar isto em uma regra do iptables para que funcione sem usar o Squid???
[12] Comentário enviado por infocampi em 03/02/2006 - 18:13h
Você poderá bloquear esse usuário no squid acrescentando as seguintes regras em seu arquivo de configuração do squid:
#acl ips_bloqueados src "/etc/squid/ips_bloqueados.txt
#http_access deny ips_bloqueados
Você deverá criar o arquivo "ip_bloqueados.txt", onde você colocará o ip do usuário que você quer que não tenha acesso a web.
Fazendo desta forma você bloqueia o acesso deste user na net, mas o deixa com acesso aos outros serviços do server.
[13] Comentário enviado por robertochaves em 16/03/2006 - 13:49h
Comentário enviado por Roberto/Fortaleza-ce 16/03/2006
Tenho uma rede interna. E o servidor WEB e SAMBA. Quero apenas que tres máquina acesse a internet. Como aplicar isto usando o Squid? Tenho que colocar IP fixo em todas as minhas máquinas. E como aplicar isto em uma regra que funcione sem usar o Squid?
[14] Comentário enviado por MASTERGTx em 08/05/2006 - 10:05h
Ele não quer bloquear o cliente ele apenas quer rediorecionar o cliente para uma página informando que ele está em débito com o provedor, agora se vc bloquear todo o acesso dele a net ele também não irá ver aviso algum, para resolver isso na minha solução eu uso esta regra que impede qualquer navegação, msn ou algo use a net, ele ficará sempre preso ao gateway vendo o aviso em caso de abrir páginas:
redireciona o ip sempre para uma porta virtual que fiz
iptables -A PREROUTING -t nat -i eth3 -s IP -p tcp --dport 80 -j DNAT --to IP:81
#Estou limitando o cliente apenas a uma navegação dentro do servidor gateway
iptables -A FORWARD -s IP -j ACCEPT
iptables -A FORWARD -d IP -j ACCEPT
#Conf dentro de /etc/apache/httpd.conf
<VirtualHost *:81>
ServerAdmin webmaster@dominio.com.br
DocumentRoot /paginas/aviso
DirectoryIndex index.html index.php
ServerName aviso.dominio.com.br
ErrorLog /var/log/error_log
CustomLog /var/log/access_log common
</VirtualHost>
Espero ter ajudado.
Com esses parâmetros dá pra fazer um hotspot básico..
Valeu
[15] Comentário enviado por julinhoramones em 12/07/2006 - 12:14h
Em relação ao colega Eniocha, se no caso você queira liberar o tráfego para portas 25 e 110 sendo como destino e bloquear o restante é bem simples,
você pode inserir as seguintes regras na chain FORWARD.
inter_local=XXX
ip_cliente=ZZZ.ZZZ.ZZZ.ZZZ
onde ZZZ.ZZZ.ZZZ.ZZZ é o IP do cliente que você quer liberar o repasse de pacotes para as portas destinatárias 25 e 110.
onde XXX é sua interface de rede local, por ex.: eth0, eth1, eth2........
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $inter_local -m multiport -s $ip_cliente -p tcp --dport ! 25,110 -j DROP
iptables -A FOWARD -i $inter_local -s 192.168.0.0/24 -j ACCEPT
[16] Comentário enviado por cytron em 08/01/2007 - 15:30h
Este artigo está meio parado desde o ano passado mas sempre dá tempo de comentar... hehehe
No meu ver, para bloqueio de usuário não é muito ideal, apesar de funcionar (incluindo a regra de iptables do infocampi), mas desde artigo dá para tivar muito mais proveito para a criação de subdomínios, regras para impedir acesso a certos subdomínios, tipo... o cliente não pode acessar o domínio do sistema de administração de clientes, seria uma segurança em tanto, ao invés de apenas senhas.
E ainda dá para sacar facilmente como dar subdomínios para os clientes.