[OpenBSD]

[Anterior: Opciones en Tiempo de Ejecución] [Contenidos] [Siguiente: Formación de Colas]

PF: Scrubbing: Normalización de Paquetes


Índice de Contenidos


Introducción

"Scrubbing" es la normalización de paquetes con el objetivo de que no existan ambigüedades de interpretación en el destino final del paquete. La directiva scrub también realiza el reensamblaje de paquetes fragmentados, protegiendo a algunos sistemas operativos de ciertos tipos de ataques y bloqueando los paquetes TCP que lleven una combinación no válida del indicador de TCP (véase flag). Una forma simple de la directiva scrub sería:

scrub in all

Con este ejemplo de scrub se normalizarían todos los paquetes entrantes en todas las interfaces.

Un motivo para no usar scrub en una interfaz sería que se estuviera pasando tráfico de NFS a través de PF. Algunas plataformas no OpenBSD envían (y esperan recibir) paquetes extraños, paquetes fragmentados con el bit "do not fragment" activado, y éstos son rechazados con motivo por scrub. Este problema se puede solucionar usando la opción no-df. Otro motivo para no usar scrub es que algunos juegos de jugadores múltiples tienen problemas de conexión al pasar a través de PF con la directiva scrub activada. A parte de estos casos poco usuales, el uso de scrub en todos los paquetes es una práctica muy recomendable.

La sintaxis de la directiva scrub es muy parecida a la sintaxis del filtro de paquetes, lo que facilita el uso de scrub en cierto paquetes y no en otros.

Puede verse más información sobre los principios y conceptos de scrub en el documento Network Intrusion Detection: Evasion, Traffic Normalization, and End-to-End Protocol Semantics.

Opciones

La directiva scrub acepta las siguientes opciones:
no-df
Elimina el bit "don't fragment" de la cabecera del paquete de IP. Se sabe que algunos sistemas operativos generan paquetes fragmentados con don't fragment activado. En concreto, esto es lo que ocurre con NFS. Scrub bloquea esos paquetes a menos que se especifique la opción no-df. Debido a que algunos sistemas operativos generan paquetes don't fragment con un campo de cabecera de identificación de IP nulo, se recomienda usar no-df junto con random-ip.
random-id
Sustituye el campo de identificación de IP de los paquetes salientes con valores aleatorios, para compensar la existencia de sistemas operativos que usan valores predecibles. Esta opción sólo se aplica a los paquetes salientes que no estén fragmentados después del reensamblaje opcional del paquete.
min-ttl num
Impone un Time To Live (TTL, un tiempo de vida) mínimo en cabeceras de paquetes IP.
max-mss num
Impone un Maximum Segment Size (MSS, un tamaño máximo de segmento) máximo en cabeceras de paquetes TCP.
fragment reassemble
Almacena en memoria fragmentos de paquetes entrantes y los reensambla en un paquete completo antes de pasarlos a la maquinaria de filtrado. La ventaja de esto es que las reglas de filtrado sólo tienen que tratar con paquetes completos y pueden ignorar los fragmentos. La desventaja es que necesita más memoria para almacenar temporalmente los fragmentos de los paquetes. Cuando no se especifica la opción fragment, este funcionamiento es el predeterminado. También es la única opción de fragment que funciona con NAT.
fragment crop
Provoca que se rechacen los fragmentos duplicados y que se recorten los que coincidan en parte. A diferencia de fragment reassemble, los fragmentos no se almacenan temporalmente en la memoria, sino que que se pasan en cuanto llegan.
fragment drop-ovl
Parecido a fragment crop, con la diferencia de que todos los fragmentos duplicados o que coincidan, así como cualquier fragmento correspondiente a continuación, son rechazados.
reassemble tcp
Normaliza las conexiones TCP manteniendo el estado. Cuando se usa scrub reassemble tcp, no se puede especificar una dirección (entrante/saliente). Lleva a cabo las siguientes normalizaciones en el paquete:

Ejemplos:

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: Opciones en Tiempo de Ejecución] [Contenidos] [Siguiente: Formación de Colas]


[Índice] www@openbsd.org
Originally [OpenBSD: scrub.html,v 1.8 ]
$OpenBSD: scrub.html,v 1.8 2004/01/04 22:29:12 horacio Exp $
$Translation: scrub.html,v 1.9 2004/01/04 21:32:07 horacio Exp $