Script Firewall Iptables + compartilhar internet

Publicado por Eduardo 20/05/2005

[ Hits: 24.066 ]

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

Script de compilação do Xorg 7.2 otimizado para Slackware 64 bits (Slamd64)

iniciar squid automático

LoadbalanceFAILOVER

Copiar subdiretório presente em vários diretórios

Adicionar máquinas em lote no SAMBA


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts