Firewall iptables em conflito ( Ubuntu Server 11.10 )

Iniciado por xtg, 24 de Fevereiro de 2012, 03:04

tópico anterior - próximo tópico

xtg

Bem, o meu problema é o seguinte: Fiz ( através de pesquisa ) algumas regras em iptables. O meu problema está quando tenho que liberar as conexões já estabelecidas.

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT


Com isso, se eu retirar a última linha, NADA funciona. Ninguém consegue navegar, mas se eu deixar, TODAS as portas ficam aberta. Neste caso, nenhuma das minhas regras irá funcioná. Alguém tem alguma dica ?

Caso tenham alguma dica para melhorar o script, eu agradeço também!


Parte do firewall


# -----------------------------------------------------------------
# Ativa modulos
# -----------------------------------------------------------------
echo "Ativando modulos"
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe iptable_mangle
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Limpa TODAS as regras
# -----------------------------------------------------------------
echo "Limpando regras"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Fechar TODAS as portas
# -----------------------------------------------------------------
echo "Fechando todas as portas"
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -t nat    -P PREROUTING  ACCEPT
iptables -t nat    -P POSTROUTING ACCEPT
iptables -t nat    -P OUTPUT      ACCEPT
iptables -t mangle -P PREROUTING  ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT      ACCEPT
iptables -t mangle -P INPUT       ACCEPT
iptables -t mangle -P FORWARD     ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Politicas de segurança #
# -----------------------------------------------------------------
echo "Implementação de politicas de segurança"
c=/proc/sys/net/ipv4
   echo 1 > $c/tcp_syncookies
   echo 1 > $c/icmp_echo_ignore_broadcasts
   echo 1 > $c/icmp_ignore_bogus_error_responses
   echo 1 > $c/ip_dynaddr

for c in /proc/sys/net/ipv4/conf/*; do
   echo 0 > $c/accept_redirects
   echo 0 > $c/accept_source_route
   echo 1 > $c/log_martians
   echo 1 > $c/rp_filter
done
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Habilita roteamento
# -----------------------------------------------------------------
echo "Habilitando roteamento"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Habilita PROXY TRANSPARENTE
# -----------------------------------------------------------------
echo "Ativando PROXY Transparent"
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Ativar o mascaramento
# -----------------------------------------------------------------
echo "Ativando Mascaramento"
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Habilitando o fluxo interno entre os processos
# -----------------------------------------------------------------
echo "Ativando fluxo interno (lo)"
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando conexoes estabelecidas
# -----------------------------------------------------------------
echo "Liberando conexoes estabelecidas"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o acesso via SSH com limite de 2 tentativas por minuto
# -----------------------------------------------------------------
echo "Liberando SSH com limite de tentativas"
iptables -I INPUT -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 300 --hitcount 2 -j DROP
iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p udp --dport 2222 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o APACHE
# -----------------------------------------------------------------
echo "Liberando o APACHE"
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o SQUID
# -----------------------------------------------------------------
echo "Liberando o SQUID"
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera as portas do aquido PORTAS_IN_OUTPUT
# -----------------------------------------------------------------
echo "Liberando Portas IN/OUTPUT"
for i in `cat $PORTASIN`; do
iptables -A INPUT -p tcp --dport $i -j ACCEPT
done
for o in `cat $PORTASOUT`; do
iptables -A OUTPUT -p tcp --sport $o -j ACCEPT
done
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera as portas do aquido PORTAS_FORWARD
# -----------------------------------------------------------------
echo "Liberando Portas FORWARD"
for z in `cat $PORTASFOR`; do
iptables -A FORWARD -p tcp --dport $z -j ACCEPT
iptables -A FORWARD -p tcp --sport $z -j ACCEPT
done
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando no-ip (8245)
# -----------------------------------------------------------------
echo "Liberando NO-IP"
iptables -A INPUT -p tcp --dport 8245 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8245 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Bloqueio de scanners ocultos (Shealt Scan)
# -----------------------------------------------------------------
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
echo "Bloqueando SCANNERS ocultos"
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Bloqueio Anti-Spoofings
# -----------------------------------------------------------------
echo "Ativando bloqueio Anti-spoofings"
iptables -A INPUT -s 10.0.0.0/8 -i $LAN -j DROP
iptables -A INPUT -s 127.0.0.0/8 -i $LAN -j DROP
iptables -A INPUT -s 172.16.0.0/12 -i $LAN -j DROP
iptables -A INPUT -s 192.168.1.0/16 -i $LAN -j DROP
iptables -A INPUT -s 192.168.2.0/16 -i $LAN -j DROP
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando ping
# -----------------------------------------------------------------
echo "Ativando ping"
iptables -A FORWARD -p icmp -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando ping vindo dos clientes internos
# -----------------------------------------------------------------
echo "Ativando ping entre clientes"
iptables -A INPUT -s 192.168.2.0/24 -i $LAN -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -d 192.168.2.0/24 -o $LAN -p icmp --icmp-type echo-reply -j ACCEPT
echo "Carregando .............................. [OK]"



Desde já agradeço!
/+/ Vasco por amor, Força Jovem por Ideal /+/
Twitter: @xtgboaventura

irtigor

É dessa linha que você falou "iptables -A INPUT -i lo -j ACCEPT"?
Porque ela só libera a entrada na interface loopback.

xtg

Pois é, por isso vim aqui pedir um 'socorro'. Se eu retirar esta linha, vai bloquear tudo. Se eu deixar, está liberando tudo. Em minha regra de iptables (firewall), consegue observar algum ponto que eu passei despercebido ?
/+/ Vasco por amor, Força Jovem por Ideal /+/
Twitter: @xtgboaventura

zekkerj

Algumas coisas que eu vejo no teu firewall:

1. Passarinho que come pedra, sabe o tamanho do jacu que tem no ninho. Cadeia OUTPUT com política DROP não é para os fracos.

2. O bloqueio de spoofing teria que estar no início do firewall, não no final.

3. Ainda sobre o bloqueio de spoofing, não ficou claro pra mim quais faixas de endereços privados vc não está bloqueando.

4. Pra ter uma regra liberando os estados "ESTABLISHED,RELATED" e "NEW", é melhor não ter regra nenhuma. Afinal, o único estado que sobra é "INVALID", que não vai nunca ser alcançado numa situação normal.

5. A regra que vc questiona não está liberando tudo; ela está liberando apenas o tráfego que entra na interface loopback. E pra entrar na interface loopback, tem que vir da própria máquina. Essa regra é necessária pra que sua máquina continue ágil; sem ela, a máquina não vai travar, mas vai ficar incrivelmente lenta.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

xtg

Citação de: zekkerj online 24 de Fevereiro de 2012, 13:29
Algumas coisas que eu vejo no teu firewall:

1. Passarinho que come pedra, sabe o tamanho do jacu que tem no ninho. Cadeia OUTPUT com política DROP não é para os fracos.

2. O bloqueio de spoofing teria que estar no início do firewall, não no final.

3. Ainda sobre o bloqueio de spoofing, não ficou claro pra mim quais faixas de endereços privados vc não está bloqueando.

4. Pra ter uma regra liberando os estados "ESTABLISHED,RELATED" e "NEW", é melhor não ter regra nenhuma. Afinal, o único estado que sobra é "INVALID", que não vai nunca ser alcançado numa situação normal.

5. A regra que vc questiona não está liberando tudo; ela está liberando apenas o tráfego que entra na interface loopback. E pra entrar na interface loopback, tem que vir da própria máquina. Essa regra é necessária pra que sua máquina continue ágil; sem ela, a máquina não vai travar, mas vai ficar incrivelmente lenta.

zekkerj

Neste caso, poderia me ajudar a ajustar meu firewall ? Como eu te disse, até porta 6667 do irc, está passando livremente.

Como eu disse, retirando estas regras, fico sem navegação. E isso está me tirando o sono, tendo em vista que já modifiquei o firewall e não consigo obter êxito.

Saudações Vascaínas!
/+/ Vasco por amor, Força Jovem por Ideal /+/
Twitter: @xtgboaventura

zekkerj

Tire o "NEW" da regra "iptables -A FORWARD -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT".

Na regra seguinte ("iptables -A OUTPUT -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT"), avalie se a regra deve ficar ou não. Como está, é inútil, pois ela libera qualquer estado de pacote. Se retirar, lembre-se que está usando política DROP nessa cadeia.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

xtg

#6
zekkerj

Fiz as seguintes alterações:


DE:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

Para:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


&

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Agora que o OUTPUT está habilitado, esta linha se faz necessário ?
iptables -A INPUT -i lo -j ACCEPT




Com isso, minha internet voltou a funcionar parcialmente, alguns sites abrem, outros não. Internet ficou um pouco mais lenta também e com as portas travadas como que eu queria. Mas agora, mesmo liberando as portas INPUT ( ex: 6667 ) não consigo navegar por elas. Creio que agora é questão de detalhes.

/+/ Vasco por amor, Força Jovem por Ideal /+/
Twitter: @xtgboaventura

zekkerj

CitarAgora que o OUTPUT está habilitado, esta linha se faz necessário ?
Não. A menos que vc tenha outras regras bloqueando pacotes nessa cadeia.
OBS: A cadeia sempre está habilitada; o que você fez foi mudar a política dela de DROP para ACCEPT.

CitarMas agora, mesmo liberando as portas INPUT ( ex: 6667 ) não consigo navegar por elas.
A cadeia INPUT diz respeito às conexões que vc faz ao seu firewall. Como essa cadeia está com política DROP, vc tem que adicionar essa porta ao arquivo definido na variável "PORTASIN" (aliás, não achei a definição desse arquivo no seu firewall; foi pq vc não quis mostrar, ou pq vc não lembrou de definir?), pra que alguém consiga se conectar ao seu servidor nessa porta.

"Navegação" subentende que vc está se conectando a algum lugar na internet; se for isso mesmo, vc tem que liberar essa porta na cadeia FORWARD (e aí o arquivo que vc lê está definido na variável "PORTASFOR").
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

xtg

#8
zekkerj

Para que você entenda melhor, irei colocar todo o script.


#!/bin/bash
#Configuração do Firewall através do iptables

# Interfaces de rede
WAN=eth0
LAN=eth1
REDE_INTERNA=192.168.2.0/24

# portas liberadas
PORTASIN="/etc/squid/INPUT" # Trafego de fora para dentro do servidor
PORTASOUT="/etc/squid/OUTPUT" # Trafego dentro para fora do servidor
PORTASFOR="/etc/squid/FORWARD"   

# Declaração de Variavel
PROGRAMA="/etc/init.d/firewall"

# -----------------------------------------------------------------
# Ativa modulos
# -----------------------------------------------------------------
echo "Ativando modulos"
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe iptable_mangle
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Limpa TODAS as regras
# -----------------------------------------------------------------
echo "Limpando regras"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -F
iptables -t filter -X
iptables -t mangle -F
iptables -t mangle -X
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Ativar o mascaramento
# -----------------------------------------------------------------
echo "Ativando Mascaramento"
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Habilita roteamento
# -----------------------------------------------------------------
echo "Habilitando roteamento"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Carregando .............................. [OK]"

start () {
# -----------------------------------------------------------------
# Fechar TODAS as portas
# -----------------------------------------------------------------
echo "Fechando todas as portas"
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -t nat    -P PREROUTING  ACCEPT
iptables -t nat    -P POSTROUTING ACCEPT
iptables -t nat    -P OUTPUT      ACCEPT
iptables -t mangle -P PREROUTING  ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P OUTPUT      ACCEPT
iptables -t mangle -P INPUT       ACCEPT
iptables -t mangle -P FORWARD     ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando conexoes estabelecidas
# -----------------------------------------------------------------
echo "Liberando conexoes estabelecidas"
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Bloqueio Anti-Spoofings
# -----------------------------------------------------------------
echo "Ativando bloqueio Anti-spoofings"
iptables -A INPUT -s 10.0.0.0/8 -i $LAN -j DROP
iptables -A INPUT -s 127.0.0.0/8 -i $LAN -j DROP
iptables -A INPUT -s 172.16.0.0/12 -i $LAN -j DROP
iptables -A INPUT -s 192.168.1.0/16 -i $LAN -j DROP
iptables -A INPUT -s 192.168.2.0/16 -i $LAN -j DROP
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Politicas de segurança #
# -----------------------------------------------------------------
echo "Implementação de politicas de segurança"
c=/proc/sys/net/ipv4
    echo 1 > $c/tcp_syncookies
    echo 1 > $c/icmp_echo_ignore_broadcasts
    echo 1 > $c/icmp_ignore_bogus_error_responses
    echo 1 > $c/ip_dynaddr

for c in /proc/sys/net/ipv4/conf/*; do
    echo 0 > $c/accept_redirects
    echo 0 > $c/accept_source_route
    echo 1 > $c/log_martians
    echo 1 > $c/rp_filter
done
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Bloqueio de scanners ocultos (Shealt Scan)
# -----------------------------------------------------------------
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
echo "Bloqueando SCANNERS ocultos"
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Proteção contra Ataques
# -----------------------------------------------------------------
echo "Ativando proteção contra Ataques"
iptables -A INPUT -m state --state INVALID -j DROP
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Habilitando o fluxo interno entre os processos
# -----------------------------------------------------------------
echo "Ativando fluxo interno (lo)"
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Habilita PROXY TRANSPARENTE
# -----------------------------------------------------------------
echo "Ativando PROXY Transparent"
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o acesso via SSH com limite de 2 tentativas por minuto
# -----------------------------------------------------------------
echo "Liberando SSH com limite de tentativas"
iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 -j DROP
iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o APACHE
# -----------------------------------------------------------------
echo "Liberando o APACHE"
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o SQUID
# -----------------------------------------------------------------
echo "Liberando o SQUID"
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera as portas do aquido PORTAS_IN_OUTPUT
# -----------------------------------------------------------------
echo "Liberando Portas IN/OUTPUT"
for i in `cat $PORTASIN`; do
iptables -A INPUT -p tcp --dport $i -j ACCEPT
done
for o in `cat $PORTASOUT`; do
iptables -A OUTPUT -p tcp --sport $o -j ACCEPT
done
for f in `cat $PORTASFOR`; do
iptables -A FORWARD -p tcp --dport $f -j ACCEPT
iptables -A FORWARD -p tcp --sport $f -j ACCEPT
done
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando no-ip (8245)
# -----------------------------------------------------------------
echo "Liberando NO-IP"
iptables -A INPUT -p tcp --dport 8245 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8245 -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Liberando ping vindo dos clientes internos
# -----------------------------------------------------------------
echo "Ativando ping entre clientes"
iptables -A INPUT -s 192.168.2.0/24 -i $LAN -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -d 192.168.2.0/24 -o $LAN -p icmp --icmp-type echo-reply -j ACCEPT
echo "Carregando .............................. [OK]"

# -----------------------------------------------------------------
# Libera o meuservidor.no-ip.org
# -----------------------------------------------------------------
echo "meuservidor.no-ip.org"
iptables -t nat -I PREROUTING -i $LAN -p tcp --dport 80 -d meuservidor.no-ip.org -j RETURN
echo "Carregando .............................. [OK]"
}



Arquivo INPUT:
6667:6669
80
/+/ Vasco por amor, Força Jovem por Ideal /+/
Twitter: @xtgboaventura

fabio_g_l

Opa amigo

eu estou com um problema de não conseguir q o redirecionamento  funciona corretamente

preciso liberar o ssh externo.
eu consigo acessar, mas ele entra direto no proxy e não no pc que quero.

Já tentei também liberar o acesso via Terminal Service liberando a porta 3389 e sem sucesso.

já pra adiantar vou por o script aqui.

mas vou por no padrão do seu que achei muito bem organizado.

segue abaixo:

# limpa todas as regras
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# exclui chains criadas
iptables -t filter -X
iptables -t nat -X
iptables -t mangle -X

#zera contador
iptables -t filter -Z
iptables -t nat -Z
iptables -t mangle -Z

# define politica padrao para DROP
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Compartilha conexao
modprobe iptable_nat
acho 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

#Abre portas
iptables -A INPUT -i eth0 -p tcp --dport 52 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 23 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 51 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 24 -j ACCEPT

# NAT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-destination 10.0.3.20:22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -j DNAT --to-destination 10.0.3.119:22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 24 -j DNAT --to-destination 10.0.3.108:22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 52 -j DNAT --to-destination 10.0.3.100:5900
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 51 -j DNAT --to-destination 10.0.3.108:5900
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 10.0.3.89:5900
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 35 -j DNAT --to-destination 10.0.3.89:36005
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 13 -j DNAT --to-destination 10.0.3.49:1723
iptables -t nat -A PREROUTING -i eth0 -p gre -j DNAT --to-destination 10.0.3.49

# Bloqueia Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
iptables -A INPUT -m state --state INVALID -j DROP

# ABRE PARA INTERFACE DE LOOPBACK E REDE LOCAL
iptables -A INPUT -i lo -j ACCEPT