Filtro de conteúdo com iptables
Dica publicada em Linux / Segurança
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:
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
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.
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
Parabéns..
Um forte abraço.