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.877 ]

Por: Perfil removido em 02/03/2012


Trabalhando com os Módulos MAC e Owner



Depois de uma rápida introdução, é hora de colocar a mão na massa e começar a trabalhar com os módulos, e nesta página, irei abordar o uso do módulo MAC e Owner.

Módulo MAC

O MAC é a identificação de mais baixo nível que um computador pode ter, trata-se de um endereço da placa de rede. O IPtables usa o módulo MAC para tratar os pacotes fazendo a leitura do MAC de cada pacote, e tomando decisões conforme a regra estabelecida, fazendo a checagem pelo MAC ao invés do IP do host.

Uma coisa que tem que ficar bem clara, é que o endereço de MAC só pode ser lido em uma rede local, isto acontece por que os roteadores ou computadores que fazem esta função, não transmite o MAC do computador de origem, então podemos aplicar regras específicas na rede local corporativa, ou de sua casa, baseando-se no endereço de MAC, mas nunca em comunicação entre duas redes diferentes.

A sintaxe é simples: o módulo deve ser chamado pela opção "-m" ou "--match", seguido do nome do módulo.

- Colocando em Prática

Bloqueando todo o tráfego que venha do Host da rede local, que tem o MAC 00:F3:90:03:01:BA

# iptables -A INPUT -m mac --mac-source 00:F3:90:03:01:BA -j DROP

Bloqueando o tráfego para a porta 22 do SSH, para o Host com MAC 00:F3:90:03:01:BA, sem especificar a interface e nem IP de origem:

# iptables -A INPUT -p tcp --dport 22 -m mac --mac-source 00:F3:90:03:01:BA -j DROP

Caso fosse utilizar a regra acima para um Host com esse endereço de MAC, e o mesmo estiver em uma outra rede, não iria funcionar, pois o MAC do mesmo iria ser trocado pelo MAC do roteador, ou até mesmo descartado.

Módulo Owner

O módulo Owner não é tão usado como outros, apesar de ser interessante.

O Owner é capaz de verificar o conteúdo do pacote e identificar quem é o responsável pela conexão, e a partir daí, tomar decisões conforme as regras aplicadas.

Este módulo pode ser utilizado com a Chain OUTPUT da tabela Filter.

- Colocando em Prática
  • --uid-owner : filtra pacotes em que a origem tenha sido gerada por um UID (usuário) especificado.

# iptables -A OUTPUT -p tcp --dport 80 -d www.orkut.com -m owner --uid-owner 1000 -j DROP

Esta regra acima, poderia ser usada substituindo o UID pelo nome do usuário.

# iptables -A OUTPUT -p tcp --dport 80 -d www.orkut.com -m owner --uid-owner edson -j DROP

No exemplo acima, estou bloqueando o tráfego para o destino www.orkut.com, para o usuário Edson que tem o UID 1000, e pode ser utilizado tanto o controle pelo UID como pelo nome de usuário.
  • --gid-owner: filtra pacotes em que a origem tenha sido gerada por um GID (grupo de usuários) especificado.

# iptables -A OUTPUT -m owner --gid-owner 1002 -p icmp -j REJECT

No exemplo acima, está sendo rejeitado pacotes do tipo ICMP que estejam saindo, e que foram gerados pelo GID 1002, desta forma, será enviada um mensagem ICMP de erro.

Caso queira usar o nome do grupo, poderá substituir o GID pelo nome do grupo, no exemplo abaixo, o nome do grupo é 'teste' e tem o GID 1002.

Esta regra é similar a de cima, porém, aqui se usa o nome do grupo ao invés do GID:

# iptables -A OUTPUT -m owner --gid-owner teste -p icmp -j REJECT
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

Personalizando o tema do usplash nos Ubuntu-like

Como ativar o módulo de cancelamento de ruído no Pipewire

A camada de enlace de dados

Criando um servidor de impressão para residências e pequenas empresas com Linux

LookXP-IceWM - Linux leve e com cara de XP

Leitura recomendada

Firewall/Proxy (solução completa)

Criando cluster com o PFSense

Migrando do ipchains para o iptables

Entendendo TCP/IP (Parte 6) - Firewall

Entendendo TCP/IP (Parte 5) - Portas TCP/UDP

  
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