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

Publicado por Alex Rocha em 04/12/2013

[ Hits: 21.241 ]

 


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

Rodando Apache em máquina com IP falso (rede interna)

Lucent winmodem

Conexão 3G no Ubuntu 10.04 (Lucid Lynx)

Chat do Facebook com o Kopete sem problemas

Logando conexões HTTPS e gerando logs para o Sarg

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts