18.232.146.10@hermano.com.br:~$ ls ./scripts/iptables

..   00-leia.txt   iptables.txt   no-iptables.txt  

18.232.146.10@hermano.com.br:~$ cat ./scripts/iptables/iptables.txt

#!/bin/sh

# Firewall com IPTables
# Autor: Hermano Pereira
# www.hermano.com.br
# Ago/2006-Set/2011

# Fonte de pesquisa:
# http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html

# Modificar:
IFACE_IP="10.0.0.1"

#######################################################################################################
# Apagar regras antigas
#######################################################################################################

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -F
iptables -X

#######################################################################################################
# Permitir ao servidor acessar ele mesmo
#######################################################################################################

iptables -A INPUT -s 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT

ip6tables -A INPUT -s ::1 -j ACCEPT
ip6tables -A OUTPUT -d ::1 -j ACCEPT

iptables -A INPUT -s $IFACE_IP -j ACCEPT
iptables -A OUTPUT -d $IFACE_IP -j ACCEPT

#######################################################################################################
# Criar Chains
#######################################################################################################

# Chains para tratar dos protocolos
iptables -N permitir_tcp
iptables -N permitir_udp
iptables -N permitir_icmp

# Chains para acessos neste servidor
iptables -N servidor_tcp
iptables -N servidor_udp
iptables -N servidor_icmp

# Chains para acessos roteados por este servidor
iptables -N roteador_tcp
iptables -N roteador_udp
iptables -N roteador_icmp

#######################################################################################################
# Permitir ACESSO aos servicos deste servidor - TCP
#######################################################################################################

# Exemplo SSH
# iptables -A servidor_tcp -p TCP -s 10.0.0.0/24 --dport 22 -j permitir_tcp

# Exemplo HTTP
# iptables -A servidor_tcp -p TCP -s 10.0.0.0/24 --dport 80 -j permitir_tcp

# Negar outros servicos TCPs
# iptables -A servidor_tcp -p TCP -j LOG
iptables -A servidor_tcp -p TCP -j DROP

#######################################################################################################
# Permitir ACESSO aos servicos deste servidor - UDP
#######################################################################################################

# Exemplo TFTP
# iptables -A servidor_udp -p UDP -s 10.0.0.228 --dport 69 -j permitir_udp

# Negar outros servicos UDP
# iptables -A servidor_udp -p UDP -j LOG
iptables -A servidor_udp -p UDP -j DROP

#######################################################################################################
# Permitir ACESSO aos servicos deste servidor - ICMP
#######################################################################################################

# Permitir echo-request
iptables -A servidor_icmp -p ICMP --icmp-type 8 -j permitir_icmp

# Negar outros servicos ICMP
# iptables -A servidor_icmp -p ICMP -j LOG
iptables -A servidor_icmp -p ICMP -j DROP

#######################################################################################################
# Permitir ROTEAMENTO atraves deste servidor - TCP
#######################################################################################################

# Exemplo SSH
# iptables -A roteador_tcp -p TCP -s 10.0.0.0/24 -d 192.168.0.0/24 --dport 22 -j permitir_tcp

# Exemplo HTTP
# iptables -A roteador_tcp -p TCP -s 10.0.0.0/24 -d 192.168.0.0/24 --dport 80 -j permitir_tcp

# Negar outros servicos TCPs
# iptables -A roteador_tcp -p TCP -j LOG
iptables -A roteador_tcp -p TCP -j DROP

#######################################################################################################
# Permitir ROTEAMENTO atraves deste servidor - UDP
#######################################################################################################

# Exemplo TFTP
# iptables -A roteador_udp -p UDP -s 10.0.0.228 -d 192.168.1.10 --dport 69 -j permitir_udp

# Negar outros servicos UDP
# iptables -A roteador_udp -p UDP -j LOG
iptables -A roteador_udp -p UDP -j DROP

#######################################################################################################
# Permitir ROTEAMENTO atraves deste servidor - ICMP
#######################################################################################################

# Permitir echo-request
iptables -A roteador_icmp -p ICMP --icmp-type 8 -j permitir_icmp

# Negar outros servicos ICMP
# iptables -A roteador_icmp -p ICMP -j LOG
iptables -A roteador_icmp -p ICMP -j DROP

#######################################################################################################
# Permitir conexoes TCP
#######################################################################################################

iptables -A permitir_tcp -p TCP --syn -m state --state NEW -j ACCEPT
iptables -A permitir_tcp -p TCP -j REJECT

#######################################################################################################
# Permitir sessoes UDP
#######################################################################################################

iptables -A permitir_udp -p UDP -m state --state NEW -j ACCEPT
iptables -A permitir_udp -p UDP -j REJECT

#######################################################################################################
# Permitir sessoes ICMP
#######################################################################################################

iptables -A permitir_icmp -p ICMP -m state --state NEW -j ACCEPT
iptables -A permitir_icmp -p ICMP -j REJECT

#######################################################################################################
# Aplicar as chains
#######################################################################################################

# Roteamento
iptables -A FORWARD -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p TCP -j roteador_tcp
iptables -A FORWARD -p UDP -j roteador_udp
iptables -A FORWARD -p ICMP -j roteador_icmp

# Entrada
iptables -A INPUT -p ALL -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p TCP -j servidor_tcp
iptables -A INPUT -p UDP -j servidor_udp
iptables -A INPUT -p ICMP -j servidor_icmp

# Saida
# Importante: acessos originados por este servidor nao serao bloqueados
iptables -A OUTPUT -p ALL -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

#######################################################################################################
# Arrumando policy: negando o resto
#######################################################################################################

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#######################################################################################################
# IPv6 ainda nao sera utilizado
#######################################################################################################

ip6tables -P INPUT DROP
ip6tables -P OUTPUT DROP
ip6tables -P FORWARD DROP

#######################################################################################################
# Listando IPTABLES
#######################################################################################################

iptables -L -n -v

#######################################################################################################

18.232.146.10@hermano.com.br:~$ clear_