Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Sessões de NETCONF sobre segurança de camada de transporte (TLS)

RESUMO  Os clientes do Protocolo de Configuração de Rede (NETCONF) podem usar o protocolo De segurança de camada de transporte (TLS) com autenticação mútua baseada em certificados X.509 para estabelecer uma sessão NETCONF com dispositivos Junos suportados.

Entender as conexões NETCONF-over-TLS

Benefícios do NETCONF sobre TLS

  • Permite o gerenciamento remoto de dispositivos usando autenticação mútua baseada em certificados

  • Permite que você gerencie redes com mais facilidade em uma escala maior do que ao usar o NETCONF sobre SSH

  • Usa uma infraestrutura de chave pública para fornecer autenticação mútua baseada em certificados TLS para o cliente e o servidor

  • Protege a conexão e a troca de mensagens NETCONF

  • Garante a integridade dos dados para mensagens trocadas

Visão geral do NETCONF sobre TLS

Você pode estabelecer uma sessão de Protocolo de Configuração de Rede (NETCONF) sobre segurança de camada de transporte (TLS) em determinados dispositivos Junos, como uma alternativa para estabelecer uma sessão NETCONF sobre SSH. O TLS é um protocolo criptográfico que usa autenticação baseada em certificados mútuos e fornece uma conexão segura e confiável entre dois dispositivos. Ele é um sucessor do protocolo Secure Sockets Layer (SSL). Quando você estabelece uma sessão NETCONF sobre TLS, o servidor NETCONF atua como o servidor TLS, e o cliente NETCONF é o cliente TLS.

As sessões de NETCONF sobre TLS oferecem algumas vantagens em relação às sessões que usam SSH. Enquanto o SSH autentica um cliente usando credenciais (nome de usuário e senha) ou chaves, o TLS usa certificados para autenticar mutuamente o cliente e o servidor. Os certificados podem fornecer informações adicionais sobre um cliente e podem ser usados para autenticar com segurança um dispositivo para outro. Assim, enquanto as sessões do NETCONF sobre SSH funcionam bem para gerenciar manualmente dispositivos individuais, as sessões de NETCONF que usam O TLS permitem uma comunicação segura entre dispositivos para gerenciar e automatizar melhor dispositivos em redes de grande escala.

As sessões netconf-over-TLS com dispositivos Junos têm os seguintes requisitos:

  • Cliente NETCONF que oferece suporte à versão 1.2 TLS

  • O servidor e o cliente devem ter certificados de chave pública X.509 assinados por uma autoridade certificadora

  • A infraestrutura de chave pública (PKI) junos deve ter os certificados locais e ca apropriados carregados

  • O dispositivo Junos está configurado para NETCONF sobre TLS e define um mapeamento padrão ou específico de certificado para netconf-username para um cliente

  • O nome de usuário netconf corresponde a uma conta de usuário válida do Junos OS

O TLS usa certificados digitais X.509 para autenticação de servidores e clientes. Um certificado digital é um meio eletrônico para verificar sua identidade por meio de um terceiro confiável, conhecido como autoridade de certificado ou autoridade de certificação (CA). Uma autoridade de certificado emite certificados digitais, que podem ser usados para estabelecer uma conexão segura entre dois endpoints por meio da validação do certificado. O padrão X.509 define o formato dos certificados. Para estabelecer uma sessão NETCONF sobre TLS em dispositivos Junos suportados, tanto o servidor quanto o cliente devem ter um certificado X.509 válido, e os certificados devem ser assinados por um CA. Certificados auto-assinados não podem ser usados para estabelecer sessões NETCONF sobre TLS.

O Junos OS PKI fornece uma infraestrutura para o gerenciamento de certificados digitais. Para estabelecer uma conexão TLS, você deve instalar o seguinte no Junos OS PKI:

  • Certificado local do servidor NETCONF e seus certificados de CA intermediários

    Nota:

    Se a cadeia de certificados de servidor não incluir CAs intermediários, você deve configurar o certificado CA raiz.

  • Certificado de CA raiz do cliente NETCONF necessário para validar o certificado de cliente ou cadeia de certificados netconf

Após o servidor verificar a identidade do cliente e estabelecer a conexão TLS, ele deve obter o nome de usuário NETCONF para esse cliente antes que ele possa estabelecer a sessão NETCONF. O nome de usuário netconf é a conta do usuário Junos sob cujos privilégios de acesso e permissões as operações netconf são realizadas. Você pode configurar uma lista de mapeamentos de nome de usuário do certificado para NETCONF do cliente e também configurar um mapeamento padrão do nome de usuário do NETCONF. O Junos OS usa o mapeamento padrão quando um certificado de cliente não corresponde a nenhum dos clientes configurados. Se o servidor extrair um nome de usuário NETCONF válido, ele estabelecerá a sessão NETCONF. Para obter mais informações sobre como obter o nome de usuário do NETCONF, consulte Entender o mapeamento de nome de usuário do TLS para NETCONF.

O processo junos tls-proxyd lida com a conexão TLS. Ele executa o aperto de mão TLS, criptografa e descriptografa o tráfego, determina o nome de usuário netconf e busca os parâmetros de autorização para o usuário NETCONF. O processo de proxy tls trabalha em conjunto com o processo de gerenciamento (mgd) para criar e gerenciar a sessão NETCONF. O fluxo de trabalho de sessão NETCONF-over-TLS é descrito no fluxo de trabalho de conexão NETCONF-over-TLS.

Para obter mais informações sobre o NETCONF sobre O TLS, consulte o RFC 7589, usando o protocolo NETCONF sobre segurança de camada de transporte (TLS) com autenticação Mutual X.509.

Para obter mais informações sobre o protocolo de segurança de camada de transporte, consulte RFC 5246, The Transport Layer Security (TLS) Protocol Version 1.2.

Entender o mapeamento do nome de usuário do TLS para o NETCONF

A identidade autenticada do cliente NETCONF-over-TLS é o nome de usuário NETCONF. Os dispositivos Junos executam as operações do NETCONF sob os privilégios de conta deste usuário. Você pode configurar o método usado para obter o nome de usuário NETCONF para clientes individuais, e também pode definir um método padrão para obter o nome de usuário NETCONF para aqueles clientes que não correspondem a um cliente configurado.

Você pode configurar o mapeamento de certificados de cliente para nomes de usuário netconf no nível de [edit system services netconf tls client-identity] hierarquia. Para cada cliente, você configura a impressão digital do certificado e um tipo de mapa. Se a impressão digital de um certificado de cliente corresponder a uma impressão digital configurada, o Junos OS usa o tipo de mapa correspondente para obter o nome de usuário NETCONF. Você pode configurar apenas uma impressão digital por cliente, e cada impressão digital do cliente deve ser única. Por exemplo:

A impressão digital do certificado configurada usa o formato x509c2n:tls-fingerprint conforme definido no RFC 7407, um modelo de dados YANG para configuração de SNMP. Nesse formato, o primeiro octet é o identificador de algoritmos de hashing, e os octets restantes são o resultado do algoritmo de hashing. O identificador de algoritmo de hashing, mostrado aqui para referência, é definido em RFC 5246, The Transport Layer Security (TLS) Protocol Version 1.2.

  • md5: 1

  • sha1: 2

  • sha224: 3

  • sha256: 4

  • sha384: 5

  • sha512: 6

Você também pode configurar um mapeamento padrão para o nome de usuário NETCONF no nível de [edit system services netconf tls default-client-identity] hierarquia. Se a impressão digital de um certificado de cliente não corresponder a nenhum cliente configurado, o dispositivo Junos usa o tipo de mapa padrão para obter o nome de usuário NETCONF.

Os dispositivos Junos oferecem suporte aos seguintes tipos de mapa:

  • san-dirname-cn— Use o nome comum (CN) definido para o campoDirName:/CN DirName do SubjectAltName (SAN) no certificado de cliente como nome de usuário NETCONF.

  • specified— Use o nome de usuário NETCONF definido na username declaração no mesmo nível de hierarquia.

Após o servidor verificar a identidade do cliente e estabelecer a conexão TLS, ele deriva o nome de usuário NETCONF. Primeiro, ela combina a impressão digital de cada cliente configurado com a impressão digital do certificado apresentado. Se houver correspondência, ele usa o tipo de mapa correspondente para obter o nome de usuário NETCONF. Se nenhuma das impressões digitais configuradas corresponder à do certificado do cliente, o tipo de mapa padrão será usado para obter o nome de usuário NETCONF.

Após o servidor determinar o nome de usuário, ele busca a autorização para o usuário local ou remotamente. O nome de usuário deve ter uma conta de usuário definida localmente no dispositivo, ou deve ser autenticada por um servidor LDAP (Lightweight Directory Access Protocol, protocolo de acesso leve), que depois mapeia-a para uma conta de modelo de usuário que é definida localmente no dispositivo Junos. Se o nome de usuário extraído não for um usuário local ou remoto válido, a conexão TLS será encerrada.

Fluxo de trabalho de conexão NETCONF-over-TLS

O dispositivo Junos funciona como o servidor TLS e NETCONF. O servidor ouve as próximas conexões NETCONF-over-TLS na porta TCP 6513. O cliente NETCONF, que também é o cliente TLS, inicia uma conexão com o servidor nessa porta.

O cliente e o servidor executam as seguintes ações para estabelecer e usar a sessão NETCONF no TLS:

  1. O cliente envia uma mensagem do TLS ClientHello para iniciar o aperto de mão do TLS.

  2. O servidor envia uma mensagem do ServerHello, a cadeia de certificados do servidor e uma mensagem de pedido de certificado para solicitar um certificado ao cliente.

  3. O cliente verifica a identidade do servidor e envia a cadeia de certificados do cliente.

  4. O servidor verifica a cadeia de certificados do cliente com o CA raiz do cliente, que foi pré-configurado no servidor.

  5. O servidor deriva o nome de usuário NETCONF para esse cliente.

  6. Se o nome de usuário NETCONF for válido, o servidor iniciará a sessão NETCONF e o servidor e o cliente trocam mensagens NETCONF <hello> .

  7. O cliente realiza operações netconf usando os privilégios de acesso e permissões do usuário NETCONF.

  8. O cliente executa a <close-session> operação para encerrar a sessão NETCONF, que posteriormente fecha a conexão TLS.

O servidor não consegue estabelecer a sessão NETCONF sobre TLS nos seguintes cenários:

  • O certificado de servidor ou cliente está expirado ou auto-assinado.

  • O cliente não fornece um certificado.

  • O cliente não envia seus certificados de CA intermediários.

  • O certificado ca raiz do cliente não está configurado no servidor.

  • O servidor não pode mapear o certificado do cliente para um tipo de mapa configurado ou padrão para obter o nome de usuário NETCONF.

  • O servidor usa o san-dirname-cn tipo de mapa para obter o nome de usuário NETCONF para o cliente, mas o certificado do cliente não especifica um nome de usuário no campo correspondente.

Como estabelecer uma sessão NETCONF sobre TLS

Um sistema de gerenciamento de rede (NMS) é usado para gerenciar remotamente o dispositivo Junos. Você pode estabelecer uma sessão NETCONF sobre TLS entre um sistema de gerenciamento de rede e dispositivos Junos suportados. O NMS é o cliente NETCONF e TLS, e o dispositivo Junos é o servidor NETCONF e TLS.

Antes que o cliente e o servidor possam estabelecer uma sessão NETCONF sobre TLS, você deve satisfazer os requisitos discutidos nas seguintes seções:

Instale software de cliente TLS no sistema de gerenciamento de rede

Para estabelecer uma sessão NETCONF usando O TLS, o sistema de gerenciamento de rede deve primeiro estabelecer uma conexão TLS com o dispositivo Junos. Assim, o sistema de gerenciamento de rede requer software para gerenciar o protocolo TLS. Por exemplo, você pode instalar e usar o kit de ferramentas OpenSSL, que é um kit de ferramentas para os protocolos de segurança de camada de transporte (TLS) e camada de soquetes seguros (SSL). Ele é licenciado sob uma licença estilo Apache.

Para obter mais informações sobre o OpenSSL, consulte https://www.openssl.org.

Obtenha certificados X.509 para servidor e cliente

O protocolo TLS usa certificados de chave pública X.509 para autenticar a identidade do servidor e do cliente. Para estabelecer uma sessão NETCONF sobre TLS, tanto o servidor quanto o cliente devem ter um certificado X.509, e o certificado deve ser assinado por uma autoridade de certificado válida (CA). Certificados auto-assinados não são aceitos para sessões netconf sobre TLS.

Para usar o OpenSSL para obter um certificado para o cliente NETCONF:

  1. Gere uma chave privada e especifique o comprimento da chave em bits.
    Nota:

    Os dispositivos Junos não suportam o uso de chaves de algoritmo de assinatura digital de curva elíptica (ECDSA) em sessões de NETCONF sobre TLS.

  2. Se você estiver definindo o nome de usuário netconf no certificado do cliente, atualize seu opensl.cnf ou arquivo de configuração equivalente para definir a subjectAltName=dirName extensão e especificar o nome de usuário netconf.
  3. Gere uma solicitação de assinatura de certificado (CSR), que contém a chave pública da entidade e informações sobre sua identidade.
  4. Gere o certificado fazendo um dos seguintes:
    • Envie o CSR a uma autoridade de certificado para solicitar um certificado X.509 e forneça o arquivo de configuração para incluir quaisquer extensões adicionais.

    • Assine o CSR com um CA para gerar o certificado do cliente e inclua as opções e -extensions opções -extfile caso você precise consultar seu arquivo de configuração e extensões.

  5. Verifique se o campo e as extensões de Nome Comum (CN), se fornecidas, estão corretas.

Da mesma forma, gere o certificado do servidor.

  1. Gere uma chave privada e especifique o comprimento da chave em bits.

  2. Gere uma solicitação de assinatura de certificado (CSR).

  3. Gere o certificado fazendo um dos seguintes:

    • Envie o CSR a uma autoridade de certificado para solicitar um certificado X.509.

    • Assine o CSR com um CA para gerar o certificado do servidor.

A infraestrutura de chave pública (PKI) do Junos OS oferece uma infraestrutura para o gerenciamento de certificados digitais. Você também pode usar o Junos OS PKI para gerar o par de chaves e o CSR necessários para o certificado local do servidor. Para obter informações sobre o Junos OS PKI e os diferentes métodos de obtenção de certificados, consulte Certificados Digitais com visão geral do PKI e documentação relacionada.

Instale o certificado local do servidor no Junos PKI

O certificado local do servidor é o certificado X.509 para o dispositivo Junos que funciona como o servidor NETCONF e TLS. Você deve instalar o certificado local para o dispositivo no Junos PKI.

Para instalar o certificado local do servidor no Junos PKI:

  1. Copie o certificado e a chave privada do dispositivo Junos.
  2. Carregue o certificado do arquivo especificado usando o Junos PKI.

    Defina um identificador de certificado exclusivo e especifique os caminhos de arquivo para o certificado e o par de chave ou chave privada. Por exemplo:

  3. (Opcional) Verifique o certificado.

Instale os certificados ca no Junos PKI

Um certificado digital é um meio eletrônico para verificar sua identidade por meio de um terceiro confiável, conhecido como autoridade de certificado (CA). Ao estabelecer uma sessão NETCONF sobre TLS, o cliente e o servidor devem ter um certificado digital X.509 para autenticar sua identidade. Você deve configurar o certificado ca raiz necessário para validar o certificado de cliente na infraestrutura de chave pública (PKI) junos. Você também deve configurar quaisquer CAs necessários para validar o certificado local do servidor no Junos PKI. Assim, para cada CA, você configura um perfil de autoridade de certificado e carrega o certificado ca correspondente e a lista de revogação de certificados (CRL). Essa configuração permite que o dispositivo Junos valide um certificado contra o CA.

Nota:

Se a cadeia de certificados de servidor não incluir CAs intermediários, você deve configurar o certificado CA raiz. Caso contrário, você só precisa configurar os CAs intermediários.

Para configurar manualmente um perfil de CA e carregar o certificado ca correspondente e o CRL:

  1. Baixe os certificados de CA e quaisquer listas de revogação de certificados ca (CRLs) necessárias para o dispositivo Junos.
  2. Configure um perfil ca confiável para cada CA necessário, por exemplo:
  3. Carregue o certificado ca associado ao perfil ca raiz do cliente no Junos PKI e especifique a localização do arquivo do certificado.
  4. Carregue os certificados ca associados ao perfil ca do servidor no Junos PKI e especifique a localização do arquivo do certificado.
    • Se a cadeia de certificados tiver apenas um CA raiz, carregue o certificado de CA raiz.

    • Se a cadeia de certificados incluir CAs intermediários, você só precisa carregar os certificados de CA intermediários.

  5. Carregue o CRL para um determinado perfil de CA quando necessário, por exemplo:
    Nota:

    Se você não configurar uma lista de revogação de certificados para um determinado perfil ca, então você deve desativar verificações de revogação configurando a revocation-check disable declaração no [edit security pki ca-profile profile-name] hierarchy level.

  6. (Opcional) Verifique o certificado ca.

Habilite o serviço NETCONF pelo TLS

Para habilitar o NETCONF sobre O TLS:

  1. Configure o ID do certificado local do servidor e faça referência ao ID definido quando o certificado foi instalado.
  2. Defina como o servidor deve obter o nome de usuário NETCONF para um determinado cliente.
  3. (Opcional) Configure opções de rastreamento para sessões NETCONF sobre TLS, por exemplo:
  4. Confirmar a configuração.

Configure o mapeamento de nome de usuário do TLS cliente para NETCONF

Você pode definir o mapeamento entre o certificado do cliente e o nome de usuário NETCONF para clientes específicos. Se você não definir um mapeamento para um cliente específico, então você deve definir um mapeamento padrão para que o cliente estabeleça uma sessão NETCONF sobre TLS.

Para definir o mapeamento para obter o nome de usuário NETCONF para um determinado cliente:

  1. Determine a impressão digital do certificado do cliente executando o comando apropriado para o seu ambiente no sistema de gerenciamento de rede e o formato do certificado, por exemplo:
  2. Determine o identificador de algoritmo de hashing da impressão digital conforme definido no RFC 5246, The Transport Layer Security (TLS) Protocol Version 1.2.

    Esses exemplos usam o algoritmo de hashing SHA-256, que corresponde ao valor do identificador de 4.

    • md5: 1

    • sha1: 2

    • sha224: 3

    • sha256: 4

    • sha384: 5

    • sha512: 6

  3. No dispositivo Junos, defina um identificador exclusivo para o cliente.
  4. Configure a impressão digital do certificado do cliente no formato x509c2n:tls-fingerprint.

    O primeiro octet da impressão digital é o identificador de algoritmos de hashing, e os octets restantes são o resultado do algoritmo de hashing.

  5. Configure o tipo de mapa que define como o servidor deriva o nome de usuário NETCONF para esse cliente.
  6. Se o tipo de mapa forspecified, configure o nome de usuário NETCONF para usar para esse cliente.
  7. Confirmar a configuração.

Configure o mapeamento padrão do nome de usuário NETCONF

Você pode definir um mapeamento padrão usado para obter o nome de usuário NETCONF quando um cliente não corresponde a um cliente configurado no nível de [edit system services netconf tls client-identity] hierarquia.

Para definir o mapeamento padrão para obter o nome de usuário NETCONF:

  1. Configure o tipo de mapa padrão que o servidor usa para obter o nome de usuário NETCONF.
  2. Se o tipo de mapa forspecified, configure o nome de usuário padrão do NETCONF.
  3. Confirmar a configuração.

Configure a conta do usuário para o usuário NETCONF

Ao estabelecer uma sessão NETCONF sobre TLS, o servidor mapeia o certificado do cliente para o usuário NETCONF que executa as operações no dispositivo para essa sessão. O Junos OS oferece suporte a usuários locais e usuários remotos LDAP para sessões NETCONF-over-TLS. O usuário do NETCONF deve ter uma conta de usuário definida localmente no dispositivo, ou deve ser autenticada por um servidor LDAP, que depois mapeia-a para uma conta de modelo de usuário local que é definida localmente no dispositivo. As instruções a seguir explicam como criar uma conta de usuário em dispositivos Junos.

Para criar uma conta de usuário para o usuário NETCONF em um dispositivo Junos:

  1. Configure a user declaração com um nome de usuário exclusivo e inclua a class declaração para especificar uma classe de login que tenha as permissões necessárias para que todas as ações sejam executadas pelo usuário.

    Por exemplo, a configuração a seguir define dois usuários: netconf-user e netconf-default-user.

  2. (Opcional) Configure as declarações e full-name as uid declarações para especificar o ID e o nome do usuário.
  3. Comprometa a configuração para ativar a conta do usuário no dispositivo.
  4. Repita as etapas anteriores em cada dispositivo Junos, onde o cliente estabelece sessões NETCONF sobre TLS.

Inicie a sessão NETCONF-over-TLS

O sistema de gerenciamento de rede atua como o cliente NETCONF e TLS. Você pode usar qualquer software para gerenciar o protocolo TLS para iniciar a sessão NETCONF-over-TLS com o dispositivo Junos.

Para iniciar a sessão NETCONF-over-TLS:

  1. Inicie a conexão com o servidor NETCONF na porta 6513 e forneça o certificado e a chave do cliente, o certificado CA raiz para o servidor e todos os certificados de CA intermediários necessários para validar o certificado do cliente.
  2. Verifique se os mapas de sessão são para o usuário NETCONF correto.

    O servidor emite o nome de usuário NETCONF para essa sessão durante o estabelecimento da sessão.

  3. Realize as operações do NETCONF conforme necessário.
  4. Encerre a sessão NETCONF e a conexão TLS.