[OpenBSD]

[Anterior: Opções em Tempo de Execução] [Conteúdo] [Próximo: Âncoras]

PF: Scrub (Normalização de Pacotes)


Conteúdo


Introdução

"Scrubbing" é o processo de normalização de pacotes, para que não haja ambiguidades na interpretação pelo destino final do pacote. A diretiva scrub também remonta pacotes fragmentados, protegendo alguns sistemas operacionais de algumas formas de ataque, e descarta pacotes TCP que possuam combinações de flag inválidas. Uma forma simples de uso da diretiva scrub:
scrub in all

É válida para todos pacotes chegando em todas interfaces.

Uma razão para não fazer scrub numa interface é no caso de haver tráfego NFS atravessando-a. Algumas plataformas não-OpenBSD enviam (e esperam) pacotes estranhos -- pacotes fragmentados com o bit "do not fragment" marcado, que são (devidamente) rejeitados pelo scrub. Isso pode ser resolvido através do uso da opção no-df. Outra razão é que alguns jogos multiplayer apresentam problemas de conexão ao passar por um firewall PF com scrub ativado. Fora estes casos, o uso de scrub em todos pacotes é prática altamente recomendada.

A sintaxe da diretiva scrub é muito similar à sintaxe das regras de filtragem, o que torna fácil usar scrub de maneira seletiva em alguns tipos de pacotes e outros não. A palavra-chave no pode ser usada na frente de scrub para especificar que pacotes não devem passar por scrub. Assim como regras nat, a primeira regra que casar vence.

Mais informações sobre os princípios e conceitos de scrub podem ser encontradas no documento Network Intrusion Detection: Evasion, Traffic Normalization, and End-to-End Protocol Semantics.

Opções

Scrub possui as seguintes opções:
no-df
Limpa o bit don't fragment no cabeçaho IP do pacote. Alguns sistemas operacionais são conhecidos por gerar pacotes fragmentados com o bit don't fragment setado. Isso é particularmente verdadeiro no NFS. Scrub irá descartar esses pacotes a não ser que a opção no-df seja especificada. Pelo fato de alguns sistemas operacionais gerarem pacotes don't fragment com campo de identificação IP zero no cabeçalho, é recomendado o uso de no-df em conjunto com random-id.
random-id
Substitui o campo de identificação IP de pacotes com valores aleatórios para compensar sistemas operacionais que usam valores previsíveis. Esta opção somente se aplica a pacotes que não são fragmentados após a reconstrução de pacotes opcional.
min-ttl num
Força um valor mínimo de Time To Live (TTL) nos cabeçalhos de pacotes IP.
max-mss num
Força tamanho máximo para Maximum Segment Size (MSS) nos cabeçalhos de pacotes TCP.
fragment reassemble
Armazena em buffer, pacotes fragmentados que chegam e os reconstrói em pacotes completos antes de passa-los para o sistema de filtragem. A vantagem é que regras de filtragem devem lidar apenas com pacotes completos, ignorando fragmentos. A desvantagem é o aumento do uso de memória para armazenar os fragmentos. Este é o comportamento padrão quando nenhuma opção fragment for especificada. Esta também é a única opção fragment que funciona com NAT.
fragment crop
Descarta fragmentos duplicados e elimina sobreposições. Diferentemente de fragment reassemble, os fragmentos não são armazenados em buffer, mas passados adiante assim que chegam.
fragment drop-ovl
Similar a fragment crop exceto que fragmentos duplicados e sobrepostos serão descartados assim como quaisquer fragmentos subsequentes.
reassemble tcp
Normaliza conexões TCP dinamicamente. Ao usar scrub reassemble tcp uma direção (in/out) não deve ser especificada. As seguintes normalizações são realizadas:

Exemplos:

scrub in on fxp0 all fragment reassemble min-ttl 15 max-mss 1400
scrub in on fxp0 all no-df
scrub    on fxp0 all reassemble tcp

[Anterior: Opções em Tempo de Execução] [Conteúdo] [Próximo: Âncoras]


[voltar] www@openbsd.org
$OpenBSD: scrub.html,v 1.5 2007/12/01 10:39:11 tobias Exp $