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
- Descripción general de NETCONF sobre TLS
- Descripción de la asignación de nombres de usuario del cliente TLS a NETCONF
- Flujo de trabajo de conexión NETCONF-over-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:
netconf { tls { client-identity client1 { fingerprint 04:D2:96:AF:89:AB:33:A4:F9:5C:0F:34:9E:FC:67:2D:98:C6:08:9B:E8:6C:DE:63:60:1C:F6:CD:1A:43:5A:30:AD; map-type specified; username netconf-user; } client-identity client2 { fingerprint 04:95:71:45:4F:56:10:CA:B1:89:A3:8C:5D:89:CC:BD:01:37:03:EC:B5:4A:55:22:AD:49:DA:9B:D8:8B:3A:21:12; map-type san-dirname-cn; } } }
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 lausername
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:
-
El cliente envía un mensaje ClientHello TLS para iniciar el protocolo de enlace TLS.
-
El servidor envía un mensaje ServerHello, la cadena de certificados del servidor y un mensaje CertificateRequest para solicitar un certificado al cliente.
-
El cliente verifica la identidad del servidor y envía la cadena de certificados del cliente.
-
El servidor verifica la cadena de certificados de cliente con la CA raíz del cliente, que se ha preconfigurado en el servidor.
-
El servidor deriva el nombre de usuario NETCONF para ese cliente.
-
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>
. -
El cliente realiza operaciones de NETCONF mediante los privilegios y permisos de acceso del usuario de NETCONF.
-
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.
Ver también
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
- Obtenga certificados X.509 para el servidor y el cliente
- Instalar el certificado local del servidor en la PKI de Junos
- Instalar los certificados de CA en la PKI de Junos
- Habilite el servicio NETCONF mediante TLS
- Configurar la asignación de nombre de usuario del cliente TLS a NETCONF
- Configurar la asignación predeterminada de nombre de usuario de NETCONF
- Configurar la cuenta de usuario para el usuario de NETCONF
- Iniciar la sesión de NETCONF sobre TLS
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:
De manera similar, genere el certificado de servidor.
-
Genere una clave privada y especifique la longitud de la clave en bits.
user@nms:~$ openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus (2 primes) ......................................................+++++ .............+++++ e is 65537 (0x010001)
-
Genere una solicitud de firma de certificado (CSR).
user@nms:~$ openssl req -new -key server.key -out server.csr -sha256 -subj "/C=US/ST=CA/L=Sunnyvale/O=Juniper/CN=host.example.com"
-
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.
user@nms:~$ openssl x509 -req -in server.csr -CA serverIntCA.crt -CAkey serverIntCA.key -CAcreateserial -out server.crt -days 365 Signature ok subject=C = US, ST = CA, L = Sunnyvale, O = Juniper, CN = host.example.com Getting CA Private Key
-
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:
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.
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:
Habilite el servicio NETCONF mediante TLS
Para habilitar NETCONF a través de TLS:
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:
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:
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:
Ver también
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: