Pular para o conteúdo

Uma dica de firewall baseado em iptables

Dica publicada em Linux / Segurança
Rey Junior rey
Hits: 10.102 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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 " "
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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

Slides da palestra "Android's Forensics: The Hard Work" - You Shot The Sheriff 6

Metasploit no Debian 8 Jessie

Backtrack4 HandBook de Comandos - Download Grátis

Removendo o bloqueio por erros de senha no Gentoo (systemd)

Possíveis problemas após atualização do IPTables

#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

Entre na sua conta para comentar.