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

Por: Perfil removido em 02/03/2012


Trabalhando com os Módulos String e IPrange



Módulo String

O módulo String tem a capacidade de verificar o conteúdo de um pacote, buscar na sua estrutura por uma String em particular, trabalhando de uma forma parecida com o Proxy, mas não fazendo o mesmo que o Proxy faz.

Após executar uma regra usando o módulo String, ela pode funcionar muito bem para bloquear programas que podem fazer sua rede ficar lenta.

O uso do módulo é semelhante aos outros começando com um "-m", que indica que será usado um módulo.

- Explicação de opções para usar o módulo:

I- Primeiro o nome String para o módulo que foi chamado.

II- Em seguida, temos a opção "--algo", que indica qual algorítimo será usado par buscar a String no pacote de dados.

III- Em seguida, os algoritmos que são os listados abaixo. Não explicarei como cada um trabalha, e qual o melhor a ser usado nas situações que podem vir no dia dia do trabalho, porém, deixarei links para que possam verificar como cada um trabalha:
IV- Em seguida, a opção "--string", que é usada para especificar qual String será buscada no pacote.

Obs.: Tome muito cuidado ao utilizar este módulo para não 'barrar' tráfego que queremos que passe.

- Colocando em Prática

Bloqueando o tráfego para a String Orkut:

# iptables -I FORWARD -m string --algo bm --string "orkut" -j DROP

O módulo string irá verificar no conteúdo de cada pacote, se existe a string "orkut". Caso exista, o pacote que tiver em seu conteúdo a string "orkut", será bloqueado.

Na regra abaixo, estou bloqueando o trafego para o programa "teamviewer", bem conhecido.

# iptables -I FORWARD -m string --algo bm --string "teamviewer" -j DROP
# iptables -I OUTPUT -m string --algo bm --string "teamviewer" -j DROP


Perceba que estou incluindo as regras no início de cada Chain, e não especifico os protocolos, então vale para todos. Nem especifico a porta, apenas chamo o módulo String para bloquear pacotes que contenham a String "teamviewer".

Na próxima regra, bloqueio a String "hotmail" dos pacotes trafegados.

# iptables -A OUTPUT -m string --algo bm --string "hotmail" -j DROP

Na regra acima, todos os pacotes que estiverem saindo e tiverem a String "hotmail" em seus dados serão verificados e bloqueados do pacotes trafegados.

Módulo IPrange

O módulo IPrange permite colocar Ranges (intervalos) de endereços, é necessário quando queremos colocar mais de um IP em uma regra específica.

Para este módulo, poderemos usar duas opções descritas abaixo:
  • --src-range : Esta opção é usada para especificar o Range de origem.
  • --dst-range : Esta opção é usada para especificar o Range de destino.

- Colocando em Prática

* As regras a seguir, foram inclusas em servidor de Firewall da Rede.

Na regra abaixo, vou bloquear o tráfego para o site http://www.4shared.com, para alguns endereços de origem da rede interna, supondo que a rede é: 192.168.20.0/24:

# iptables -A FORWARD -p tcp -d www.4shared.com -m iprange --src-range 192.168.20.10-192.168.20.20 -j DROP

Na regra acima, o bloqueio será feito para a faixa de IP, de: 192.168.20.10 até: 192.168.20.20.

Na próxima regra, o bloqueio será feito para o mesmo Range da regra anterior, mas para a String "facebook", e a regra será inclusa na Chain FORWARD:

# iptables -A FORWARD -m iprange --src-range 192.168.20.10-192.168.20.20 -m string --algo bm --string "facebook" -j DROP

Assim, todas as conexões que tiverem em seu conteúdo a String "facebook", será dropado.

Na regra abaixo, todos os pacotes com destino à porta 22, de todos os endereços na faixa de rede 192.168.20.0 bloqueados, com exceção '!', da faixa especificada abaixo:

# iptables -A FORWARD -p tcp -m iprange ! --dst-range 192.168.20.1-192.168.20.5 --dport 22 -j DROP

Desta forma, todos os pacotes com destino à porta 22, serão aceitos somente para: 192.168.20.1 até: 192.168.20.5. Para os outros, serão bloqueados.

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

Captive Portal Customizado

É o Linux somente para especialistas?

Introduzindo um pouco mais a fundo o shell script (revisado)

Instalando o compiz no Arch Linux

Comportamento das tecnologias WEB e seus meios de acesso

Leitura recomendada

Entendendo TCP/IP (Parte 6) - Firewall

Firewall funcional de fácil manipulação

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

L7-filter (funcionando) no Slackware 10.2

Firewall e NAT em FreeBSD com controle de banda e redirecionamento de portas e IPs

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts