IP-Tables (rc.firewall)

Firewall iptables com acesso interno

Categoria: Segurança

Software: IP-Tables

[ Hits: 30.820 ]

Por: Luiz Henrique Rapatão


Esta é configuração do meu IP-Tables. Acho ele muito seguro, mas como não tenho grandes conhecimentos com o mesmo, gostaria de algumas sugestões de como melhorá-lo.


#!/bin/bash

#limpando tabelas
iptables -F &&
iptables -X &&
iptables -t nat -F &&
iptables -t nat -X &&

#liberando acesso interno da rede
iptables -A INPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT &&
iptables -A OUTPUT -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT &&
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/255.255.255.0 -j ACCEPT &&

#liberando loopback
iptables -A INPUT -s 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
iptables -A FORWARD -s 127.0.0.1 -j ACCEPT

#compartilhando a web na rede interna
#iptables -t nat -A POSTROUTING -s 192.168.1.0/255.255.255.0 -o eth0 -j MASQUERADE &&
echo 1 > /proc/sys/net/ipv4/ip_forward &&

# Protecao contra port scanners ocultos
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -s 0.0.0.0/0 -p icmp -j DROP

# Bloqueando tracertroute
iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP

#Protecoes contra ataques
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -p tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP

#Ping da morte
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Porta Wincrash
iptables -A INPUT -p tcp --dport 5042 -j LOG --log-prefix "Serviço: Wincrash"

#Portas NetBus
iptables -A INPUT -p tcp --dport 12345 -j LOG --log-prefix "Serviço: NetBus"

#Proteção contra Syn-floods
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

#Regras de Mascaramento

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i ppp0 -j ACCEPT
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT


#Proteção Contra IP Spoofing
iptables -A INPUT -s 10.0.0.0/8 -i eth0 -j DROP
iptables -A INPUT -s 172.16.0.0/16 -i eth0 -j DROP
iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j DROP 


#Carregando iptables
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_MASQUERADE
  


Comentários
[1] Comentário enviado por lacierdias em 03/07/2004 - 10:13h

Muito bom mas praque vc coloca ""&&"" no final de algumas regras...

[2] Comentário enviado por rapatao em 03/07/2004 - 11:03h

Ë que eu fui fazendo isso aos poucos e acabou ficando assim!
Mas já estou melhorando todo ele e logo logo estarei postando uma nova versao!

[]'s

[3] Comentário enviado por tarso em 10/07/2004 - 20:47h

Para conhecer melhor sobre iptables recomendo o livro,Firewall Iptables linux mall valo R$ 26,00 muito bom.


Marconi Tarso

[4] Comentário enviado por alexandrec em 12/07/2004 - 10:10h

Pode crer! Esse livro é de primeira. Depois que o li, meu firewall ficou filé e aprendi a criar novas regras utilizando sniffers de pacotes. O conteúdo do livro te dá a idéia e resto vc faz sem traumas.
FLW..

[5] Comentário enviado por ildogojunior em 16/07/2004 - 14:24h

Este script de firewal mais o o livro me deu um ótimo conceito e criei um excelente firewall que esta funcionando em um empresa de câmbio.

[6] Comentário enviado por __FERNANDO__ em 16/07/2004 - 21:41h

Não tem problema deixar para carregar os modulos no final ?

[7] Comentário enviado por rapatao em 17/07/2004 - 00:15h

Não tem problema não. Ao menos nunca deu problema com ninguem que conheco e testou ele pra mim e muitos exemplos de iptables que vejo, carrega os modulos apenas no final.

[]'s

[8] Comentário enviado por __FERNANDO__ em 26/07/2004 - 11:10h

Eu configurei meu firewall em um arquivo na /backup/regras...eu quero passar ele para um script...como que eu faço para que ele seja inicializado no boot ?

[9] Comentário enviado por __FERNANDO__ em 26/07/2004 - 11:18h

Cara, por favor, me responde está pergunta ai acima...de como passar iniciar o script...tem que colocar em /etc/rc.local ? e coloca os comandos também.
Uma outra pergunta que acabei esquecendo...é, porque rc.firewall ? eu já vi este nome em diversos lugares...pensei que fosse um arquivo de configuração do firewall, mas não meu linux não tem este arquivo, utilizo o conectiva 9 e 10.

[10] Comentário enviado por rapatao em 27/07/2004 - 00:20h

Deixa eu ver se entendi, vc criou um shell-script na pasta /backup com o nome regras, bom para inicia-lo, basta editar o arquivo /etc/rc.d/rc.local(é aqui no slackware, nao sei no conectiva, mas deve ser) e adicionar isto: /backup/regras, lembre-se de dar modo +x para o arquivo regras (chmod +x /backup/regras)
Quato a colocar o nome rc.firewall é que eu coloco ele nesta pasta: /etc/rc.d/ e no slackware tudo que tem modo +x é executado, e como tudo lá comeca com "rc." resolvi colocar neste script/firewall tb!.

Espero ter sido claro, qq coisa entre em contato por icq: 59115655 ou msn: luiz_st@msn.com

[]'s

[11] Comentário enviado por __FERNANDO__ em 27/07/2004 - 08:52h

Ótimo...foi clarissicimo..hehehe...valeu mano.

Fernando.

[12] Comentário enviado por removido em 26/03/2005 - 23:37h

Amigo,

Há algumas falhas no seu script:

FALHA 1:
# Porta Wincrash
iptables -A INPUT -p tcp --dport 5042 -j LOG --log-prefix "Serviço: Wincrash"

#Portas NetBus
iptables -A INPUT -p tcp --dport 12345 -j LOG --log-prefix "Serviço: NetBus"

1º - Estas linhas bloqueiam estes trojans no servidor, enquanto estes só podem ser executados nas estações com Windows. O CHAIn deveria ser FORWARD.

2º - Tu fez o LOG, e depois, deixa executar? Tem que "repetir" a rgra, só que ao invés de "-j LOG ..." tens que utilizar -j DROP, para não permitir o tráfego dos pacotes

FALHA 2:
Pela lógica tu carregas o módulo e então o aplicativo que depende deste o executa. Se carregar o módulo depois da função, realmente funciona?
Olha o exemplo:
A chave do carro é teu módulo.
O carro é teu aplicativo.
Para sair andando com o carro (de uma forma conveniconal, nada de ligação direta...) tu não precisa da chave?

FALHA 3:
A estrutura tá meio confusa, tu libera algumas coisas no começo, bloqueia no meio, libera mais um pouco, bloqueia... organize melhor, algo do tipo:

POLICES QUE BLOQUEIAM
REGRAS QUE PERMITEM ALGUMAS COISAS
REGRAS QUE BLOQUEIAM TODO O RESTO


[]'s

Max

[13] Comentário enviado por bfmano em 21/05/2006 - 18:14h

Se quiser Bloquear alguma coisa tente da seguinte forma:

------------------------------------------------------------------------------------
IPT="/sbin/iptables"
PORTS_BLOCK="5042 12345"


for PORTA in ${PORTS_BLOCK};do
$IPT -A FORWARD -p tcp --dport ${PORTA} -j LOG --log-prefix "FIREWALL - TCP/${PORTA} DROP: "
$IPT -A FORWARD -p tcp --dport ${PORTA} -j REJECT
$IPT -A INPUT -p tcp --dport ${PORTA} -j REJECT
$IPT -A INPUT -p tcp --sport ${PORTA} -j REJECT
$IPT -A OUTPUT -p tcp --dport ${PORTA} -j REJECT
$IPT -A OUTPUT -p tcp --sport ${PORTA} -j REJECT
------------------------------------------------------------------------------------

[14] Comentário enviado por turbo2005 em 30/08/2006 - 15:57h

O IPTABLE É SINÔNIIMO DE SEGURANÇA E CONTENÇÃO DE CUSTOS E O MELHOR ELE É LIVRE COMO OS PASSÁROS.

[15] Comentário enviado por franciel_zen em 30/11/2006 - 15:03h

Só tenho uma duvida... isso funciona no suse linux 10.0??? pois tentei de todas as formas para iniciar junto com o boot as regras de iptables e echo 1 > /proc/sys/net/ipv4/ip_forward. nao obtive resultados satisfatórios. se alguém ai puder me ajudar, eu ficaria grato...

[16] Comentário enviado por Sno0Py em 17/03/2007 - 12:41h

Gostei, axei bem simples e facil de entender, e o principal muito util

[17] Comentário enviado por Douglas Santos em 27/03/2007 - 11:21h

Tenho um problema com meu rc.firewall,ele tem vontade própria!!!

Quando libero o acesso total a um usuário, a regra só entra em vigor, quando reinicio a maquina!!

O que será isso????

Me ajudem por favor!!!

[18] Comentário enviado por Douglas Santos em 28/03/2007 - 14:56h

AJUDA!!!!

POR FAVOR!!!!!!!!


Quando libero o acesso total a um usuário, a regra só entra em vigor, quando reinicio a maquina!!

O que será isso????

[19] Comentário enviado por dvdmuro em 28/06/2007 - 01:12h

Douglas, talvez você esteja inserindo a regra só no arquivo de regras do iptables, aí durante o boot ela é carregada... você teria que detalhar melhor esse caso.

[]´s

[20] Comentário enviado por ewerton_d2 em 24/01/2008 - 15:51h

otimo !
fiz apenas alguma alteraçoes e esta tudo perfeito !
vlw !

[21] Comentário enviado por comfaa em 28/10/2008 - 10:43h

muito bom !!


Contribuir com comentário

  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts