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: 90.796 ]

Por: Perfil removido em 02/03/2012


Trabalhando com os Módulos Quota e Multiport



Módulo Quota

Quota é um módulo bem interessante que pode ser usado para limitar uma conexão a um específico endereço, com base em quotas em Bytes.

- Seu funcionamento se dá da seguinte forma:

Estabelece-se um valor específico para cota e depois de atingido este valor, os pacotes da conexão cuja regra está executando, executa a próxima regra, que pode ser com o alvo DROP ou REJECT.

Por exemplo, às vezes, não podemos bloquear o uso de um determinado serviço, por ser essencial no dia dia, porém, alguns usuários abusam do uso do mesmo. Assim podemos barrar o trafego em um servidor FTP, ou para um site que é visitado constantemente para fazer downloads e fazer um limite, conforme o administrador achar melhor.

A observação que devo fazer é que, se ao atingir o valor da cota, o próximo pacote a ser tratado pela próxima regra, caso seja bloqueado o tráfego, só será permitido novamente se "resetar" as regras.

Opções:
  • quota : O nome do módulo que será usado.
  • --quota : Opção usada para indicar o valor da quota.

- Colocando em Prática

Na primeira regra usada para se trabalhar com este módulo, a regra será aplicada a uma máquina rodando o servidor FTP. O servidor permitirá o download até atingir o tamanho de 20 MB, após atingir o valor da quota, a próxima regra será executada "dropando" todos os pacotes para a origem 192.168.20.53, que requisitou o download.

# iptables -A OUTPUT -p tcp -d 192.168.20.53 --sport 21 -m quota --quota 20971520 -j ACCEPT
# iptables -A OUTPUT -p tcp -d 192.168.20.53 --sport 21 -j DROP


Na segunda regra, será aplicada uma cota de 10 MB em uma máquina que compartilha a Net, após atingir esta cota, todo tráfego da origem www.kernel.org, será "dropado" pela regra seguinte para a rede interna, impedindo que qualquer download desse site seja feito após o bloqueio.

# iptables -A FORWARD -p tcp -s www.kernel.org -m quota --quota 10485760 -j ACCEPT
# iptables -A FORWARD -p tcp -s www.kernel.org -j DROP


Módulo Multiport

Multiport é um módulo usado para especificar várias portas de comunicação em uma regra, este módulo é de grande ajuda, principalmente quando queremos aplicar uma regra para várias portas simultaneamente, sem necessidade de aplicar uma regra por porta. Pode se aplicar para portas de origem e destino.

- Opções de uso:
  • --dports : Opção usada para especificar porta de destino ou portas de destino.
  • --sports : Opção usada para especificar porta de origem ou portas de origem.
  • --ports : Opção usada para especificar porta de origem e destino juntas.

- Colocando em Prática

Na regra a abaixo, coloco uma exceção '!', indicando que toda conexão que tiver como origem qualquer endereço de rede, com exceção do 192.168.20.0/24, com destino à porta 80 e 601, serão bloqueados.

# iptables -A INPUT -p tcp ! -s 192.168.20.0/24 -m multiport --dports 80,601 -j DROP

Na regra abaixo, vou liberar várias portas, inclusive a usada pelo Webmin para todas origens.

# iptables -A INPUT -p tcp -m multiport --dports 22,25,110,80,10000 -j ACCEPT

Na próxima regra, usarei o módulo Quota em conjunto com Multiport, fazendo com que todo tráfego das portas de origem 80 e 21, com destino ao Host 192.168.20.5, seja dropado após ultrapassar o limite de 10 MB.

# iptables -A FORWARD -p tcp -d 192.168.20.5 -m quota --quota 10485760 -m multiport --sports 80,21 -j ACCEPT
# iptables -A FORWARD -p tcp -d 192.168.20.5 -m multiport --sports 80,21 -j DROP


Podemos ainda, bloquear o tráfego externo para determinados serviços da rede, no exemplo abaixo, estou incluindo uma regra que usa a interface PPP0 de uma conexão DSL, bloqueando as portas 80, 22 do SSH e 23 Telnet.

# iptables -A INPUT -p tcp -i ppp0 -m multiport --dports 21,23,22,80 -j DROP
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

Rede mista wireless/cabo com Linux/Windows em residências e pequenas empresas

Rodando o Windows 3.1 no Linux

Configurando o monitor no SuSE 10.1

Instalando o kernel 2.6.13 pré-compilado no Slackware 10.2

Resumo LPI 102: Tópico 108 - Serviços Essenciais do Sistema

Leitura recomendada

Firewall/Proxy (solução completa)

Addon URL Filter - Filtrando URLs no seu firewall

Incremente o iptables com patch-o-matic

Firewall iptables em cinco minutos e compartilhamento de conexão

Migrando do ipchains para o iptables

  
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