Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Sesiones de NETCONF sobre seguridad de capa de transporte (TLS)

RESUMEN Los clientes del Protocolo de configuración de red (NETCONF) pueden usar el protocolo de seguridad de capa de transporte (TLS) con autenticación mutua basada en certificados X.509 para establecer una sesión NETCONF con dispositivos Junos compatibles.

Descripción de las conexiones NETCONF sobre TLS

Ventajas de NETCONF sobre TLS

  • Permite la administración remota de dispositivos mediante autenticación mutua basada en certificados

  • Le permite administrar redes con mayor facilidad a una escala mayor que cuando se utiliza NETCONF sobre SSH

  • Utiliza una infraestructura de clave pública para proporcionar autenticación mutua basada en certificados TLS tanto para el cliente como para el servidor

  • Protege la conexión y el intercambio de mensajes NETCONF

  • Garantiza la integridad de los datos para los mensajes intercambiados

Descripción general de NETCONF sobre TLS

Puede establecer una sesión del Protocolo de configuración de red (NETCONF) a través de seguridad de capa de transporte (TLS) en ciertos dispositivos Junos, como alternativa al establecimiento de una sesión NETCONF mediante SSH. TLS es un protocolo criptográfico que utiliza autenticación mutua basada en certificados y proporciona una conexión segura y confiable entre dos dispositivos. Es un sucesor del protocolo de capa de sockets seguros (SSL). Cuando establece una sesión NETCONF mediante TLS, el servidor NETCONF actúa como el servidor TLS y el cliente NETCONF es el cliente TLS.

Las sesiones de NETCONF a través de TLS ofrecen algunas ventajas sobre las sesiones que utilizan SSH. Mientras que SSH autentica a un cliente mediante el uso de credenciales (nombre de usuario y contraseña) o claves, TLS usa certificados para autenticar mutuamente tanto al cliente como al servidor. Los certificados pueden proporcionar información adicional sobre un cliente y se pueden usar para autenticar de forma segura un dispositivo en otro. Por lo tanto, mientras que las sesiones de NETCONF sobre SSH funcionan bien para administrar dispositivos individuales manualmente, las sesiones de NETCONF que utilizan TLS permiten la comunicación segura de dispositivo a dispositivo para administrar y automatizar mejor los dispositivos en redes a gran escala.

Las sesiones de NETCONF-over-TLS con dispositivos Junos tienen los siguientes requisitos:

  • Cliente NETCONF compatible con TLS versión 1.2

  • El servidor y el cliente deben tener certificados de clave pública X.509 firmados por una autoridad de certificación

  • La infraestructura de clave pública (PKI) de Junos debe tener cargados los certificados locales y de CA adecuados

  • El dispositivo Junos está configurado para NETCONF a través de TLS y define una asignación de nombre de usuario de certificado a NETCONF predeterminada o específica para un cliente

  • El nombre de usuario de NETCONF corresponde a una cuenta de usuario de Junos OS válida

TLS usa certificados digitales X.509 para la autenticación de servidor y cliente. Un certificado digital es un medio electrónico para verificar su identidad a través de un tercero de confianza, conocido como autoridad de certificación o autoridad de certificación (CA). Una autoridad de certificación emite certificados digitales, que se pueden usar para establecer una conexión segura entre dos puntos de conexión mediante la validación de certificado. El estándar X.509 define el formato de los certificados. Para establecer una sesión de NETCONF sobre TLS en dispositivos Junos compatibles, tanto el servidor como el cliente deben tener un certificado X.509 válido y los certificados deben estar firmados por una CA. No se pueden usar certificados autofirmados para establecer sesiones de NETCONF a través de TLS.

Junos OS PKI proporciona una infraestructura para la administración de certificados digitales. Para establecer una conexión TLS, debe instalar lo siguiente en la PKI de Junos OS:

  • Certificado local del servidor NETCONF y sus certificados de CA intermedios

    Nota:

    Si la cadena de certificados del servidor no incluye CA intermedias, debe configurar el certificado de CA raíz.

  • Certificado de CA raíz del cliente NETCONF necesario para validar el certificado de cliente o la cadena de certificados de NETCONF

Después de que el servidor verifica la identidad del cliente y establece la conexión TLS, debe derivar el nombre de usuario NETCONF para ese cliente antes de poder establecer la sesión NETCONF. El nombre de usuario de NETCONF es la cuenta de usuario de Junos bajo cuyos privilegios y permisos de acceso se realizan las operaciones de NETCONF. Puede configurar una lista de asignaciones de nombres de usuario de certificado de cliente a NETCONF y también puede configurar una asignación predeterminada de nombre de usuario NETCONF. Junos OS usa la asignación predeterminada cuando un certificado de cliente no coincide con ninguno de los clientes configurados. Si el servidor extrae un nombre de usuario NETCONF válido, establece la sesión NETCONF. Para obtener más información acerca de cómo derivar el nombre de usuario de NETCONF, consulte Descripción de la asignación de nombres de usuario del cliente TLS a NETCONF.

El proxy tls-proxyd de proceso junos controla la conexión TLS. Realiza el apretón de manos TLS, cifra y descifra el tráfico, determina el nombre de usuario de NETCONF y recupera los parámetros de autorización para el usuario de NETCONF. El proceso de proxy tls funciona junto con el proceso de administración (mgd) para crear y administrar la sesión de NETCONF. El flujo de trabajo de sesión de NETCONF sobre TLS se describe en el flujo de trabajo de conexión de NETCONF-over-TLS.

Para obtener más información acerca de NETCONF a través de TLS, consulte RFC 7589, Using the NETCONF Protocol over Transport Layer Security (TLS) con autenticación mutua X.509.

Para obtener más información acerca del protocolo de seguridad de capa de transporte, consulte RFC 5246, El protocolo de seguridad de capa de transporte (TLS) versión 1.2.

Descripción de la asignación de nombres de usuario del cliente TLS a NETCONF

La identidad autenticada del cliente NETCONF-over-TLS es el nombre de usuario de NETCONF. Los dispositivos Junos ejecutan las operaciones de NETCONF bajo los privilegios de cuenta de este usuario. Puede configurar el método utilizado para derivar el nombre de usuario NETCONF para clientes individuales y también puede definir un método predeterminado para derivar el nombre de usuario de NETCONF para aquellos clientes que no coincidan con un cliente configurado.

Puede configurar la asignación de certificados de cliente a nombres de usuario NETCONF en el [edit system services netconf tls client-identity] nivel jerárquico. Para cada cliente, configure la huella digital del certificado y un tipo de mapa. Si la huella digital de un certificado de cliente coincide con una huella digital configurada, Junos OS usa el tipo de mapa correspondiente para derivar el nombre de usuario de NETCONF. Solo puede configurar una huella digital por cliente, y cada huella digital de cliente debe ser única. Por ejemplo:

La huella digital del certificado configurado utiliza el formato x509c2n:tls-fingerprint como se define en RFC 7407, un modelo de datos YANG para configuración SNMP. En este formato, el primer octeto es el identificador del algoritmo de hash, y los octetos restantes son el resultado del algoritmo de hash. El identificador de algoritmo hash, que se muestra aquí como referencia, se define en rfc 5246, protocolo de seguridad de capa de transporte (TLS) versión 1.2.

  • md5: 1

  • sha1: 2

  • sha224: 3

  • sha256: 4

  • sha384: 5

  • sha512: 6

También puede configurar una asignación predeterminada para el nombre de usuario de NETCONF en el [edit system services netconf tls default-client-identity] nivel jerárquico. Si la huella digital de un certificado de cliente no coincide con ningún cliente configurado, el dispositivo Junos usa el tipo de asignación predeterminado para derivar el nombre de usuario de NETCONF.

Los dispositivos Junos admiten los siguientes tipos de mapa:

  • san-dirname-cn— Utilice el nombre común (CN) definido para el campo DirName () de SubjectAltName () enDirName:/CN el certificado de cliente como nombre de usuario NETCONF.

  • specified— Utilice el nombre de usuario NETCONF definido en la username instrucción en el mismo nivel jerárquico.

Después de que el servidor verifica la identidad del cliente y establece la conexión TLS, deriva el nombre de usuario de NETCONF. Primero hace coincidir la huella digital de cada cliente configurado con la huella digital del certificado presentado. Si hay una coincidencia, usa el tipo de mapa correspondiente para derivar el nombre de usuario de NETCONF. Si ninguna de las huellas digitales configuradas coincide con la del certificado del cliente, el tipo de asignación predeterminado se utiliza para derivar el nombre de usuario de NETCONF.

Después de que el servidor determine el nombre de usuario, obtiene la autorización para el usuario de forma local o remota. El nombre de usuario debe tener una cuenta de usuario definida localmente en el dispositivo o debe autenticarse mediante un servidor de protocolo ligero de acceso a directorios (LDAP), que, a continuación, lo asigna a una cuenta de plantilla de usuario definida localmente en el dispositivo Junos. Si el nombre de usuario extraído no es un usuario local o remoto válido, la conexión TLS termina.

Flujo de trabajo de conexión NETCONF-over-TLS

El dispositivo Junos actúa como servidor TLS y NETCONF. El servidor escucha las conexiones NETCONF-over-TLS entrantes en el puerto TCP 6513. El cliente NETCONF, que también es el cliente TLS, inicia una conexión con el servidor en ese puerto.

El cliente y el servidor realizan las siguientes acciones para establecer y usar la sesión de NETCONF sobre TLS:

  1. El cliente envía un mensaje ClientHello TLS para iniciar el protocolo de enlace TLS.

  2. El servidor envía un mensaje ServerHello, la cadena de certificados del servidor y un mensaje CertificateRequest para solicitar un certificado al cliente.

  3. El cliente verifica la identidad del servidor y envía la cadena de certificados del cliente.

  4. El servidor verifica la cadena de certificados de cliente con la CA raíz del cliente, que se ha preconfigurado en el servidor.

  5. El servidor deriva el nombre de usuario NETCONF para ese cliente.

  6. Si el nombre de usuario de NETCONF es válido, el servidor inicia la sesión de NETCONF y el servidor y el cliente intercambian mensajes NETCONF <hello> .

  7. El cliente realiza operaciones de NETCONF mediante los privilegios y permisos de acceso del usuario de NETCONF.

  8. El cliente ejecuta la <close-session> operación para finalizar la sesión NETCONF, que posteriormente cierra la conexión TLS.

El servidor no puede establecer la sesión de NETCONF sobre TLS en los siguientes escenarios:

  • El certificado de servidor o cliente está vencido o autofirmado.

  • El cliente no proporciona un certificado.

  • El cliente no envía sus certificados de CA intermedios.

  • El certificado de CA raíz del cliente no está configurado en el servidor.

  • El servidor no puede asignar el certificado de cliente a un tipo de asignación configurado o predeterminado para derivar el nombre de usuario de NETCONF.

  • El servidor usa el san-dirname-cn tipo de mapa para derivar el nombre de usuario NETCONF para el cliente, pero el certificado del cliente no especifica un nombre de usuario en el campo correspondiente.

Cómo establecer una sesión NETCONF sobre TLS

Se utiliza un sistema de administración de red (NMS) para administrar de forma remota el dispositivo Junos. Puede establecer una sesión NETCONF a través de TLS entre un sistema de administración de red y los dispositivos Junos compatibles. El NMS es el cliente NETCONF y TLS, y el dispositivo Junos es el servidor NETCONF y TLS.

Antes de que el cliente y el servidor puedan establecer una sesión NETCONF a través de TLS, debe cumplir los requisitos que se explican en las siguientes secciones:

Instalar el software de cliente TLS en el sistema de administración de red

Para establecer una sesión NETCONF con TLS, el sistema de administración de red primero debe establecer una conexión TLS con el dispositivo Junos. Por lo tanto, el sistema de administración de red requiere software para administrar el protocolo TLS. Por ejemplo, puede instalar y usar el kit de herramientas OpenSSL, que es un kit de herramientas para los protocolos seguridad de capa de transporte (TLS) y capa de sockets seguros (SSL). Está autorizado bajo una licencia al estilo Apache.

Para obtener más información acerca de OpenSSL, consulte https://www.openssl.org.

Obtenga certificados X.509 para el servidor y el cliente

El protocolo TLS usa certificados de clave pública X.509 para autenticar la identidad del servidor y del cliente. Para establecer una sesión NETCONF mediante TLS, tanto el servidor como el cliente deben tener un certificado X.509 y el certificado debe estar firmado por una entidad de certificación (CA) válida. No se aceptan certificados autofirmados para las sesiones de NETCONF a través de TLS.

Para usar OpenSSL para obtener un certificado para el cliente NETCONF:

  1. Genere una clave privada y especifique la longitud de la clave en bits.
    Nota:

    Los dispositivos Junos no admiten el uso de claves del algoritmo de firma digital de curva elíptica (ECDSA) en sesiones de NETCONF mediante TLS.

  2. Si va a definir el nombre de usuario NETCONF en el certificado del cliente, actualice el openssl.cnf o el archivo de configuración equivalente para definir la subjectAltName=dirName extensión y especificar el nombre de usuario de NETCONF.
  3. Genere una solicitud de firma de certificado (CSR), que contiene la clave pública de la entidad e información sobre su identidad.
  4. Genere el certificado haciendo una de las siguientes acciones:
    • Envíe el CSR a una autoridad de certificación para solicitar un certificado X.509 y proporcione el archivo de configuración para incluir extensiones adicionales.

    • Firme la CSR con una CA para generar el certificado de cliente e incluya las -extfile opciones y -extensions si necesita hacer referencia al archivo de configuración y las extensiones.

  5. Compruebe que el campo Nombre común (CN) y las extensiones, si se proporcionan, son correctos.

De manera similar, genere el certificado de servidor.

  1. Genere una clave privada y especifique la longitud de la clave en bits.

  2. Genere una solicitud de firma de certificado (CSR).

  3. Genere el certificado haciendo una de las siguientes acciones:

    • Envíe el CSR a una autoridad de certificación para solicitar un certificado X.509.

    • Firme el CSR con una CA para generar el certificado del servidor.

La infraestructura de clave pública (PKI) de Junos OS proporciona una infraestructura para la administración de certificados digitales. También puede usar la PKI de Junos OS para generar el par de claves necesarios y CSR para el certificado local del servidor. Para obtener más información acerca de la PKI de Junos OS y los diferentes métodos para obtener certificados, consulte Descripción general de certificados digitales con PKI y documentación relacionada.

Instalar el certificado local del servidor en la PKI de Junos

El certificado local del servidor es el certificado X.509 para el dispositivo Junos que actúa como servidor NETCONF y TLS. Debe instalar el certificado local para el dispositivo en la PKI de Junos.

Para instalar el certificado local del servidor en la PKI de Junos:

  1. Copie el certificado y la clave privada en el dispositivo Junos.
  2. Cargue el certificado desde el archivo especificado mediante la PKI de Junos.

    Defina un identificador de certificado único y especifique las rutas de archivo al certificado y el par de claves o claves privadas. Por ejemplo:

  3. (Opcional) Compruebe el certificado.

Instalar los certificados de CA en la PKI de Junos

Un certificado digital es un medio electrónico para verificar su identidad a través de un tercero de confianza, conocido como autoridad de certificación (CA). Al establecer una sesión NETCONF mediante TLS, el cliente y el servidor deben tener cada uno un certificado digital X.509 para autenticar su identidad. Debe configurar el certificado de CA raíz necesario para validar el certificado de cliente en la infraestructura de clave pública (PKI) de Junos. También debe configurar las CA necesarias para validar el certificado local del servidor en la PKI de Junos. Por lo tanto, para cada CA, configure un perfil de autoridad de certificación y cargue el certificado de CA correspondiente y la lista de revocación de certificados (CRL). Esta configuración permite que el dispositivo Junos valide un certificado en la CA.

Nota:

Si la cadena de certificados del servidor no incluye CA intermedias, debe configurar el certificado de CA raíz. De lo contrario, solo necesitará configurar las CA intermedias.

Para configurar manualmente un perfil de CA y cargar el certificado de CA y CRL correspondientes:

  1. Descargue los certificados de CA y las listas de revocación de certificados de CA (CRL) necesarias en el dispositivo Junos.
  2. Configure un perfil de CA de confianza para cada CA requerida, por ejemplo:
  3. Cargue el certificado de CA asociado con el perfil de CA raíz del cliente en la PKI de Junos y especifique la ubicación del archivo de certificado.
  4. Cargue los certificados de CA asociados con el perfil de CA del servidor en la PKI de Junos y especifique la ubicación del archivo de certificado.
    • Si la cadena de certificados solo tiene una CA raíz, cargue el certificado de CA raíz.

    • Si la cadena de certificados incluye CA intermedias, solo tendrá que cargar los certificados de CA intermedios.

  5. Cargue la CRL para un perfil de CA determinado cuando sea necesario, por ejemplo:
    Nota:

    Si no configura una lista de revocación de certificado para un perfil de CA determinado, debe deshabilitar las comprobaciones de revocación configurando la revocation-check disable instrucción en el [edit security pki ca-profile profile-name] hierarchy level.

  6. (Opcional) Compruebe el certificado de CA.

Habilite el servicio NETCONF mediante TLS

Para habilitar NETCONF a través de TLS:

  1. Configure el ID de certificado local del servidor y haga referencia al ID que se definió cuando se instaló el certificado.
  2. Defina cómo el servidor debe derivar el nombre de usuario de NETCONF para un cliente determinado.
  3. (Opcional) Configure opciones de seguimiento para sesiones de NETCONF a través de TLS, por ejemplo:
  4. Confirme la configuración.

Configurar la asignación de nombre de usuario del cliente TLS a NETCONF

Puede definir la asignación entre el certificado de cliente y el nombre de usuario de NETCONF para clientes específicos. Si no define una asignación para un cliente específico, debe definir una asignación predeterminada para que el cliente establezca una sesión NETCONF sobre TLS.

Para definir la asignación para derivar el nombre de usuario de NETCONF para un cliente determinado:

  1. Determine la huella digital del certificado del cliente ejecutando el comando adecuado para su entorno en el sistema de administración de red y el formato del certificado, por ejemplo:
  2. Determine el identificador de algoritmo hash de la huella digital como se define en RFC 5246, el protocolo de seguridad de capa de transporte (TLS) versión 1.2.

    En estos ejemplos se utiliza el algoritmo de hash SHA-256, que corresponde al valor de identificador de 4.

    • md5: 1

    • sha1: 2

    • sha224: 3

    • sha256: 4

    • sha384: 5

    • sha512: 6

  3. En el dispositivo Junos, defina un identificador único para el cliente.
  4. Configure la huella digital del certificado del cliente en formato x509c2n:tls-huella digital.

    El primer octeto de la huella digital es el identificador del algoritmo de hash, y los octetos restantes son el resultado del algoritmo de hash.

  5. Configure el tipo de asignación que define cómo el servidor deriva el nombre de usuario de NETCONF para ese cliente.
  6. Si el tipo de asignación es specified, configure el nombre de usuario de NETCONF para usar en ese cliente.
  7. Confirme la configuración.

Configurar la asignación predeterminada de nombre de usuario de NETCONF

Puede definir una asignación predeterminada que se use para derivar el nombre de usuario de NETCONF cuando un cliente no coincide con un cliente configurado en el [edit system services netconf tls client-identity] nivel de jerarquía.

Para definir la asignación predeterminada para derivar el nombre de usuario de NETCONF:

  1. Configure el tipo de asignación predeterminado que el servidor utiliza para derivar el nombre de usuario de NETCONF.
  2. Si el tipo de asignación es specified, configure el nombre de usuario NETCONF predeterminado.
  3. Confirme la configuración.

Configurar la cuenta de usuario para el usuario de NETCONF

Al establecer una sesión NETCONF mediante TLS, el servidor asigna el certificado de cliente al usuario de NETCONF que realiza las operaciones en el dispositivo para esa sesión. Junos OS admite usuarios locales y usuarios remotos LDAP para sesiones NETCONF-over-TLS. El usuario de NETCONF debe tener una cuenta de usuario definida localmente en el dispositivo o debe autenticarse mediante un servidor LDAP, que, a continuación, la asigna a una cuenta de plantilla de usuario local que se define localmente en el dispositivo. Las siguientes instrucciones explican cómo crear una cuenta de usuario en dispositivos Junos.

Para crear una cuenta de usuario para el usuario de NETCONF en un dispositivo Junos:

  1. Configure la user instrucción con un nombre de usuario único e incluya la class instrucción para especificar una clase de inicio de sesión que tenga los permisos necesarios para todas las acciones que el usuario realice.

    Por ejemplo, la siguiente configuración define dos usuarios: netconf-user y netconf-default-user.

  2. (Opcional) Configure las uid instrucciones y full-name para especificar el ID y el nombre del usuario.
  3. Confirme la configuración para activar la cuenta de usuario en el dispositivo.
  4. Repita los pasos anteriores en cada dispositivo Junos en el que el cliente establezca sesiones NETCONF mediante TLS.

Iniciar la sesión de NETCONF sobre TLS

El sistema de administración de red actúa como cliente NETCONF y TLS. Puede usar cualquier software para administrar el protocolo TLS para iniciar la sesión de NETCONF sobre TLS con el dispositivo Junos.

Para iniciar la sesión de NETCONF sobre TLS:

  1. Inicie la conexión al servidor NETCONF en el puerto 6513 y proporcione el certificado y la clave del cliente, el certificado de CA raíz para el servidor y todos los certificados de CA intermedios necesarios para validar el certificado de cliente.
  2. Compruebe que la sesión se asigne al usuario netconf correcto.

    El servidor emite el nombre de usuario de NETCONF para esa sesión durante el establecimiento de la sesión.

  3. Realice las operaciones de NETCONF según sea necesario.
  4. Cierre la sesión NETCONF y la conexión TLS.