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.
# 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 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 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"
[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
[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.????