Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Arch Linux & KDE 4.4.5
Por sandrosfc
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Filtro de conteúdo com iptables
Linux user
Publicado por Carlos Affonso Henriques. em 12/09/2007

Login: capitainkurn, 584012 pontos | Blog: http://www.ahenriques.eti.br
[ Hits: 5375 ]

Filtro de conteúdo com iptables

No kernel 2.6.18 em diante foram incluídos vários módulos no ramo NetFilter e um deles é o xt_string, que é usado para fazer filtragens por palavras-chave. Sua aplicação é muito simples e pode ser aplicado em todas as chains do iptables.

Vamos à sua sintaxe:

[chain|tabela] -m string --algo kmp --string "[palavra-chave]" [alvo]

Onde:
  • --algo: é o algoritimo empregado para o rastreamenteo de palavras chave que pode ser:
    • bm: Boyer-Moore;
    • kmp: Knuth-Pratt-Morris.
    Referem-se aos autores do algoritmo

Exemplo:

# iptables -I OUTPUT -o ppp0 \
   -m string --algo kmp --string "google.com" -j DROP


O xt_string ainda permite que você identifique em que parte do pacote aplicar o filtro com os parâmetros --from e --to, embora estas opções somente serão usadas se você tiver conhecimento profundo acerca do pacote que deseja aplicar o filtro. Esta funcionalidade é muito útil especialmente por delimitar uma faixa onde o filtro irá buscar a palavra chave em um datagrama, o que acelera muito o processo.

Exemplo:

# iptables -I OUTPUT -o ppp0 \
   -m string --algo kmp --from 1 --to 8192 \
   --string "google.com" -j DROP


A regra acima determina que somente seja bloqueada a string google.com que se situe entre o bit 1 e 8192 inclusive em um datagrama. Caso não sejam especificados os valores de --from e --to o módulo aplica os valores 0 (zero) e 65535, respectivamente.

O parâmetro --hex-string é usado quando se deseja aplicar o filtro sob uma notação hexadecimal. Exemplo:

# iptables -I OUTPUT -o ppp0 \
   -m string --algo kmp --from 32768 --to 65535 \
   --hex-string "FFF" -j DROP



Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada debsecan - Analisador de segurança do Debian
   Dica Linux recomendada Monitorando hora de desligamento de servidores Linux
   Dica Linux recomendada Impedindo acesso via modo single no LiLo
   Dica Linux recomendada Que porta é essa? Identificando porta estranha no Linux
   Dica Linux recomendada Usando o FireFox para descobrir sites fraudulentos

Comentários
[1] Comentário enviado por andersonjackson em 12/09/2007 - 15:53h:

Pense em uma dica boa..

Parabéns..

Um forte abraço.

[2] Comentário enviado por bjaraujo em 12/09/2007 - 19:59h:

Valeu cara. Se puder me tire uma dúvida. Esse filtro só funciona em OUTPUT ou FORWARD e PREROUTING tb? No modo hex eu poderia filtrar até mesmo protocolos néh? Obrigado.

[3] Comentário enviado por elgio em 12/09/2007 - 21:48h:

Normalmente sou crítico a "artigos" que deveriam ser dicas...
Mas esta dica, com um pouquinho mais de conteúdo, seria um excelente artigo!!

Só faço algumas considerações (NÃO CRÍTICAS)

- considerar que em máquinas que são roteadores de rede com grande largura de banda isto poder virar um gargalo

- considerar que o filtro não é perfeito, pois atua sobre um único datagrama IP. Se a palavra "google" (do exemplo) ficou quebrada em dois datagramas, um que foi somente até "goo" e o outro com o "gle" o filtro não vai falhar. Alguem que saiba disso pode preparar pacotes que passem pelo filtro.

Segurança perfeita não existe.
:-D


[4] Comentário enviado por capitainkurn em 13/09/2007 - 07:27h:

Elgio, também penso como você, mas geralmente posto artigos tirados de cenários reais ou quando não são, gasto um tempo para elabora-los pois não acho legal postar um artigo que "não funciona". Como eu não fiz nada que requeresse o filtro em questão em um contexto mais elaborado preferí não me esticar, e deixar o tema como curiosidade.
Obrigado, fico feliz que tenha gostado da dica.

[5] Comentário enviado por capitainkurn em 13/09/2007 - 07:36h:

Bruno, até onde constatei ele funciona em qualquer chain do Iptables, e certamente tem capacidade de filrar protocolos como MSN por exemplo, mas o mais interessante do filtro é que você pode especificar excessões podendo por exemplo permitir que só se possa conversar com determinados contatos do MSN. Deverei brevemente fazer um projeto neste sentido, pois a empresa quer que os funcionários somente conversem com clientes, fornecedores, filiais etc. E o L7 filter não resolve isso.

[6] Comentário enviado por wleao em 11/11/2007 - 00:35h:

Como funciona esta regra de liberação do vnc ?

$IPTABLE -I FORWARD -p tcp -m string --string "VER" --from 51 --to 56 --algo bm -j ACCEPT

Como posso traduzir o que ela faz?

Eu consegui apenas entender que ele esta inserindo uma regra de liberação onde os dados são redirecionados para outra interface de rede ou outra maquina. No entanto o que significar --from 51 --to 56 e o "VER" entre aspas ?


[7] Comentário enviado por capitainkurn em 11/11/2007 - 11:38h:

O exemplo que você citou seria o seguinte:
O netfilter somente deixa passar pela cadeia FORWARD pacotes tcp que possuam a string VER que situem-se entre os bits 51 e 56 de um datagrama empregando o algoritmo de busca Boyer-Moore (autores do algoritmo)


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.