Uma dica de firewall baseado em iptables

Publicado por Rey Junior em 01/03/2007

[ Hits: 9.644 ]

 


Uma dica de firewall baseado em iptables



Eis uma dica de um firewall baseado em iptables, que fui adaptando aos poucos. Muito útil, pode ser usado como está e/ou adaptado ao seu uso, tanto doméstico, como para empresas.

#! /bin/bash

echo "INICIALIZANDO FIREWALL"
echo " "


# LIMPANDO REGRAS ANTERIORES
iptables -F &&
iptables -t nat -F &&
iptables -t nat -X &&
iptables -t nat -Z &&
iptables -t nat -F POSTROUTING &&
iptables -t nat -F PREROUTING &&
iptables -F INPUT &&
iptables -F OUTPUT &&
iptables -F FORWARD &&
iptables -L &&
echo "OK -> Limpando TODAS regras anteriores"


# FECHANDO EXTERNAMENTE A PORTA 22
iptables -A INPUT -p tcp --dport 22 -s 192.168.0.1 -j ACCEPT # Libera a porta 22 para um determinado micro na rede
iptables -A INPUT -p tcp --dport 22 -j DROP
echo "OK -> Fechada a porta 22 externamente e liberada pro IP 192.168.0.1"


# LIBERANDO O DNS
iptables -A INPUT -i eth0 -p udp -s 200.204.0.10 -j ACCEPT # Adaptar ao seu DNS
iptables -A INPUT -i eth0 -p udp -s 200.204.0.138 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -j REJECT
echo "OK -> Liberando o DNS"


# LIBERANDO ACESSO INTERNO DA REDE
iptables -A INPUT -p tcp --syn -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --syn -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j ACCEPT
echo "OK -> Libera acesso interno da rede"


# LIBERANDO LOOPBACK
iptables -A OUTPUT -p tcp --syn -s 127.0.0.1/255.0.0.0 -j ACCEPT
echo "OK -> Liberando loopback"


# LIBERANDO PORTAS DE USO COMUM
iptables -A INPUT -p tcp --dport 21 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 21 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 110 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -s 192.168.0.0/24 -j ACCEPT
echo "OK -> Liberando portas de uso comum"


# FECHANDO PORTAS SUSPEITAS
iptables -A INPUT -p tcp --dport 113 -j DROP
iptables -A INPUT -p tcp --dport 111 -j DROP
iptables -A INPUT -p tcp --dport 718 -j DROP
echo "OK -> Fechada as portas suspeitas"


# TESTE DA PORTA 25 SMTP
#iptables -A INPUT -p tcp --dport 25 --syn -m limit --limit 1/s --limit-burst 10 -j ACCEPT
#iptables -A INPUT -p tcp --dport 25 --syn -j DROP
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT
#echo "OK -> Regra para porta 25 - SMTP"


# PROTEÇÃO CONTRA PORT SCANNERS OCULTOS
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
echo "OK -> Bloqueado port scanners"


# PROTEÇÃO CONTRA ATAQUES
iptables -A INPUT -m state --state INVALID -j DROP
echo "OK -> Bloqueado attacks"


# PROTEÇÃO CONTRA SYN-FLOODS
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
echo "OK -> Bloqueado syn floods"


# PROTEÇÃO CONTRA PING DA MORTE
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
echo "OK -> Bloqueado ping da morte"


# PROTEGE CONTRA PACOTES QUE PODEM PROCURAR E OBTER INFORMAÇÕES INTERNAS
#iptables -A FORWARD --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
#echo "OK -> Protege contra pacotes para obter dados rede interna"


# PROTEGE CONTRA TODOS PACOTES DANIFICADOS E OU SUSPEITOS
iptables -A FORWARD -m unclean -j DROP
echo "OK -> Protege contra pacotes danificados e ou suspeitos"


# BLOQUEANDO TRACEROUTE
iptables -A INPUT -p udp -s 0/0 -i eth0 --dport 33435:33525 -j DROP
echo "OK -> Bloqueando traceroute"


# BLOQUEANDO QQER TENTATIVA DE CONEXÃO DE FORA PRA DENTRO POR TCP
#iptables -A INPUT -i eth0 -p tcp --syn -j DROP
#echo "OK -> Bloqueando tentativa de conexao por TCP"


# BLOQUEANDO QQER ACESSO EXTERNO, PERMITINDO APENAS A REDE
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! eth0 -j ACCEPT
iptables -A block -j DROP
echo "OK -> Bloqueado acesso externo"


# REGRAS DE SEGURANÇA NA INTERNET
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "OK -> Regras de seguranca na Internet"


# GERANDO LOG DE BACKDOORS
iptables -A INPUT -p tcp --dport 5042 -j LOG --log-prefix "WinCrash"
iptables -A INPUT -p tcp --dport 12345 -j LOG --log-prefix "BackOrifice"
iptables -A INPUT -p tcp --dport 12346 -j LOG --log-prefix "BackOrifice"
echo "OK -> Gerando log de backdoors"


# NAO GERA LOGS APOS PERDA DE CONEXAO POR LONGO PERIODO DE NAVEGACAO
iptables -A INPUT -p tcp --dport 80 -j REJECT
iptables -A INPUT -p tcp --dport 443 -j REJECT
echo "OK -> Nao gera log em longos periodos de navegacao"


# PROTECOES DE KERNEL
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo "OK -> Protecoes para Kernel"


# NAT - COMPARTILHANDO INTERNET
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "OK -> NAT . Compartilhando internet"


# BLOQUEANDO DEMAIS PORTAS
iptables -A INPUT -p tcp --syn -j DROP
iptables -A OUTPUT -p tcp --syn -j DROP
iptables -A FORWARD -p tcp --syn -j DROP
echo "OK -> Bloqueando demais portas"


# TERMINA
echo " "
echo " "
echo "FIREWALL INICIADO"
echo " "
Outras dicas deste autor

Dica para instalar webcam no Fedora Core 6

Resolvendo bug de trocar avatar e enviar arquivos do aMSN 0.97

Compilar aMSN 0.96 com fontes antialiasing

Resolvendo problema ao subir DHCP no Debian Sarge

Leitura recomendada

Testando seu firewall

Análise de memória com Volatility (vídeo)

Como recuperar senhas no Ubuntu 14.04

Snoopy Logger

Stay Safe Postcast

  

Comentários
[1] Comentário enviado por davis.peixoto em 01/03/2007 - 07:57h

Olá Rey, muito bom esta dica. Script de alta qualidade, muito bem comentado e organizado. Obrigado pela contribuição e parabéns.

[2] Comentário enviado por Cyber Punk em 01/03/2007 - 10:51h

Mais inicia junto ao sistema ??

é melhor que o firestarter ?

[3] Comentário enviado por luiscarlos em 01/03/2007 - 12:44h

seu firewall tem um furo na parte

# BLOQUEANDO QQER ACESSO EXTERNO, PERMITINDO APENAS A REDE
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! eth0 -j ACCEPT
iptables -A block -j DROP
echo "OK -> Bloqueado acesso externo"

as regras da chain block nunca serao verifcadas por que vc nao redirecionou as entradas pra ela, no link abaixo ensina vc a fazer isso e obrigado pela contribuição


http://focalinux.cipsga.org.br/guia/avancado/ch-fw-iptables.htm#s-fw-iptables-chains-N

[4] Comentário enviado por rey em 01/03/2007 - 18:58h

luis0101, obrigado pela dica, estarei verificando isso o mais rápido possivel.

Cyber Punk, esse script funciona melhor em servidores, mas nada impede que vc o adapte a um desktop.

[5] Comentário enviado por PREVIRB em 06/07/2007 - 14:08h

oLA SOU MEIA LEIGA EM LINUX. MAI ESSE FIREWAAL, PODE USAR EM QUALQUER VERSÃO, INCLUSIVE NO KURUMIM.

Rosa Maria.

[6] Comentário enviado por julianobe em 23/07/2007 - 17:27h

a regra:
# PROTEGE CONTRA TODOS PACOTES DANIFICADOS E OU SUSPEITOS
iptables -A FORWARD -m unclean -j DROP
echo "OK -> Protege contra pacotes danificados e ou suspeitos"

na empresa que trabalho tem esta regra.
quando eu executo o firewall aparece uma mensagem nesta linha.

##############################
iptables: No chain/target/match by that name
################################

to aprendendo a usar o firewall a poco tempo.
mas posso concluir que isto nao he normal.
alguem sabe o porque desta mensagem.????

[7] Comentário enviado por balani em 13/10/2007 - 13:36h

muito util, gostei do seu firewall



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts