Guía de administración del sistema: servicios IP

Conjuntos de reglas del filtro IP de Oracle Solaris

Para administrar el cortafuegos, utilice el filtro IP de Oracle Solaris para especificar los conjuntos de reglas que se utilizarán para filtrar el tráfico de red. Puede crear los siguientes tipos de conjuntos de reglas:

Asimismo, puede crear agrupaciones de direcciones para hacer referencia a grupos de direcciones IP. Estas agrupaciones podrán utilizarse más adelante en un conjunto de reglas. Las agrupaciones de direcciones aceleran el procesamiento de reglas. Asimismo, facilitan la administración de agrupaciones de direcciones de gran tamaño.

Uso de la función de filtros de paquetes del filtro IP de Oracle Solaris

Los filtros de paquetes se configuran con los conjuntos de reglas de filtros de paquetes. Utilice el comando ipf para trabajar con conjuntos de reglas de filtros de paquetes. Para obtener más información sobre el comando ipf, consulte el comando ipf(1M).

Puede crear reglas de filtros de paquetes en la línea de comandos, utilizando el comando ipf, o en un archivo de configuración de filtros de paquetes. Si desea que las reglas de filtros de paquetes se carguen durante el inicio, cree un archivo de configuración denominado /etc/ipf/ipf.conf en el que colocar las reglas de filtros de paquetes. Si no desea que las reglas de filtros de paquetes se carguen durante el inicio, coloque el archivo ipf.conf en la ubicación que prefiera y active manualmente los filtros de paquetes utilizando el comando ipf.

Puede mantener dos conjuntos de reglas de filtros de paquetes con el filtro IP de Oracle Solaris: el conjunto de reglas activo y el conjunto de reglas inactivo. En la mayoría de los casos, se trabaja con el conjunto de reglas activo. Sin embargo, el comando ipf -I permite aplicar la acción del comando a la lista de reglas inactivas. El filtro IP de Oracle Solaris no utiliza la lista de reglas inactivas a menos que lo seleccione. La lista de reglas inactivas es un lugar donde guardar las reglas para que no afecten a los filtros de paquetes activos.

El filtro IP de Oracle Solaris procesa las reglas desde el principio de la lista de reglas configuradas hasta el final, antes de transferir o bloquear un paquete. El filtro IP de Oracle Solaris incluye un indicador que determina si se transferirá un paquete. Se aplica a todo el conjunto de reglas y determina si se pasará o bloqueará el paquete basándose en la última regla coincidente.

Existen dos excepciones para este proceso. La primera tiene lugar si el paquete coincide con una regla que contenga la palabra clave quick. Si una regla incluye la palabra clave quick, se lleva a cabo la acción de dicha regla y no se comprueban las reglas subsiguientes. La segunda excepción se produce si el paquete coincide con una regla que contenga la palabra clave group. Si un paquete coincide con un grupo, sólo se comprueban las reglas etiquetadas con el grupo.

Configuración de reglas de filtros de paquetes

Utilice la sintaxis siguiente para crear reglas de filtros de paquetes:

acción [in|out] opción palabra clave, palabra clave...

  1. Cada regla empieza por una acción. El filtro IP de Oracle Solaris aplica la acción al paquete si éste coincide con la regla. La lista siguiente incluye las acciones utilizadas comúnmente que se aplican a un paquete.

    block

    Impide que el paquete se transfiera a través del filtro.

    pass

    Permite que el paquete se transfiera a través del filtro.

    log

    Registra el paquete pero no determina si se bloquea o se transfiere. Utilice el comando ipmon para ver el registro.

    count

    Incluye el paquete en las estadísticas de filtro. Utilice el comando ipfstat para ver las estadísticas.

    skip número

    Hace que el filtro omita número reglas de filtros.

    auth

    Solicita la autenticación de paquetes por parte de un programa de usuario que valida la información de paquetes. El programa determina si el paquete se transferirá o se bloqueará.

    preauth

    Solicita que el filtro consulte una lista autenticada previamente para determinar la acción que se llevará a cabo con el paquete.

  2. Según la acción que se lleve a cabo, la siguiente palabra debe ser in o out. Su elección determina si la regla de filtro de paquetes se aplica a un paquete entrante o saliente.

  3. A continuación, puede elegir en una lista de opciones. Si utiliza más de una opción, debe hacerlo en el orden siguiente.

    log

    Registra el paquete si la regla es la última regla coincidente. Utilice el comando ipmon para ver el registro.

    quick

    Ejecuta la regla que contiene la opción quick si hay coincidencia de paquetes. Se detiene cualquier comprobación de reglas adicional.

    on nombre_interfaz

    Aplica la regla sólo si el paquete se transfiere a la interfaz especificada o desde ella.

    dup-to nombre_interfaz

    Copia el paquete y envía el duplicado de nombre_interfaz a una dirección IP especificada opcionalmente.

    to nombre_interfaz

    Transfiere el paquete a una cola de salida en nombre_interfaz.

  4. Una vez especificadas las opciones, puede elegir entre varias palabras clave que determinan si el paquete coincide con la regla. Las siguientes palabras clave deben utilizarse en el orden que se indica.


    Nota –

    De modo predeterminado, cualquier paquete que no coincida con ninguna regla en el archivo de configuración se transfiere a través del filtro.


    tos

    Filtra el paquete basándose en el valor de tipo de servicio expresado como entero decimal o hexadecimal.

    ttl

    Hace coincidir el paquete basándose en su valor de tiempo de vida. El valor de tiempo de vida que se guarda en un paquete indica el tiempo que puede permanecer un paquete en la red antes de que se descarte.

    proto

    Coincide con un protocolo específico. Puede utilizar cualquier nombre de protocolo especificado en el archivo /etc/protocols, o utilizar un número decimal para representar el protocolo. La palabra clave tcp/udp se puede utilizar para hacer coincidir un paquete TCP o UDP.

    from/to/all/ any

    Hace coincidir cualquiera o todos los elementos siguientes: la dirección IP de origen, la dirección IP de destino y el número de puerto. La palabra clave all se utiliza para aceptar paquetes de todos los orígenes y con todos los destinos.

    with

    Hace coincidir los atributos especificados asociados con el paquete. Inserte las palabras not o no delante de la palabra clave para que el paquete coincida sólo si no está presente la opción.

    flags

    Se utiliza para que TCP filtra basándose en los indicadores TCP configurados. Para obtener más información sobre los indicadores TCP, consulte la página del comando man ipf(4).

    icmp-type

    Filtra de acuerdo con el tipo de ICMP. Esta palabra clave sólo se utiliza cuando la opción proto se configura como icmp y no se utiliza si se usa la opción flags.

    keep opciones_guardado

    Determina la información que se guarda para un paquete. Las opciones_guardado disponibles incluyen las opciones state y frags. La opción state guarda información sobre la sesión y se puede guardar en paquetes TCP, UDP e ICMP. La opción frags guarda información sobre los fragmentos de paquetes y la aplica a fragmentos posteriores. opciones_guardado permite la transferencia de los paquetes coincidentes sin pasar por la lista de control de acceso.

    head número

    Crea un grupo para las reglas de filtros, que se indica mediante el número número.

    group número

    Agrega la regla al número de grupo número en lugar de agregarla al grupo predeterminado. Todas las reglas de filtros se colocan en el grupo 0 si no se especifica otro.

El ejemplo siguiente ilustra cómo agrupar la sintaxis de reglas de filtros de paquetes para crear una regla. Para bloquear el tráfico entrante de la dirección IP 192.168.0.0/16, debe incluir la siguiente regla en la lista:


block in quick from 192.168.0.0/16 to any

Para ver la gramática y sintaxis completa que se utiliza para escribir reglas de filtros de paquetes, consulte la página del comando man ipf(4) Para conocer las tareas asociadas con los filtros de paquetes, consulte Administración de conjuntos de reglas de filtros de paquetes para el filtro IP de Oracle Solaris. Para ver una explicación del esquema de direcciones IP (192.168.0.0/16) de este ejemplo, consulte el Capítulo 2Planificación de la red TCP/IP (tareas).

Uso de la función NAT del filtro IP de Oracle Solaris

NAT establece las reglas de asignación que traducen las direcciones IP de origen y destino en otras direcciones de Internet o intranet. Estas reglas modifican las direcciones de origen y destino de los paquetes IP entrantes o salientes y envían los paquetes. También puede utilizar NAT para redirigir el tráfico de un puerto a otro. NAT mantiene la integridad del paquete durante cualquier modificación o redirección que se lleve a cabo en el paquete.

Utilice el comando ipnat para trabajar con listas de reglas NAT. Para obtener más información sobre el comando ipnat, consulte el comando ipnat(1M).

Puede crear reglas NAT en la línea de comandos, utilizando el comando ipnat, o en un archivo de configuración de NAT. Las reglas de configuración de NAT residen en el archivo ipnat.conf. Si desea que las reglas NAT se carguen durante el inicio, cree un archivo denominado /etc/ipf/ipnat.conf en el que colocar las reglas NAT. Si no desea que las reglas NAT se carguen durante el inicio, coloque el archivo ipnat.conf en la ubicación que prefiera y active manualmente los filtros de paquetes utilizando el comando ipnat.

Configuración de reglas NAT

La sintaxis siguiente permite crear reglas NAT:

comando nombre_interfaz parámetros

  1. Cada regla empieza con uno de los comandos siguientes:

    map

    Asigna una red o dirección IP a otra red o dirección IP en un proceso por turnos.

    rdr

    Redirige los paquetes de una dirección IP y un par de puertos a otra dirección IP y otro par de puertos.

    bimap

    Establece una NAT bidireccional entre una dirección IP externa y una dirección IP interna.

    map-block

    Establece una traducción basada en una dirección IP estática. Este comando se basa en un algoritmo que fuerza la traducción de las direcciones en un intervalo de destino.

  2. Después del comando, la siguiente palabra es el nombre de la interfaz, por ejemplo hme0.

  3. A continuación, puede elegir entre una serie de parámetros, que determinan la configuración de NAT. Algunos de los parámetros son:

    ipmask

    Designa la máscara de red.

    dstipmask

    Designa la dirección a la que se traduce ipmask.

    mapport

    Designa los protocolos tcp, udp o tcp/udp, junto con una serie de números de puerto.

El ejemplo siguiente muestra cómo agrupar la sintaxis de reglas NAT para crear una regla NAT. Para volver a escribir un paquete saliente en el dispositivo de0 con una dirección de origen de 192.168.1.0/24 y mostrar externamente su dirección de origen como 10.1.0.0/16, debe incluir la siguiente regla en el conjunto de reglas NAT:


map de0 192.168.1.0/24 -> 10.1.0.0/16

Para ver la gramática y sintaxis completa que se utilizan para escribir las reglas NAT, consulta la página del comando man ipnat(4).

Uso de la función de agrupaciones de direcciones del filtro IP de Oracle Solaris

Las agrupaciones de direcciones establecen una única referencia que se utiliza para asignar un nombre a un grupo de pares de direcciones/máscaras de red. Las agrupaciones de direcciones proporcionan los procesos para reducir el tiempo necesario para hacer coincidir las direcciones IP con las reglas. Asimismo, facilitan la administración de grupos de direcciones de gran tamaño.

Las reglas de configuración de agrupaciones de direcciones residen en el archivo ippool.conf. Si desea que las reglas de agrupaciones de direcciones se carguen durante el inicio, cree un archivo denominado /etc/ipf/ippool.conf en el que colocar las reglas de agrupaciones de direcciones. Si no desea que las reglas de agrupaciones de direcciones se carguen durante el inicio, coloque el archivo ippool.conf en la ubicación que prefiera y active manualmente los filtros de paquetes con el comando ippool.

Configuración de agrupaciones de direcciones

Utilice la sintaxis siguiente para crear una agrupación de direcciones:


table role = role-name type = storage-format number = reference-number
table

Define la referencia para las diferentes direcciones.

role

Especifica el rol de la agrupación en el filtro IP de Oracle Solaris. En este punto, el único rol al que se puede hacer referencia es ipf.

type

Especifica el formato de almacenamiento de la agrupación.

number

Especifica el número de referencia que utiliza la regla de filtros.

Por ejemplo, para hacer referencia al grupo de direcciones 10.1.1.1 y 10.1.1.2 y la red 192.16.1.0 como número de agrupación 13, debe incluir la siguiente regla en el archivo de configuración de agrupaciones de direcciones:

table role = ipf type = tree number = 13 
{ 10.1.1.1/32, 10.1.1.2/32, 192.168.1.0/24 };

A continuación, para hacer referencia al número de agrupación 13 en una regla de filtros, debe estructurar la regla de un modo similar al siguiente:


pass in from pool/13 to any

Observe que debe cargar el archivo de agrupaciones antes de cargar el archivo de reglas que contiene una referencia a la agrupación. Si no lo hace, la agrupación no estará definida, como en el ejemplo siguiente:


# ipfstat -io
empty list for ipfilter(out)
block in from pool/13(!) to any

Aunque agregue la agrupación más adelante, no se actualizará el conjunto de reglas del núcleo. También necesita volver a cargar el archivo de reglas que hace referencia a la agrupación.

Para ver la gramática y sintaxis completas que se utilizan para escribir las reglas de filtros de paquetes, consulte la página del comando man ippool(4).