[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 saindo por
valores aleatórios para compensar sistemas operacionais que usam
valores previsíveis. Esta opção somente se aplica a pacotes saindo
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:
- Nenhum lado da conexão pode reduzir seu TTL IP. Isso é feito
para proteger contra um atacante enviando pacotes de forma que
cheguem ao firewall, afetem a informação de estado da conexão, e
expire antes de atingir o host de destino. O TTL de todos pacotes
é aumentado para o maior valor possível para a conexão.
- Modula timestamps TCP
RFC1323
em cabeçalhos de pacotes para um número aleatório. Isso pode
impedir um observador de deduzir a quanto tempo
a máquina está ligada ou saber quantos hosts existem atrás de
um gateway NAT.
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]
www@openbsd.org
$OpenBSD: scrub.html,v 1.3 2005/12/24 10:04:36 saad Exp $