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

Capítulo 21 Arquitectura de seguridad IP (referencia)

Este capítulo contiene la siguiente información de referencia:

Para obtener instrucciones sobre cómo implementar IPsec en la red, consulte el Capítulo 20Configuración de IPsec (tareas). Para ver una descripción general de IPsec, consulte el Capítulo 19Arquitectura de seguridad IP (descripción general).

Utilidad de gestión de servicios de IPsec

La utilidad de gestión de servicios (SMF) proporciona los siguientes servicios para IPsec:

Para obtener más información sobre SMF, consulte el Capítulo 18, Managing Services (Overview) de System Administration Guide: Basic Administration. Consulte también las páginas de comando man smf(5),svcadm(1M) y svccfg(1M).

Comando ipsecconf

El comando ipsecconf permite configurar la directiva IPsec para un host. Al ejecutar el comando para configurar la directiva, el sistema crea las entradas de la directiva IPsec en el núcleo. El sistema utiliza estas entradas para comprobar la directiva en todos los datagramas IP entrantes y salientes. Los datagramas reenviados no están sujetos a las comprobaciones de directivas que se agregan utilizando este comando. El comando ipsecconf también configura la base de datos de directivas de seguridad (SPD).

Debe convertirse en superusuario o asumir un rol equivalente para invocar el comando ipsecconf. El comando acepta entradas que protegen el tráfico en ambas direcciones. El comando también acepta entradas que protegen el tráfico sólo en una dirección.

Las entradas de directiva con un formato de dirección local y dirección remota pueden proteger el tráfico en ambas direcciones con una sola entrada de directiva. Por ejemplo, las entradas que contienen los patrones laddr host1 y raddr host2 protegen el tráfico en ambas direcciones, si no se especifica ninguna dirección para el host con nombre. De este modo, sólo necesita una entrada de directiva para cada host.

Las entradas de directiva con un formato de dirección de origen a dirección de destino sólo protegen el tráfico en una dirección. Por ejemplo, una entrada de directiva del patrón saddr host1 daddr host2 protege el tráfico entrante o el saliente, no el tráfico en ambas direcciones. Por tanto, para proteger el tráfico en ambas direcciones, es necesario transferir al comando ipsecconf otra entrada, como en saddr host2 daddr host1.

Para asegurarse de que la directiva IPsec esté activa cuando se inicie el equipo, puede crear un archivo de directiva IPsec, /etc/inet/ipsecinit.conf. Este archivo se lee cuando se inician los servicios de red. Para obtener instrucciones sobre cómo crear un archivo de directiva IPsec, consulte Protección del tráfico con IPsec (mapa de tareas).

A partir de la versión &s10u7, con la opción -c , el comando ipsecconf comprueba la sintaxis del archivo de directiva IPsec que proporciona como argumento.

Las entradas de directivas agregadas por el comando ipsecconf no persisten tras un reinicio del sistema. Para asegurarse de que la directiva IPsec está activa cuando el sistema se inicia, agregue las entradas de directivas al archivo /etc/inet/ipsecinit.conf. En la versión actual, actualice o habilite el servicio directiva. En una versión anterior a Solaris 10 4/09 reinicie o utilice el comando ipsecconf. Si desea conocer ejemplos, consulte Protección del tráfico con IPsec (mapa de tareas).

Archivo ipsecinit.conf

Para invocar las directivas de seguridad IPsec al iniciar Sistema operativo Solaris (sistema operativo Solaris), se crea un archivo de configuración para iniciar IPsec con las entradas de directiva IPsec específicas. El nombre predeterminado para este archivo es /etc/inet/ipsecinit.conf. Consulte la página del comando man ipsecconf(1M) para obtener más información acerca de las entradas de directiva y su formato. Una vez configuradas las directivas, puede utilizar el comando ipsecconf para ver o modificar la configuración existente. A partir de Solaris 10 4/09, debe actualizar el servicio polícy para modificar la configuración existente.

Archivo ipsecinit.conf de ejemplo

El software Solaris incluye un archivo de directiva IPsec de ejemplo, ipsecinit.sample. Puede utilizar dicho archivo como plantilla para crear su propio archivo ipsecinit.conf. El archivo ipsecinit.sample contiene los ejemplos siguientes:


#
# For example,
#
#	 {rport 23} ipsec {encr_algs des encr_auth_algs md5}
#
# will protect the telnet traffic originating from the host with ESP using
# DES and MD5. Also:
#
#	 {raddr 10.5.5.0/24} ipsec {auth_algs any}
#
# will protect traffic to or from the 10.5.5.0 subnet with AH 
# using any available algorithm.
#
#
# To do basic filtering, a drop rule may be used. For example:
#
#	 {lport 23 dir in} drop {}
#	 {lport 23 dir out} drop {}
# will disallow any remote system from telnetting in.
#
# If you are using IPv6, it may be useful to bypass neighbor discovery
# to allow in.iked to work properly with on-link neighbors. To do that,
# add the following lines:
#
#        {ulp ipv6-icmp type 133-137 dir both } pass { }
#
# This will allow neighbor discovery to work normally.

Consideraciones de seguridad para ipsecinit.conf e ipsecconf

Tenga especial precaución al transmitir una copia del archivo ipsecinit.conf por una red. Un adversario puede leer un archivo montado en red mientras se lee el archivo. Si, por ejemplo, se accede al archivo /etc/inet/ipsecinit.conf o se copia desde un sistema de archivos montado en NFS, un adversario puede cambiar la directiva que contiene el archivo.

Asegúrese de configurar las directivas IPsec antes de iniciar cualquier comunicación, ya que las conexiones existentes podrían verse afectadas por la adición de nuevas entradas de directiva. Asimismo, no cambie las directivas durante una comunicación.

Específicamente, la directiva IPsec no puede cambiarse para los sockets SCTP, TCP o UDP en los que se ha emitido una llamada de función connect() o accept. () Un socket cuya directiva no se puede modificar se denomina socket bloqueado. Las nuevas entradas de directiva no protegen los sockets que ya están bloqueados. Para más información, consulte las páginas del comando man connect(3SOCKET) y accept(3SOCKET).

Proteja su sistema de nombres. Si se cumplen las dos condiciones siguientes, los nombres de host dejarán de ser de confianza:

Los fallos de seguridad a menudo se deben a la mala aplicación de las herramientas, no a las herramientas en sí. Utilice el comando ipsecconf con precaución. Utilice una consola u otro TTY conectado físicamente para obtener el funcionamiento mas seguro.

Comando ipsecalgs

La estructura criptográfica de Solaris proporciona autenticación y algoritmos de cifrado para IPsec. El comando ipsecalgs puede enumerar los algoritmos que cada protocolo de IPsec admite. La configuración ipsecalgs se almacena en el archivo /etc/inet/ipsecalgs. Normalmente, este archivo no necesita modificarse. Sin embargo, si el archivo debe modificarse, utilice el comando ipsecalgs. El archivo nunca debe editarse directamente. En la versión actual, los algoritmos admitidos se sincronizan con el núcleo en el inicio del sistema mediante el servicio svc:/network/ipsec/ipsecalgs:default.

ISAKMP dominio de interpretación, que se trata en la norma RFC 1407, describe los algoritmos y protocolos IPsec válidos. De manera general, el dominio de interpretación define los formatos de los datos, los tipos de intercambio de tráfico de red y las convenciones de denominación de información relacionada con la seguridad. Ejemplos de información relacionada con la seguridad son los algoritmos y modos criptográficos, y las directrices de seguridad.

En concreto, el DOI ISAKMP define las convenciones de denominación y numeración para los algoritmos IPsec válidos y sus protocolos. PROTO_IPSEC_AH y PROTO_IPSEC_ESP. Cada algoritmo se asocia exactamente con un protocolo. Estas definiciones DOI ISAKMP se encuentran en el archivo /etc/inet/ipsecalgs. Los números de protocolo y algoritmos los define la Autoridad de números asignados de Internet (IANA). El comando ipsecalgs permite ampliar la lista de algoritmos para IPsec.

Para obtener más información acerca de los algoritmos, consulte la página del comando man ipsecalgs(1M) Para mas información sobre la estructura criptográfica de Solaris, consulte el Capítulo 13, Oracle Solaris Cryptographic Framework (Overview) de System Administration Guide: Security Services.

Base de datos de asociaciones de seguridad para IPsec

La información sobre el material de claves para los servicios de seguridad IPsec se guarda en una base de datos de asociaciones de seguridad (SADB). Las asociaciones de seguridad (SA) protegen los paquetes entrantes y salientes. Las SADB se controlan mediante un proceso de usuario, o posiblemente varios procesos a la vez, que envían mensajes a través de un tipo de socket especial. Este modo de controlar las SADB es análogo al método que se describe en la página del comando man route(7P) Sólo el superusuario o un usuario que haya asumido un rol equivalente pueden acceder a la base de datos.

El daemon in.iked y el comando ipseckey utilizan la interfaz de socket PF_KEY para mantener las SADB. Para más información sobre cómo administrar las solicitudes y mensajes de SADB, consulte la página del comando man pf_key(7P).

Utilidades para la generación de claves en IPsec

El protocolo IKE permite administrar automáticamente las claves para las direcciones IPv4 e IPv6. Consulte el Capítulo 23Configuración de IKE (tareas) para obtener instrucciones sobre cómo configurar IKE. La utilidad de claves manuales es el comando ipseckey, que se describe en la página del comando man ipseckey(1M).

Puede usar el comando ipseckey para rellenar manualmente la base de datos de asociaciones de seguridad (SADB). Normalmente, la generación manual de SA se utiliza cuando IKE no está disponible por algún motivo. Sin embargo, si los valores SPI son exclusivos, la generación manual de SA e IKE se pueden utilizar al mismo tiempo.

El comando ipseckey puede utilizarse para ver todas las SA conocidas por el sistema, independientemente de si las claves se han agregado manualmente o mediante IKE. A partir de la versión Solaris 10 4/09, con la opción -c, el comando ipseckey comprueba la sintaxis del archivo de claves que proporciona como argumento.

Las IPsec SA que añade el comando ipseckey no persisten tras el reinicio del sistema. En la versión actual, para habilitar manualmente las SA agregadas en el inicio del sistema, agregue entradas al archivo /etc/inet/secret/ipseckeys y, a continuación, habilite el servicio svc:/network/ipsec/manual-key:default. Si desea conocer el procedimiento, consulte Cómo crear manualmente asociaciones de seguridad IPsec.

Aunque el comando ipseckey tiene un número limitado de opciones generales, admite un lenguaje de comandos amplio. Puede especificar que las solicitudes se envíen mediante una interfaz de programación específica para las claves manuales. Para obtener información adicional, consulte la página del comando man pf_key(7P).

Consideraciones de seguridad para ipseckey

El comando ipseckey permite al superusuario o a una función con el perfil de seguridad de red o de derechos de administración de redes IPsec especificar información criptográfica confidencial de claves. Si un adversario obtiene acceso a esta información, puede poner en peligro la seguridad del tráfico IPsec.

Cuando administre material de claves y utilice el comando ipseckey, debe tener en cuenta los aspectos siguientes:

Los fallos de seguridad a menudo se deben a la mala aplicación de las herramientas, no a las herramientas en sí. Utilice el comando ipseckey con precaución. Utilice una consola u otro TTY conectado físicamente para obtener el funcionamiento mas seguro.

Extensiones IPsec para otras utilidades

El comando ifconfig tiene opciones para administrar la directiva IPsec en una interfaz de túnel. El comando snoop puede analizar los encabezados AH y ESP.

Comando ifconfig e IPsec

En Solaris 10, Solaris 10 7/05, Solaris 10 1/06 y Solaris 10 11/06: Para admitir IPsec, con el comando ifconfig hay disponibles las siguientes opciones de seguridad. Estas opciones de seguridad se administran mediante el comando ipsecconf de Solaris 10 7/07.

Debe especificar todas las opciones de seguridad de IPsec para un túnel de una invocación. Por ejemplo, si utiliza solamente ESP para proteger el tráfico, debe configurar el túnel (ip.tun0) una vez con ambas opciones de seguridad, como en el ejemplo siguiente:


# ifconfig ip.tun0 encr_algs aes encr_auth_algs md5

De un modo similar, una entrada de ipsecinit.conf configuraría el túnel una vez con ambas opciones de seguridad, como en el caso siguiente:


# WAN traffic uses ESP with AES and MD5.
   {} ipsec {encr_algs aes encr_auth_algs md5}

Opción de seguridad auth_algs

Esta opción habilita AH IPsec para un túnel con un algoritmo de autenticación especificado. La opción auth_algs tiene el formato siguiente:


auth_algs authentication-algorithm

Para el algoritmo, puede especificar un número o un nombre de algoritmo, incluido el parámetro any, para no expresar ninguna preferencia de algoritmo específica. Para desactivar la seguridad del túnel, especifique la opción siguiente:


auth_algs none

Para ver una lista de los algoritmos de autenticación disponibles, ejecute el comando ipsecalgs.


Nota –

La opción auth_algs no puede funcionar con NAT-Traversal. Para más información, consulte Paso a través de IPsec y NAT.


Opción de seguridad encr_auth_algs

Esta opción habilita ESP IPsec para un túnel con un algoritmo de autenticación especificado. La opción encr_auth_algs tiene el formato siguiente:


encr_auth_algs authentication-algorithm

Para el algoritmo, puede especificar un número o un nombre de algoritmo, incluido el parámetro any, para no expresar ninguna preferencia de algoritmo específica. Si especifica un algoritmo de cifrado ESP pero no especifica el algoritmo de autenticación, el valor predeterminado del algoritmo de autenticación ESP es el parámetro any.

Para ver una lista de los algoritmos de autenticación disponibles, ejecute el comando ipsecalgs.

Opción de seguridad encr_algs

Esta opción habilita ESP IPsec para un túnel con un algoritmo de cifrado especificado. La opción encr_algs tiene el formato siguiente:


encr_algs encryption-algorithm

Para el algoritmo, puede especificar un número o un nombre de algoritmo. Para desactivar la seguridad del túnel, especifique la opción siguiente:


encr_algs none

Si especifica un algoritmo de autenticación ESP pero no un algoritmo de cifrado, el valor de cifrado predeterminado de ESP será el parámetro null.

Para ver una lista de los algoritmos de cifrado disponibles, ejecute el comando ipsecalgs.

Comando snoop e IPsec

El comando snoop puede analizar encabezados AH y ESP. Dado que ESP cifra sus datos, el comando snoop no puede ver los encabezados cifrados protegidos por ESP. AH no cifra los datos. En consecuencia, el tráfico que protege AH se puede examinar con el comando snoop. La opción -V para el comando muestra cuándo se está utilizando AH en un paquete. Para obtener más información, consulte la página del comando man snoop(1M).

Para ver un ejemplo de resultado snoop detallado en un paquete protegido, consulte Cómo verificar que los paquetes estén protegidos con IPsec.