IPtables - Trabalhando com Módulos

O objetivo do artigo, é mostrar como expandir o uso do IPtables usando módulos, para construir um Firewall bem elaborado e que
atenda às suas necessidades.

[ Hits: 92.694 ]

Por: Perfil removido em 02/03/2012


Trabalhando com os Módulos State e Connlimit



Módulo State

O módulo State é usado para analisar o estado dos pacotes de uma conexão. Com ele, podemos aplicar regras para proibir tráfego de dados inválidos ou permitir novas conexões, e isto é feito analisando os pacotes do trafego junto às flags TCP como SYN, ACK, FYN e etc.

Pode-se utilizar mais de um estado para análise na mesma regra separando os mesmo por vírgula. Depois de especificar a chamada do módulo "- m", devemos especificar assim como os outros, o nome do módulo que será usado "state".

As opções estão descritas abaixo:
  • NEW : Opção usada para analise de conexões que estão sendo iniciadas (novas conexões).
  • ESTABLISHED : Opção usada para análise de conexões já estabelecidas, pacotes de respostas.
  • RELATED : Opção usada para análise de pacotes de conexões existentes, como por exemplo, mensagem de erro.
  • INVALID : Está opção é utilizada quando queremos verificar quais pacotes são inválidos, ou seja, pacotes que não têm identificação com nenhuma conexão.

- Colocando em Prática

Regras aplicadas para exemplificar o uso do módulo, nestas regras, estou indicando que a interface eth0 está recebendo endereço da internet e que o endereço da rede interna é: 192.168.20.0/24.

# iptables -A OUTPUT -o eth0 -m state --state NEW -j ACCEPT
# iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "[pacotes invalidos]"
# iptables -A INPUT -m state --state INVALID -j DROP
# iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A INPUT -i eth0 -m state --state NEW -j DROP


- Explicação das regras

I- A Primeira regra: Todo tráfego que está saindo pela interface eth0 que está conecta à internet, aceita novas conexões.

II- A Segunda regra: Estou registrando todos pacotes inválidos que passam pelas interfaces de rede, pois na regra não especifiquei a interface usada na regra, então vale para todas.

Caso queira verificar os Logs com mais clareza, poderá usar o artigo: FwLogWatch - Analisando Registros do IPtables

III- A Terceira regra: Completa a segunda bloqueando todo tráfego, que de conexões que tenham pacotes inválidos ou não identificados.

IV- A Quarta regra: Aceita todos os pacotes que entram pela interface eth0 (internet), porém, que já façam parte de uma conexão já iniciada.

V- Última regra: Bloqueia todo tráfego que entra pela interface eth0, que tente fazer novas conexões com a rede interna.

Estas regras acima, são muito boas para bloquear tráfego duvidoso. Dependendo da sua necessidade, as mesmas poderiam ser usadas em servidor que compartilha a conexão com a internet, mas, caso queria usar as mesmas no seu Firewall, veja bem onde coloca, pois algumas regras acima, podem fazer com outras regras não sejam executadas com sucesso.

Módulo Connlimit

Este módulo é muito interessante, pois o mesmo pode contar a quantidade de conexões e limitar o acesso depois que o limite é excedido para conexões paralelas.

As opções usadas pelo Módulo Connlimit são duas:
  • --connlimit-above : Está opção é usada para limitar a quantidade de conexões simultâneas.
  • --connlimit-mask : Opção usada para identificar uma rede.

- Colocando em Prática

Regras aplicadas com o Módulo Connlimit:

# iptables -A INPUT -tcp --dport 80 --syn -m connlimit --connlimit-above 30 -j DROP
# iptables -A OUTPUT -p tcp --sport 21 -m connlimit --connllimit-above 10 -j DROP


- Explicação das regras:

I- Primeira regra: É aplicada a um servidor WEB, fazendo com que a mesma limite em 30 conexões simultâneas, a partir que o limite for excedido, ou seja, já tiver 30 conexões estabelecidas, a 31 por diante será bloqueada.

II- Segunda regra: É aplicada a um servidor FTP, após o número de conexões simultâneas terem excedidos o limite de 10, a próxima será bloqueada.

Para a próxima regra, tenho o seguinte cenário para explicar as regras aplicadas:
  • Rede A : 192.168.10.0/24
  • Interface da rede interna: eth0
  • Interface da rede externa: eth1
  • Rede B : 192.168.20.0/24

Onde Micros da rede B, acessam o Micro 192.168.10.248 da rede A, via SSH.

Regras executadas:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to 192.168.10.248:22
# iptables -A FORWARD -p tcp -o eth1 -d 192.168.10.248 --dport 22 -m connlimit --connlimit-above 2 -j DROP


- Explicação sobre as regras:

Nas regras acima, primeiro é feito um redirecionamento de pacotes da rede B para rede A, os pacotes que chegam à porta 22 do Host da rede A que faz o redirecionamento, são encaminhados para a porta 22 do Host de destino 192.168.10.248 da rede A.

Na segunda regra, é feito o limite de duas conexões simultâneas para o Host de destino da rede A, assim, quando já estiver duas conexões feitas, a terceira será bloqueada, pois o limite de conexões simultâneas foi excedido.
Página anterior     Próxima página

Páginas do artigo
   1. Introdução e Definição
   2. Trabalhando com os Módulos MAC e Owner
   3. Trabalhando com os Módulos String e IPrange
   4. Trabalhando com os Módulos Quota e Multiport
   5. Trabalhando com os Módulos State e Connlimit
   6. Trabalhando com os Módulos Time e Limit
   7. Trabalhando com o Módulo Recent
   8. Trabalhando com o Módulo Recent - Parte II
Outros artigos deste autor

VPN - usando SSH

ArchLinux, uma distro de expressão aqui no VOL

Configurando HD via porta USB no Linux

Backup automático em Shell Script

Os navegadores "leves" que de leves não tem nada

Leitura recomendada

Bloqueando programas P2P com iptables

Balanceamento de carga entre 2 placas de rede

Iptables - Segurança total para sua rede

Um poderoso firewall para a sua rede wireless com IP x MAC

Construindo um Firewall / Proxy com o Fedora Core 4

  
Comentários
[1] Comentário enviado por joão vous em 02/03/2012 - 20:28h

ipad 2 ele é bloqueado pela apple só que desbloquei usando o cydi
ele ficou meio lento
depois usei um emulador do windows para camuflar a rede do sistema!!!

[2] Comentário enviado por removido em 02/03/2012 - 20:36h

olá amigo joão vous,

Não entendi nada....

[3] Comentário enviado por rodrigom em 03/03/2012 - 01:38h

Boa noite;

Meu amigo, gostei muito do artigo muito bom mesmo.

Obrigado pelo conhecimento passado.

[4] Comentário enviado por hardmaster2009 em 04/03/2012 - 18:03h

Que topido rico !!! que coisa mai linda !! muito bom mesmo !!

[5] Comentário enviado por silent-man em 05/03/2012 - 08:50h

acho que o comentário da seguinte regra está errado

# iptables -A INPUT -p tcp -m string --algo bm --string "orkut" -j DROP

[]s

[6] Comentário enviado por removido em 05/03/2012 - 14:29h

Olá,

Obrigado pelos comentários

Obrigado pela observação amigo silent-man, já foi feita a correção.

abraço..

[7] Comentário enviado por xjc em 05/03/2012 - 15:16h

cara massa esse seu post muito útil vou salvar para posterior consultas. abraços

[8] Comentário enviado por ricardoolonca em 06/03/2012 - 12:17h

Parabéns, excelente artigo!

Estou escrevendo uma série de artigos sobre rede e vou começar a falar de firewall e iptables. Estava a procura de uma documentação sobre esse módulos e o teu artigo veio em ótima hora. Peço tua permissão para citá-lo em meu artigo.

Nota 10 e favorito.

[9] Comentário enviado por removido em 06/03/2012 - 12:28h

Permissão concedida,

é da série de artigo sobre TCP/IP ?

abraço..

[10] Comentário enviado por ricardoolonca em 06/03/2012 - 14:06h

Isso mesmo.

Acabei de fazer um sobre portas TCP/UDP. Nele comento sobre o netstat, nmap, telnet, essas coisas. Achei conveniente explicar esses conceitos antes de falar de firewall. Esse artigo está para ser publicado.

O próximo da série vai ser sobre firewall, mostrando conceitos e parâmetros do iptables. Um dos tópicos seria sobre módulos, mas você já me adiantou um lado.

Obrigado.

[11] Comentário enviado por rodrigom em 06/03/2012 - 16:41h



"maionesebr", quais são seus artigos pode passar os links..



Muito obrigado.

[12] Comentário enviado por ricardoolonca em 09/03/2012 - 13:55h

rodrigom,

segue o link dos meus artigos. (tem um que ainda não foi publicado).

http://www.vivaolinux.com.br/artigos/userview.php?login=maionesebr

[13] Comentário enviado por rodrigom em 09/03/2012 - 17:22h

"maionesebr", já havia lido seus artigos são muito bons, é sempre bom rever..


Abraço.

[14] Comentário enviado por phrich em 29/06/2012 - 12:36h

Bom artigo!

[15] Comentário enviado por marcelohcm em 23/08/2012 - 08:37h

como faço pra bloquear o facebook numa rede?
no caso tenho duas redes, uma liberada e a outra bloqueada...

[16] Comentário enviado por removido em 23/08/2012 - 09:25h

Recomendo para isso o squid. Mas se quer bloquear o facebook usando o IPtables pode dá uma pouquinho mais de trabalho, veja os dois links abaixo, sendo que o primeiro é uma dica aqui da VOL e o segundo é uma resposta de um tópico aqui mesmo da VOL, realmente funciona em ambas dicas:

http://www.vivaolinux.com.br/dica/Bloquear-Facebook-e-Youtube-por-HTTPS/

ou assim:

http://www.vivaolinux.com.br/topico/netfilter-iptables/BLOQUEAR-FACE?pagina=5&num_por_pagina=12

Nesse ultimo link leia a resposta número 50.

[17] Comentário enviado por sthenno em 07/06/2013 - 13:19h

muito útil mesmo o módulo state.
Posso iniciar um download e bloquear depois qualquer tentativa de início de outro sem interromper o primeiro download corrente usando a opção NEW.

[18] Comentário enviado por patrickpfp em 19/06/2013 - 11:25h

Ótimo tutorial!!!

Mas quando eu coloco essa regra:

iptables -A FORWARD -m string --algo bm --string "facebook" -m time --timestart 12:00 --timestop 13:00 -j ACCEPT


esse erro me retorna:

No chain/target/match by that name.



Poderia me ajudar?

vlw



[19] Comentário enviado por removido em 19/06/2013 - 17:07h


[18] Comentário enviado por patrickpfp em 19/06/2013 - 11:25h:

Ótimo tutorial!!!

Mas quando eu coloco essa regra:

iptables -A FORWARD -m string --algo bm --string "facebook" -m time --timestart 12:00 --timestop 13:00 -j ACCEPT

esse erro me retorna:

No chain/target/match by that name.


Poderia me ajudar?

vlw




Qual é a versão e a distro que está usando para aplicar essas regras ? pois apliquei as regras no debian e rodou.

[20] Comentário enviado por px em 10/10/2013 - 16:53h

Esse seu artigo é uma verdadeira enciclopédia sobre iptables! excelente mesmo, nota 10!

[21] Comentário enviado por ftubao em 06/03/2015 - 22:12h

Boa noite a todos !!!!

Eu estava muito feliz por achar este artigo pois na minha cabeça eu ia
resolver meu problema com o facebook aqui no trabalho, para implantar
( não saco muito de Linux ) mandei um e-mail para um " amigo" ultratop em
informática para saber sobre como eu ia colocar o algoritmo, mas, ele me
falou o seguinte;

" Cara, isso provavelmente não vai funcionar. Você nunca vai conseguir
fazer o "match" da srting porque a comunicação se dá via HTTPS. É
impossível "

Pergunto, é isso mesmo ?

[22] Comentário enviado por wagnerfs em 25/03/2015 - 00:28h

Que artigo maravilhoso! Bem explicado e elucidativo. Parabéns por compartilhar o conhecimento.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts