Um pouco sobre IPtables

IPtables é um firewall a nível de pacotes e funciona baseado no endereço/porta de origem/destino do pacote, prioridade etc. Ele funciona através da comparação de regras para saber se um pacote tem ou não permissão para passar. Em firewalls mais restritivos, o pacote é bloqueado e registrado para que o administrador do sistema tenha conhecimento sobre o que está acontecendo em seu sistema.

[ Hits: 63.527 ]

Por: Douglas Q. dos Santos em 08/12/2012 | Blog: http://wiki.douglasqsantos.com.br


Deletando e substituindo regra



Deletando uma regra

"-D" ou "--delete" → Esta ação deleta uma regra no controle do firewall pelo número definido.

Vamos ver um exemplo do uso da ação "-D", na regra abaixo vamos remover a linha 2 na chain INPUT:

# iptables -t filter -D INPUT 2

Agora, vamos listar as regras novamente para verificar se foi excluída a linha 2 da chain INPUT:

# iptables -L INPUT -n --line-numbers
Chain INPUT (policy ACCEPT)
num  target   prot opt source        destination
1    DROP     tcp  --  0.0.0.0/0   0.0.0.0/0    tcp dpt:22
2    ACCEPT   tcp  --  0.0.0.0/0   0.0.0.0/0    tcp dpt:22

Vamos efetuar um teste e tentar remover uma regra sem especificar o número:

# iptables -t filter -D INPUT
iptables: Bad rule (does a matching rule exist in that chain?).

Como pode ser notado, recebemos um erro, pois o IPtables não reconheceu o número da regra, agora vamos tentar excluir a regra 1 e 2 com apenas um comando:

# iptables -t filter -D INPUT 1,2
iptables v1.4.10: Invalid rule number `1,2'
Try `iptables -h' or 'iptables --help' for more information.
Não conseguimos utilizando vírgula, vamos tentar utilizar o hífen:

# iptables -t filter -D INPUT 1-2
iptables v1.4.10: Invalid rule number `1-2'
Try `iptables -h' or 'iptables --help' for more information.
Como pode ser notado, não podemos remover mais de uma regra da chain com a ação "-D".

Substituindo uma regra

"-R" ou "--replace" → Esta ação substitui uma regra no controle do firewall pelo número definido.

Vamos ver um exemplo de substituição de regra.

Vamos criar uma regra como exemplo, pense que o gerente pediu para criar um regra para liberar o acesso Web. Vamos lá então:

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Agora vamos listar as regras para verificarmos se a regra foi inserida no controle do firewall:

# iptables -L INPUT -n --line-number
Chain INPUT (policy ACCEPT)
num  target   prot opt source         destination
1    DROP     tcp  --  0.0.0.0/0     0.0.0.0/0   tcp dpt:22
2    ACCEPT   tcp  --  0.0.0.0/0     0.0.0.0/0   tcp dpt:22
3    ACCEPT   tcp  --  0.0.0.0/0     0.0.0.0/0   tcp dpt:80

A nossa regra está lá. Passamos para o gerente testar e o mesmo acabou de se lembrar que o acesso é com criptografia, ou seja, está trabalhando em HTTPS na porta 443, e nós liberamos a porta 80. Então, vamos trocar a nossa regra:

# iptables -t filter -R INPUT 3 -p tcp --dport 443 -j ACCEPT

Agora vamos listar as regras novamente para verificar se as regras foram inseridas no controle do firewall:

# iptables -L INPUT -n --line-number
Chain INPUT (policy ACCEPT)
num  target   prot opt source        destination
1    DROP     tcp  --  0.0.0.0/0    0.0.0.0/0   tcp dpt:22
2    ACCEPT   tcp  --  0.0.0.0/0    0.0.0.0/0   tcp dpt:22
3    ACCEPT   tcp  --  0.0.0.0/0    0.0.0.0/0   tcp dpt:443

Como pode ser notado, fizemos a substituição da regra 3 com sucesso.

Página anterior     Próxima página

Páginas do artigo
   1. Um pouco de história
   2. Adicionando e inserindo regras
   3. Deletando e substituindo regra
   4. Listando e limpando regras
   5. Zerando contadores - Criando chain
   6. Renomeando e deletando chain - Política default
   7. Opções e parâmetros do IPtables
   8. Ações padrões
   9. Usando o IPtables
   10. NAT
   11. Utilizando MASQUERADING
Outros artigos deste autor

Apache em chroot + MySQL + PHP + mod_security + mod_evasive + vsftpd + Fail2ban + Debian Squeeze

Bonding para Heartbeat + Bonding para DRBD + OCFS2 + Debian Squeeze

Bind9 em chroot no Debian Lenny

Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

Bind9 slave em chroot no Debian Lenny

Leitura recomendada

IPCop Firewall - Uma ótima opção de proteção para sua rede ADSL

Iptables 1.3.4 com Layer 7 e Kernel 2.6.14 no Debian 3.1

Instalação do Layer7 no Debian Etch

Firewall/Proxy (solução completa)

Dominando o iptables (parte 1)

  
Comentários
[1] Comentário enviado por fabio em 08/12/2012 - 10:39h

Se esse aqui é "Um pouco sobre IPtables", fico imaginando como seria o artigo "Um muito sobre IPtables" :)

Meus parabéns, ótimo artigo!

[2] Comentário enviado por douglas_dksh em 10/12/2012 - 13:12h

Obrigado,

O pior que isso ai é a base para poder se virar com o iptables.

Tem muito mais que pode ser abordado :D

[3] Comentário enviado por removido em 10/12/2012 - 17:08h

Realmente @fabio, fico imaginando também. Está ótimo o artigo.

['s]

[4] Comentário enviado por phrich em 10/12/2012 - 19:16h

Muito bom o artigo, está de parabéns!

[5] Comentário enviado por thyagobrasileiro em 11/12/2012 - 10:19h

PQP, seu blog é do caralh$#$@#@#%@

Bem organizado e aborda tudo, bem limpo e sem propagandas!!!
http://www.douglas.wiki.br


Otimo artigo!!

[6] Comentário enviado por douglas_dksh em 11/12/2012 - 11:31h

Obrigado galera :D

[7] Comentário enviado por dalveson em 11/12/2012 - 13:03h

douglashx otimo artigo,
veja se vc poderia me da uma ajuda, tenho o seguinte:
meu sistema é web e tem o ip 1.2.3.4 e roda porta 443, queria utilizar o modulos TOS junto com MANGLE para dar prioridade a este ip antes de qualquer outra conexao na minha rede 192.168.0.0/24 para upload e download sabe dizer como faço isso pois ja tentei, pesquisei bastante e ainda nao consegui
abraços

[8] Comentário enviado por douglas_dksh em 11/12/2012 - 13:41h

E ai colega,

Tipo de Prioridade TOS

Espera Mínima 0×10 ou 16
Máximo Processamento 0×08 ou 8
Máxima Confiança 0×04 ou 4
Custo Mínimo 0×02 ou 2
Prioridade Normal 0×00 ou 0

Conforme tabela acima, a Espera mínima tem a maior prioridade entre todos,

Se o servidor web estiver virado direto para a internet você pode fazer da seguinte forma

#Para Liberar o acesso na porta 443 com Máximo Processamento na entrada
iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TOS --set-tos 8

#Para Liberar o acesso na porta 443 com Máximo Processamento na saída
iptables -t mangle -A POSTROUTING -p tcp --dport 443 -j TOS --set-tos 8


#Se o servidor web estiver atras de um fw no fw tem que configurar da seguinte forma

#Para Liberar o acesso de origem da maquina 1.2.3.4 na porta 443 com Máximo Processamento
iptables -t mangle -A FORWARD -p tcp --dport 443 -s 1.2.3.4 -j TOS --set-tos 8

#Para Liberar o acesso de destino a maquina 1.2.3.4 na porta 443 com Máximo Processamento
iptables -t mangle -A FORWARD -p tcp --dport 443 -d 1.2.3.4 -j TOS --set-tos 8


Caso você queira utilizar a espera miníma troque o --set-tos 8 por --set-tos 10


[9] Comentário enviado por andrericsouza em 11/12/2012 - 13:50h

ótimo artigo

[10] Comentário enviado por dalveson em 11/12/2012 - 15:12h


[8] Comentário enviado por douglashx em 11/12/2012 - 13:41h:

E ai colega,

Tipo de Prioridade TOS

Espera Mínima 0×10 ou 16
Máximo Processamento 0×08 ou 8
Máxima Confiança 0×04 ou 4
Custo Mínimo 0×02 ou 2
Prioridade Normal 0×00 ou 0

Conforme tabela acima, a Espera mínima tem a maior prioridade entre todos,

Se o servidor web estiver virado direto para a internet você pode fazer da seguinte forma

#Para Liberar o acesso na porta 443 com Máximo Processamento na entrada
iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TOS --set-tos 8

#Para Liberar o acesso na porta 443 com Máximo Processamento na saída
iptables -t mangle -A POSTROUTING -p tcp --dport 443 -j TOS --set-tos 8


#Se o servidor web estiver atras de um fw no fw tem que configurar da seguinte forma

#Para Liberar o acesso de origem da maquina 1.2.3.4 na porta 443 com Máximo Processamento
iptables -t mangle -A FORWARD -p tcp --dport 443 -s 1.2.3.4 -j TOS --set-tos 8

#Para Liberar o acesso de destino a maquina 1.2.3.4 na porta 443 com Máximo Processamento
iptables -t mangle -A FORWARD -p tcp --dport 443 -d 1.2.3.4 -j TOS --set-tos 8


Caso você queira utilizar a espera miníma troque o --set-tos 8 por --set-tos 10



*na realidade o servidor 1.2.3.4 nao ta minha rede interna, esta em 1 cidade diferente, entao bastaria eu usar?
#Para Liberar o acesso de origem da maquina 1.2.3.4 na porta 443 com Máximo Processamento
iptables -t mangle -A FORWARD -p tcp --dport 443 -s 1.2.3.4 -j TOS --set-tos 8

#Para Liberar o acesso de destino a maquina 1.2.3.4 na porta 443 com Máximo Processamento
iptables -t mangle -A FORWARD -p tcp --dport 443 -d 1.2.3.4 -j TOS --set-tos 8

*outra coisa, não é necessario fazer referencia a chain INPUT o OUTPUT tambem?

*outra duvida se eu quero que o sistema com ip 1.2.3.4 me de respostas mais rapidas aos usuarios, eu devo configura-lo com qual dos parametros TOS:
Espera Mínima 0×10 ou 16
Máximo Processamento 0×08 ou 8

*e a ultima duvida como voce faz para saber que realmente o ip 1.2.3.4 esta com o TOS configurado corretamente?
aqui eu criava uma regra de log e começava a monitorar com cat e sempre me mostrava um TOS diferente do que eu tinha configurado, por isso sempre achei que tinha algo errado.

[11] Comentário enviado por douglas_dksh em 11/12/2012 - 15:32h

Você usaria com o FORWARD

e liberaria as regras na tabela filter para o FORWARD desse servidor de origem e destino, pois INPUT seria se fosse no servidor local, e OUTPUT saida do servidor local com isso você vai precisar somente da FORWARD para repasse.

iptables -t filter -A FORWARD -p tcp --dport 443 -d 1.2.3.4 -j TOS --set-tos 8

dai a regra de mangle para priorizar os pacotes

iptables -t mangle -A FORWARD -p tcp --dport 443 -d 1.2.3.4 -j TOS --set-tos 8

A espera mínima o seu pacote vai entrar logo em processamento mais não vai ter prioridade de processamento sobre os outros, no 8 temos o processamento máximo possível.

Para saber se está configurado certo mande listar com as flags vão aparecer em hexadecimal.
iptables -t mangle -L -n -v

[12] Comentário enviado por danilotm em 12/12/2012 - 11:17h

Parabéns Douglas, agora que voltarei a utilizar o IPTABLES que tanto gostava me deparo com este artigo, muito bem explicado e organizado.
Obrigado e um grande abraço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts