Você está na página 1de 17

Por: Flavio Torres - ftorres[@]ymail.

com 
Publicado em: 08/11/2008

Torres, Flavio. IPTABLES PARA QUEM NÃO CONHECE IPTABLES. São Paulo, 2008.

Sumário

1 Conceito de segurança 
2 Mecanismos de segurança 
3 Conceitos de Firewall 
 Iptables, funcionalidades 
 Trabalhando com NAT em sua rede 
 Trabalhando com filtros de pacote 
 Tratamentos especiais, TOS 
 Módulos 
 Resumão 
  ativando nat 
  apagando regras 
  redirecionamento para squid 
  redirecionamento de portas 
  liberando portas 
  bloqueio de ping 
  bloqueio de portas 
  bloqueio de conexões

1 Conceito de segurança

      A segurança da informação é, sem dúvida, um dos assuntos mais importantes dentre as pautas de
reunião de tecnologia em qualquer entidade.

      Autenticidade, confidencialidade em manter as informações a salvo de acesso e divulgação não


autorizadas, confiabilidade, compartilhamento de dados, disponibilidade e integridade da informação
estão diretamente ligados à segurança. Segurança da informação são mecanismos que promovem a
integridade de uma estrutura de rede que se aplicam nos conceitos mais simples, que vão desde
políticas de troca periódica de senhas até a trituração de documentos impressos.

      Mobilidade e facilidade já fazem parte do nosso dia-a-dia, comprar e configurar um roteador Wi-Fi
tornou-se trivial, já com as mais diversas distribuições de Linux, instalar e configurar um servidor
como proxy acaba sendo tarefa de 15 minutos. É exatamente neste tipo de facilidade que pessoas mal
intencionadas aplicam as mais diversas formas comumente utilizadas para explorar estas
“vulnerabilidades”, com o simples uso de ferramentas desenvolvidas especialmente para esta
finalidade, a invasão.

     Ataques direcionados às redes além de comprometer os recursos e a disponibilidade comprometem


o principal: as informações. Como os ataques podem ser originados de qualquer posição dentro ou
fora da área da rede em questão, acaba dificultando a tarefa de localização precisa da origem do
ataque e do atacante. O intruso que consiga entrar em uma rede ficará com um acesso privilegiado
para lançar ataques aos elementos constituintes dessa rede havendo risco acrescido para ocorrência
das situações exemplificadas a seguir:
• Furto ou violação da informação e dos serviços da rede;
• Abuso da conexão com à Internet;
• Utilização dessa conexão “ponte” para prática de atos ilícitos, o que, em caso de posterior
investigação policial, envolverá o utilizador titular do link invadido;
• Vandalismo – destruição de dados, interferência ao normal funcionamento da rede, etc.

A contra medida simples configurada em separado ou em conjunto não devem ser consideradas
medidas de segurança suficientes para impedir um indivíduo motivado a entrar na rede.

2 Mecanismos de segurança

Contamos com os mecanismos de segurança físicos e lógicos:

• os métodos físicos são barreiras que limitam o contato ou acesso à informação ou a infra-estrutura
de dados que contém as informações, podem ser exemplificados como: portas, trancas, acesso por
identificação biométrica, blindagem, entre outros. 
• os métodos lógicos destacam-se por controles eletrônicos que impedem ou limitam o acesso à
informação.

Adicionalmente, agregamos aos mecanismos lógicos:

- Criptografia: É a forma de cifrar dados, utilizando algoritmos altamente complexos, ou não, para
tornar a informação ininteligível à terceiros. A decriptografia é utilizada pela parte autorizada a
receber esta informação e devidamente com o algoritmo de decriptação é realizado o processo
inverso.

- Assinatura digital: Código utilizado para verificar a integridade de um documento, porém, não
garante sua confidencialidade.

- Garantia da integridade da informação: Conseguimos facilmente utilizando funções de “Hashing”,


seria como tirar uma “foto” do documento antes de enviar, e então para o receptor verificar sua
integridade ele tiraria outra “foto” do documento e realizava a comparação.

- Controle de acesso: destacam-se por senhas, sistemas biométricos, controle de acesso explícito,
como por exemplo, um firewall...

3 Conceitos de Firewall

     Firewall, não é nada mais do que um porteiro ou um segurança com sua árdua função de verificar
quem pode entrar e sair, além de manter a consonância das coisas, atualmente, já se tornou
imprescindível sua utilização.
     Existem firewalls comerciais, muitos; também existe um método de construção onde podemos
definir as próprias regras, onde você define o que quer controlar; praticidade? Nem tanto para uma
corporação com mais de 5 mil regras. De qualquer forma, com um pouco de organização,
conseguimos trabalhar, e muito bem, com o iptables. 
     No Linux, o iptables é embutido no kernel, o que o torna, sem dúvida, superior em relação aos
seus concorrentes. Obviamente nenhum firewall irá corrigir os erros de sua rede, mas ele poderá
limitar o uso destes serviços à certos computadores. Não faz sentido disponibilizar um serviço de FTP
a toda a internet sendo que apenas a filial necessita deste acesso, muito menos manter um serviço
web ativo no seu servidor, se nem ao menos você necessita dele lá. Então, como definir políticas de
acesso aos serviços em que eu realmente necessito mante-los?
Iptables
Para entendermos o iptables, veremos como ele trabalha para então conhecermos o quê ele pode nos
proporcionar. Teremos agora, um método bem didático de explicação. Preparado??

O iptables está organizado por 3 tabelas, a saber:

Filter: Onde é controlado o de filtro de pacotes, basicamente, quem entra e quem sai da sua rede. É
composta por três funções:

• INPUT: Controla o que entra no servidor.


• FORWARD: Controla o que entra no servidor mas deve ser redirecionado a uma outra máquina.
• OUTPUT: Controla o que sai do servidor.

NAT: Ela trabalha com funções de NAT (Network Address Translation), seria uma troca do endereço
de rede. As funções dela são:
• PREROUTING: Utilizada quando necessitamos tomar ações ANTES do datagrama ser roteado.
• POSTROUTING: Utilizada quando necessitamos tomar ações APÓS o roteamento do datagrama.
• OUTPUT: Utilizada quando necessitamos realizar alterações nos datagramas após eles serem
roteados.

Mangle: Trabalha com alterações especiais nos pacotes, por exemplo alterar a prioridade de um
datagrama IP, ou marcar um determinado datagrama para que ele seja trabalhado por um
roteamento especial, como sair por outro gateway. As funções dela são:
• PREROUTING: Utilizada quando necessitamos modificar os datagramas dando um tratamento
especial antes que eles sejam roteados.
• OUTPUT: Modifica especialmente os datagramas gerados pelo servidor antes que eles sejam
roteados.

Veja um exemplo didático:


Agora que já sabemos tudo sobre as situações das tabelas, vamos conhecer alguns comandos:

Comandos do iptables

iptables: o binário
iptables-save: binário que salva as regras em memória.
ip6tables: iptables para IPv6.
iptables-restore: binário responsável carregar em memória as regras que foram salvas pelo
‘iptables-save’.

Forma de utilização:
# iptables –t nat
diz ao iptables que será usado a tabela nat

# iptables –t filter
diz ao iptables que será usado a tabela filter

# iptables –t mangle
diz ao iptables que será usado a tabela mangle
iptables -<comando> [cadeia]
Ex: iptables -A INPUT

Ex: iptables –A INPUT


-A chain
Iptables, insira as regras ao final da chain INPUT.
Ex: iptables –D INPUT
-D chain
Iptables, apague as regras da chain INPUT, não vou mais utilizá-las.
Ex: iptables –D FORWARD 25
-D chai
nregra_num
Iptables, apague da chain FORWARD a regra residente na posição 25.
Ex: iptables –R FORWARD 20 –s 192.168.30.10 –d 192.168.40.0/24
-R chai
nregra_num Iptables, substitua a regra 20 da chain FORWARD pela regra dada ‘–s
192.168.20.10 –d 192.168.30.0/24 -j DROP.’
Ex: iptables –I INPUT
-I chain
Iptables, insira no inicio da lista a regra.
Ex: iptables –L INPUT
-L chain
Iptables, liste as regras da chain INPUT. Nota: Caso não haja nenhuma chain
especificada, todas as regras em todas as chains são listadas.
Ex: iptables –F FORWARD

-F chain Iptables, remova todas as regras da chain FORWARD. Nota: Se nenhuma chain
for especificada, remove as regras de todas as chains existentes, inclusive as do
usuário
Ex: iptables –Z
-Z chain
Iptables, zere os contadores de datagramas e de bytes em todas as regras da
chain especificada, ou para todas as chains se nenhuma for especificada.
Ex: iptables –N VIRUS
-N chain
Iptables, crie uma chain chamada VIRUS, utilizado para tratar diversos casos com
o mesmo ALVO.
Ex: iptables –e WORMS worms
-e chain
Iptables, renomeie a chain WORMS para worms
Ex: iptables –X WORMS
-X chain
Iptables, apague a chain WORMS, não vou mais utilizá-la. Nota: o iptables
apagará todas se não for especificada uma.
Ex: iptables –C WORMS

Iptables, verifique o datagrama descrito pela regra especificada contra a chain


-C chain
especificada. Este comando retorna uma mensagem descrevendo como a chain
processou o datagrama. Isso é muito útil para testar a configuração do firewall, e
para uma análise posterior.
Ex: iptables –P INPUT DROP
Iptables, defina a política padrão para a chain INPUT dentro de uma política
-P chainpolítica
especificada a DROP. As políticas válidas
são:ACCEPT, DROP, QUEUE e RETURN.
 

Controles a serem tomados:

Ex: -p tcp.
-p
<protocolo> Iptables, é sobre o protocolo tcp! (você encontra uma tabela de protocolos em
/etc/protocol)
Ex: -i eth0, -i eth1, -i eth+ (todas eth)
-i <interface>
Iptables, controle tudo o que ENTRA (-i de INPUT) pela interface ethX . Esta regra
também se aplica a chain FORWARD.
Ex: -o eth0, -o eth1, -o eth+ (todas eth)
-o <interface>
Iptables, controle o que SAI (-o de OUTPUT). Esta regra também se aplica nas chains
FORWARD e OUTPUT
Ex: -s 192.168.0.1/24
-s <ip>
Iptables, controle o que vier da ORIGEM (-s de SOURCE) 192.168.0.1/24
Ex: -d 192.168.0.2/24
-d <ip>
Iptables, controle o que vai com DESTINO (-d de DESTINATION)
Ex: -d ! 192.168.0.2/24, ou –p ! udp
! <pacote|ip>
Iptables, com qualquer DESTINO (-d de DESTINATION) EXCETO 192.168.0.2, o
mesmo para protocolo, qualquer um exceto udp.
Ex: -j ACCEPT, -j DROP, -j REJECT, -j LOG
-j <ação>
Iptables, o que casar com as ações definidas voce vai ACEITAR, vai NEGAR,
vai REJEITAR ou vai GRAVAR.
Ex: --sport 22
--sport
<porta>
Iptables, o que for da PORTA de ORIGEM (--sport de SOURCE PORT) 22
Ex: --dport 80
--dport
<porta>
Iptables, o que for para a PORTA de DESTINO 80 (--dport de DESTINATION PORT)

DICA: Tanto para --sport quanto para --dport podemos utilizar range de portas:
Ex: --dport 6881:6889 
Ou multiportas:
Ex: -m multiport --dport 5190,4000,53

Ações a serem tomadas quando alguma regra combina ou casa (para os íntimos)

ACCEPT Aceitar o datagrama IP


DROP Bloquear o datagrama IP, descarta o datagrama sem informar ao emissor
REJECT Rejeita o datagrama IP, informa o emissor, Ex: icmp destination host unreacheable
LOG Cria Logs das ações solicitadas.
Modifica o endereço de origem (SOURCE NAT) dos datagramas IP antes deles serem
SNAT
roteados. Ex: Dizer que um datagrama enviado do host X para o Y originou-se do host Z.
Modifica o endereço de destino (DESTINATION NAT) dos datagramas IP das máquinas
DNAT
clientes. Ex: Encaminhar um datagrama com destino a porta 80 para a 3128 (do squid!)
Redireciona a porta. Ex: o que vier para a porta 7153 redirecionar para a porta 3389 (a
REDIRECT
porta do Terminar Service)
TOS Tratamento especial no datagrama, veremos mais adiante!

      Nossa! Quanta coisa hein? Se você conseguiu chegar até aqui, é sinal de que apenas passou os
olhos pelas tabelas, não!? Tome notas, leia, imprima, releia e tenha as tabelas no bolso, se entendê-
las dominará o iptables facilmente!
Agora chega de “bla bla bla” e vamos as reais situações.

A maioria das situações abaixo foram retiradas da lista linux-board do YahooGroups, a qual sempre
presto uma ajuda nas horas vagas.

Vamos tomar como exemplo a situação de rede, a quase padrão na maioria dos casos:

Rede: eth0 interna


Rede: eth1 externa

Trabalhando com NAT em sua rede

Mascarar conexão

Devemos habilitar, antes, o nat em seu kernel:

echo 1 > /proc/sys/net/ipv4/ip_forward

E então:

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE

Iptables, adicione na tabela nat (-t nat), após ser roteado (-A POSTROUTING):
• O que for de origem da minha rede (-s 192.168.0.0/24)
Qual o alvo, o que fazer? 
• -j MASQUERADE (mascarar a conexão)

SNAT: modificação do endereço de origem das máquinas para um único IP ou faixa de IP's. 

Qualquer regra que utilize SNAT deve ser aplicada a chain POSTROUTING.


DNAT: modificação do endereço de destino das máquinas para um único IP ou fixa de IP's. 

Qualquer regra que utilize DNAT deve ser aplicada a chain PREROUTING.

E então, fácil? Calma, veremos muitos exemplos, até você decorá-los. Vejamos uma regra:

iptables –t nat –A POSTROUTING –s 192.168.0.1 –o eth0 –j SNAT -–to 192.168.2.12

 
Iptables, adicione na tabela POSTROUTING (-t nat –A POSTROUTING):
• o que vier com origem do host (-s 192.168.0.1)
• e especificamente o que sai pela rede eth0 (-o eth0)
• deverá ter seu endereço alterado (-j SNAT) para 192.168.2.12

Tá ficando bom, vejamos uma com DNAT:

Redirecionar conexões que entrem na porta 7155 para a porta 3389 (Terminal Service) de uma
máquina interna de sua rede.

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 7152 -j DNAT --to 192.168.0.126:3389

iptables como vai? Adicione na tabela PREROUTING (-t nat –A PREROUTING):


• O que for TCP e que vier com destino à porta 7152 (--dport 7152)
terá seu destino de rede alterado para 192.168.0.126 (-j DNAT –-to 192.168.0.126:3389)

Quando não especificamos uma origem ou um destino (-s <IP>, -d <IP>) o iptables segue o
padrão que é ANY, ou seja, qualquer (0/0). É redundante colocarmos algo como –s 0/0 ou –d 0/0.
Note que na regra acima, deixamos explícito a porta destino do pacote, já que ele viria pela 7152 e
além de alterarmos o IP de destino, alteramos também a porta para 3389.

Redirecionar conexões da porta 80 para 3128

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp -i eth0 --dport 80 -j REDIRECT --to-


port 3128
iptables, adicione na tabela nat (-t nat), antes de ser roteado (-A PREROUTING) :
• O que for de origem (-s, de source) 192.168.0.0./24 
• E que seja do protocolo tcp (-p tcp) 
• E que entre pela interface eth0 (-i de input, eth0)
• Com destino a porta 80 (--dport 80)
Qual o alvo, o que fazer? :
• Redirecionar para a porta 3128 (-j REDIRECT –to-port 3128)

Trabalhando com filtros de pacote

      Há pessoas que trabalham, de cara, bloqueando tudo e liberando apenas o necessário. Há outras
que trabalham liberando tudo o que necessita e bloqueia o resto, veja, é diferente...

Note que quando se lista uma tabela do iptables (iptables –t filter –L), você vê que a política
padrão é ACCEPT:

# iptables -t filter -L
Chain INPUT (policy ACCEPT)

Então, vamos montar a política de que, por padrão o pacote é bloqueado.

iptables –P INPUT DROP


iptables –P OUTPUT DROP
iptables –P FORWARD DROP

Bloquear tudo com destino ao site www.pornografia.com

iptables –A FORWARD –s 192.168.0.0/24 –d www.pornografia.com –j DROP

iptables, adicione na tabela de encaminhamento de pacotes (iptables –A FORWARD):


• Tudo o que for de origem (-s, de source, origem ) 192.168.0.0/24 
• e com destino a (-d, de destination, destino) www.pornografia.com
• seja bloqueado (-j alvo, “o que fazer?”) DROP (bloquear, negar)

Liberar tudo o que vier do site www.empresa.com.br

iptables –A FORWARD –s www.empresa.com.br –d 192.168.0.0/24 –j ACCEPT

iptables, adicione na tabela de encaminhamento (iptables –A FORWARD):


• O que vier da origem (-s www.empresa.com.br) 
• Com destino a minha rede interna (-d 192.168.0.0/24)
• Será liberado (-j ACCEPT)

Bloquear totalmente aquele cara que esta consumindo sua banda:

iptables –A FORWARD –s 192.168.0.15 –d 192.168.0.1 –j DROP

Adicionar na tabela de encaminhamento (-A FORWARD):


• o que for de origem (-s) do IP 192.168.0.15 e com destino ao gateway de internet (-d)
192.168.0.1 será bloqueado (-j DROP).

Já deu um susto? Então você pode excluir a regra:

iptabes –D FORWARD –s 192.168.0.15 –d 192.168.0.1 –j DROP

Há uma forma de excluir a regra pelo seu número, para listar as regras e sua ordem fazemos:

# iptables -t filter -nL --line-numbers 


26 DROP 0 -- 192.168.0.15 192.168.0.1

E então, excluímos:
# iptables -D FORWARD 26

Tratamentos especiais em pacotes, TOS

      “O tipo de serviço é um campo existente no cabeçalho de pacotes do protocolo ipv4 que tem a
função especificar qual é a prioridade daquele pacote. A prioridade é definida usando o algoritmo FIFO
do próprio kernel, sendo uma das alternativas de controle/priorização de tráfego das mais simples e
rápidas. 
Uma das vantagens da utilização do tipo de serviço é dar prioridade ao tráfego de pacotes interativos
(como os do ICQ, IRC, servidores de chat), etc. Com o TOS especificado, mesmo que esteja fazendo
um download consumindo toda a banda de sua interface de rede, o tráfego com prioridade interativa
será enviado antes, aumentando a eficiência do uso de serviços em sua máquina.” - Guia Foca Linux.

Antes de começar, algumas definições:

Tipo de TOS AJUSTE


Espera mínima (Minimize-delay) 16
Máximo processamento (Maximize-throughput) 8
Máxima confiança (Maximize-reability) 4
Customínimo (Minimize-cost) 2
Prioridade normal (Normal-service). 0

Prioridade máxima para conexões SSH:

iptables –t mangle –A PREROUTING –i eth1 –p tcp –-sport 22 –j TOS –-set-tos 16

iptables, adicione na tabela mangle (-t mangle) antes de ser roteado (-A PREROUTING):
• o que entrar pela interface eth1 (-i eth1) que for tcp (-p tcp) 
• com origem da porta 22 (--sport 22) dar o máximo de processamento (-j TOS –-set-tos 16)

Você deve ter notado, na regra de DNAT láaa em cima, há uma coisinha estranha (-p tcp -m tcp) –m
tcp... o que seria isto? Módulos!

Módulos

Os módulos ampliam o poder do iptables, é uma forma de explandir ainda mais suas regras, afinal, já
somos expert em iptables!

Veja alguns módulos:


TIPO DESCRIÇÃO
limit Limita o número de vezes de uma regra
state Estado da conexão, (NEW,ESTABLISHED, RELATED e INVALID “já obsoleto”)
mac Isto mesmo, podemos trabalhar por endereços MAC, bacana, não?
multiport Já pensou especificar 10 regras de tratamento de portas? O Multiport faz isto por você!
string Dá uma espiada no conteúdo do pacote em busca de uma “string”
owner Observa quem criou o pacote, trabalha apenas com a chain OUTPUT.

A opção limit limita a quantidade de vezes que a regra deve ser executada em um intervalo de


tempo, estremamente útil para trabalhar com tentativas de ataques. Ataque DoS (Denial of Service),
entende?

iptables –A INPUT –p icmp --icmp-type echo-request –m limit --limit 1/s –j ACCEPT

Definimos que aceitaremos pacotes de icmp (-p icmp) tipo do ping (--icmp-type echo-request)
se eles forem recebidos apenas no limite de um segundo (-m limit --limit 1/s). Podemos ter
s, m, h, d (segundo, minuto, hora e dia).

Certo, se eu desejar bloquear estes tipos de requisições, afinal, ninguém precisa saber se estamos
vivos ou não, a regra seria ... ?

iptables –A INPUT –p icmp –j DROP

Bloquear tudo o que entrar e que seja do tipo icmp. Esta ficou fácil, não?

Mas... Como ele controla isto, a quantidade de vezes... é memória, banco de dados?

Não, ele utiliza as flags de inicialização de um datagrama IP, elas são:

FLAG Descrição
ACK Acknowledgement. Informa ao receptor o próximo número da seqüência do pacote
SYN Syncronize. Utilizada para realizar o sincronismo dos números seqüênciais.
FIN Finalização. Flag utilizada para indicar a finalização de uma conexão
Push. Informa ao tcp que se deve enviar todos os pacotes que estejam no buffer ao
PSH
destinatário
URG Urgent. Prioridade no envio.

 
Para um melhor entendimento, veja:

- O Cliente envia um datagrama com a flag SYN, para o firewall, é uma nova conexão;
- O servidor recebe a requisição, e responde com a dupla SYN+ACK;
- Para o firewall, há uma conversa, estabilizou!

Fechamento de uma conexão:


“Imagine o que aconteceria se enviássemos vários pacotes SYN forjando a origem para um Host B,
este host B enviaria um pacote SYN+ACK de volta para o Host A e ficaria aguardando o
estabelecimento de conexão (ora se forjamos a origem, é óbvio que nunca o receberá), este é o tipo
de conexão three-way e várias requisições neste estado de ‘half-connection’ geram o famoso Syn-
flood, muitas conexões abertas aguardando um pacotinho ACK de confirmação que nunca chegará.”

A opção state trabalha com o estado da conexão:

NEW: nova conexão


ESTABLISHED: conexão já pertencente e estabilizada entre as duas pontas.
RELATED: conexão que se relaciona com um outro pacote, por exemplo mensagens de erro.
INVALID: Conexões inválidas, pacotes com problemas ou não formados corretamente.

iptables –A INPUT –m state --state INVALID –i eth1 –j DROP

Bloqueia o que entrar (-A INPUT) pela interface eth1 (-i eth1) e com estado inválido (--state
INVALID).

A opção mac permite-nos trabalhar por este tipo de endereçamento:

iptables –A INPUT –m mac --mac-source 00:50:04:EE:3D:FD –j DROP


Bloqueia o que for do endereço mac de origem (--mac-source)

A opção multiport permite-nos trabalhar com várias portas, por exemplo:

iptables -A FORWARD -p udp -m multiport --dport 5190,4000 -j DROP

Bloqueia o encaminhamento de mensagens udp das portas 5190 e 4000

iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m multiport --dports domain,ftp-


data,ftp,https,pop3,smtp,21 -j ACCEPT

Libera o encaminhamento de mensagens das portas de destino domain,ftp-


data,ftp,https,pop3,smtp,21. Uma relação de portas está disponível em /etc/services

Se você quer liberar um range de portas, pode fazer:

iptables -A INPUT -p udp -i eth+ --dport 33435:33525 -j DROP

Bloquear tudo o que for udp e que entrar por qualquer interface (-i eth+) para as portas de 33435 até
33525. Bloqueia o traceroute =)

A opção string permite-nos vasculhar o conteúdo do pacote, por exemplo, bloquear o que contém a
string Kazaa.

iptables –A INPUT –m string --string “X-Kazaa” –j DROP

Hum… vamos ver o que está acontecendo? Log nele!

iptables –A INPUT –m string --string “sexo” –j LOG --log-prefix “IPTABLES: Log da string
sexo, masculino ou feminino? =)”

Dicas

Não esqueça de sempre logar e depois bloquear, sempre liberar o chefe e depois bloquear o
restante da empresa, e assim por diante, pois o iptables irá ler suas regras de cima para baixo,
sempre.

O seu arquivo de firewall nada mais é que um “shell script”, permitindo, então você fazer:

# Redireciona VPN e TS para o PDC


PORTS=”1723 3306”
PROTOCOLOS=”tcp udp”
IFACEWEB=”eth1”
      for PORTA in $PORTS;do
            for PROTO in $PROTOCOLOS;do
                  $IPTABLES -t nat -A PREROUTING -p $PROTO -m $PROTO --dport $PORTA -i
$IFACEWEB -j DNAT --to 192.168.0.3
      done
done

Resumão

# Ativando o NAT e definindo variáveis.

echo 1 > /proc/sys/net/ipv4/ip_forward


IPTABLES=”/sbin/iptables”
LAN=”192.168.0.0/24”
IFACEWEB=”eth1”

# Apagando as regras anteriores

$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z
$IPTABLES -t filter -F
$IPTABLES -t filter -Z
$IPTABLES -t filter –X

# Configurando NAT e redirecionamento para SQUID, NINGUEM SAI PELA


# porta 80

$IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE


$IPTABLES -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
$IPTABLES -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DROP

# Liberando acesso remoto Terminal Service a uma máquina da rede. 


# Lembre-se, tudo o que entrar pela porta 7150 será redirecionado para 
# a máquina interna 192.168.0.117 na porta 3389.

$IPTABLES -t nat -A PREROUTING -p tcp -m tcp --dport 7150 -j DNAT --to 192.168.0.117:3389

# Liberando acesso a uma determinada porta de um programa especifico 


# (ERP) vindas da Filial (200.200.200.200)

$IPTABLES -A FORWARD -s 200.200.200.200 -p tcp -m tcp --dport 1494 -j ACCEPT

#Bloqueando ping com resposta unreachable

$IPTABLES -I INPUT -i $IFACEWEB -p icmp -j REJECT --reject-with icmp-host-unreachable

# Bloquear Bittorrent, ou outras portas, SQUID, Samba, DNS, etc...

$IPTABLES -I INPUT -p tcp -m tcp --dport 6881:6889 -j DROP


$IPTABLES -I OUTPUT -p tcp -m tcp --dport 6881:6889 -j DROP

# Bloquear conexões de algum programa que utilize algum destino ou 


# alguma porta de destino, KAZAA, Emule

$IPTABLES -A FORWARD -d 216.35.208.0/24 -j DROP


$IPTABLES -A FORWARD -p tcp --dport 6346 -j DROP
$IPTABLES -A FORWARD -d 209.61.186.0/24 -j DROP