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

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

Selecionando dados numa tabela para confecção de gráficos no oocalc

Incrementando as funções do KDE com "servicemenus"

Como fazer seu programa Kylix chamar uma aplicação externa

Faça o GNU/Linux falar as horas para você

Compiz no Debian Etch

Leitura recomendada

Iptables 1.3.4 com Layer 7 e Kernel 2.6.14 no Debian 3.1

Controlando 2 links de internet (roteados) em um gateway Linux com SQUID

Configurando firewall básico para compartilhar internet

Criando um firewall simples e compartilhando a conexão usando o IPtables

Criando DMZ com o PFSense

  
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