Script Firewall Iptables + compartilhar internet

Publicado por Eduardo 20/05/2005

[ Hits: 22.996 ]

Download fwvivaolinux.sh




Criei esse script (simples) para ajudar a quem estar iniciando no iptables. Bem simples mesmo, porém muito funcional. No mais era isso.

  



Esconder código-fonte

#/bin/bash -x

#Por Eduardo (tr0p1x)
#Firewallzinho escrito em um par de minutos. Parto do presuposto que o firewall seja uma maquina usada normalmente (desktop)
#por isso o fato do estado da conexao NEW na OUTPUT. Podemos liberar somente servicos especificos, mas dae eh muito trabalho.
#Qq coisa postem ae duvidas, sugestoes, xingamentos, coisa do tipo q na medida do possivel eu respondo hehehehe.
#Nao tem linhas para LOG de conexoes e coisa do tipo.
#Compartilha internet, soh configurem certo os ips da rede interna e as interfaces de rede.

IPTABLES=/sbin/iptables

modprobe ip_conntrack
modprobe ip_tables
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe iptable_nat
modprobe ipt_LOG
modprobe ipt_REJECT

#desligando forward
echo 0 > /proc/sys/net/ipv4/ip_forward

#limpando tabela NAT
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -t nat -F PREROUTING

#limpando regras
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD

#setando polihticas
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT DROP

#impedindo alteracao de rotas
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

#prot contra responses bogus
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

#prot contra syn-flood
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#contra traceroute
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route 

#contra ip spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter


#--------INPUT--------
$IPTABLES -A INPUT -i lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state INVALID -j DROP

#--------OUTPUT-------
$IPTABLES -A OUTPUT -o lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
$IPTABLES -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP

#------FORWARD--------
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -m state --state INVALID -j DROP
$IPTABLES -A FORWARD -i eth1 -s 192.168.0.0/24 -o eth0 -j ACCEPT

#--------NAT----------
$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

#habilitando forward
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Firewall Startado com Sucesso"
exit 0

Scripts recomendados

Configurando um Domínio no BIND9 com Debian 3.1

Exibir configurações de rede

arrcomb: Gerando Arranjos e Combinações

Cadastro automatizado para DHCP, Sarg, ethers e hosts

backup rsync


  

Comentários
[1] Comentário enviado por medeiros64 em 26/04/2006 - 22:56h

fala aew cara esse script bloqueia a minha conexao de fora p/ o apache

sera q vc poderia me ajudar a fazer com q o apache funcione ???
eu uso o no-ip p/ poder utilizar um dominio.

valew cara t+ a seguinte vc esta apontando todas as regras p/ /sbin/iptables em algumas distros teria q ser direto iptables

cara show de bola esse scrept valew viu ;]

[2] Comentário enviado por tr0p1x em 28/04/2006 - 21:21h

bueno... se eu entendi a tua pergunta hehehehe :) tu quer ter acesso, via intenert, ao teu apache, correto?

bom, para isso, precisa incluir uma regra:

iptables -A INPUT -p tcp --dport 80 -i IF_EXT -j ACCEPT

se quiseres também, por exemplo, acesso ao teu SSH, mude a porta de 80 para 22. Valendo isso para qualquer serviço que tu queiras acessar da internet.

se quieres limitar os ip que terá acesso ao teu SSH a partir da internet, teria que ter uma regra semelhante a esta:

iptables -A INPUT -p tcp --dport 22 -s ip_de_onde_tu_vai_acessar -j ACCEPT

bom, espero ter ajudado. no mais era isso che...

[]´s Eduardo

[3] Comentário enviado por luizhjr em 05/03/2007 - 10:51h

Eduardo...estou começando a mexer com o iptables e gostaria de saber pq vc inseriu essas seguintes regras:
$IPTABLES -A INPUT -i lo -s 127.0.0.1/8 -d 127.0.0.1/8 -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state INVALID -j DROP
pq existe um input pro localhost???
o q esse módulo established e o related fazem???
to perguntando pq vc inseriu esses modulos pra rede 192.168.0.0/24 tb
Obrigado e desculpe o incomodo.

[4] Comentário enviado por aps167 em 17/05/2007 - 16:37h

Cara!! show de Bola!!

A tempos que estava em busca de um script assim simples, e uma coisa que destacou foi você ter dividido as regras em input, output e forward na sequência correta (ao meu ver).

Agora eu vou adapta-lo a minha realidade e só alegria.

"Vai ser bom assim lá longe"..rsrsrsrrs


Fui

[5] Comentário enviado por resende em 26/10/2007 - 15:49h

escuta tche sou leigo pacas mais mesmo assim por favor nao me ingnore pois estou determinado a
montar um firewall apartir do debian se puder me ajudar cara!! te agradeço muito mesmo

[6] Comentário enviado por schipfer em 25/03/2009 - 09:25h

vlw eu esta procurando algo assim =]

[7] Comentário enviado por milioli em 13/09/2009 - 19:55h

Muito Bom, simples e direto.
Só tenho uma dúvida. Porque colocar regras DROP se o padrão já foi setado DROP??


Contribuir com comentário