18.222.15.173@hermano.com.br:~$ ls ./scripts/iptables
.. 00-leia.txt iptables.txt no-iptables.txt
18.222.15.173@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.222.15.173@hermano.com.br:~$ clear_