Usando apenas IPtables para bloquear tudo e liberar um domínio - Sistema de Acesso Quiosque

Publicado por Alex Rocha em 04/12/2013

[ Hits: 29.374 ]

 


Usando apenas IPtables para bloquear tudo e liberar um domínio - Sistema de Acesso Quiosque



Quiosque funcionando: consegui usando o Debian 7.2. Bloqueia todos os sites da Internet e só acessa um domínio.

Passos

1. Configurar o Firewall:

Arquivo firewall.sh, e dê permissão de execução:

sudo chmod a+x firewall.sh

Salvei em /home/firewall.sh.

Conteúdo do arquivo:

#!/bin/bash

# Apagando todas as regras

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Mudando a politica - Começa bloqueando tudo
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Libera conexões pre-estabelecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Liberar HTTPS - aqui você coloca o IP do domínio
iptables -A OUTPUT -p tcp -d xx.xx.xx.xx --dport 443 -m state --state NEW -j ACCEPT

# Liberar HTTP - aqui você coloca o IP do domínio
iptables -A OUTPUT -p tcp -d xx.xx.xx.xx --dport 80 -m state --state NEW -j ACCEPT

# Liberar DNS
iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

#Liberar DHCP - na minha rede interna usa DHCP
iptables -A OUTPUT -p tcp --dport 67 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -m state --state NEW -j ACCEPT

2. Deixar configurado para quando iniciar a máquina executar o firewall.sh.

Edite:

sudo gedit /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


/home/./firewall.sh
exit 0

Inicie:

sudo /etc/init.d/rc.local start

3. Agendei para executar o script de 5 em 5 minutos no Cron (precaução minha):

Configurando o Cron:

# crontab -e

# Todos os dias de 5 em 5 minutos

*/5 * * * * /etc/init.d/rc.local start

Monitorando para ver se está sendo executado:

sudo tail -f grep CRON /var/log/syslog

4. Configurando para iniciar a máquina e abrir só o Firefox.

Edite:

sudo gedit /etc/X11/Xsession.d/99x11-common_start

Deixe assim:

# $Id: 99x11-common_start 305 2005-07-03 18:51:43Z dnusinow $

# This file is sourced by Xsession(5), not executed.

#exec $STARTUP


exec firefox javascript:%20resizeTo\(1280,1024\)

# vim:set ai et sts=2 sw=2 tw=80:

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Linux - conexão automática com a internet usando pppconfig

Obra de arte: Tux em ASCII

Recurso MSN com webcam no Linux

Corrigindo problemas para conexão Speedy no Slackware 10.2

Solução para instalação da placa wifi rtl8723be no Elementary Os Luna e Freya

  

Comentários
[1] Comentário enviado por alerocha79 em 04/12/2013 - 19:26h

Amigos e Amigas,

Após novos testes feitos cheguei a novas conclusões:

Eu estava tentando liberar um formulário que pertence a um domínio, onde o IP está lá nas regras do iptables.

Por exemplo:

dominio.br/mapas/publico/consultapublica/formulario.jsf

Na minha dica estava usando só com o IP no arquivo do iptables, mas não funcionava legal. Demorava muito para carregar o formulário.

Tentei resolver:

Passos:
1) Criei outro arquivo para liberar as regras: firewall_reset.sh

#######INICIODOARQUIVO
#!/bin/bash

# Apagando todas as regras
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# Mudando a politica - Libera tudo
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

######FIM

2)Executei este arquivo: ./firewall_reset.sh (depois de dá permissão de execução)

3)Acessei com o firefox o endereço: dominio.br/mapas/publico/consultapublica/formulario.jsf

4)Observei que o formulário carregava rápido. Mas é claro estava tudo liberado.

5) Após isso executei o arquivo firewall.sh com as regras

6) Não sei por que mas o firefox gravou em algum lugar o vínculo do IP com o formulário. O que aconteceu: consigo acessar rápido o formulário e os demais sites ou domínios externos ficaram bloqueados. Se você mandar limpar os caches, e outras limpesas do firefox perde esse vínculo.

7) Instalei um complemento no firefox que torna invisível os menus do firefox.

8)Reiniciei o computador com a configuração: sudo gedit /etc/X11/Xsession.d/99x11-common_start, e funcionou. Acessa o formulário e bloqueia os demais sites. Mas quando desligo o computador e ligo novamente volta a ficar lento o acesso ao formulário.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts