Sessões de NETCONF e Shell em HTTPS de saída aprimorado
RESUMO Os aplicativos do cliente podem estabelecer sessões de protocolo de configuração de rede (NETCONF) e sessões de shell usando HTTPS de saída aprimorado em dispositivos Junos suportados.
Entendendo as sessões de NETCONF e Shell em HTTPS de saída aprimorado
- Benefícios das sessões netconf e shell em HTTPS de saída
- Visão geral da NETCONF e Shell sobre HTTPS de saída
- Fluxo de trabalho de conexão para sessões em HTTPS de saída aprimorado
Benefícios das sessões netconf e shell em HTTPS de saída
Habilite o NETCONF ou os aplicativos de clientes shell para gerenciar dispositivos que não são acessíveis por meio de outros protocolos.
Habilite o gerenciamento remoto de dispositivos usando autenticação baseada em certificados para o cliente HTTPS de saída.
Visão geral da NETCONF e Shell sobre HTTPS de saída
Você pode estabelecer sessões netconf e shell sobre HTTPS de saída entre dispositivos Junos suportados e um sistema de gerenciamento de rede. Uma SESSÃO NETCONF ou shell sobre HTTPS de saída permite que você gerencie dispositivos que podem não estar acessíveis remotamente por meio de outros protocolos, como o SSH. Isso pode acontecer, por exemplo, se o dispositivo estiver por trás de um firewall, e o firewall ou outra ferramenta de segurança bloquear esses protocolos. O HTTPS, por outro lado, usa uma porta padrão, que normalmente é permitida a saída na maioria dos ambientes.
Em dispositivos suportados, a imagem do software Junos inclui um aplicativo Juniper Extension Toolkit (JET) que oferece suporte ao estabelecimento de uma sessão NETCONF ou shell usando HTTPS de saída. O aplicativo JET usa a estrutura gRPC para se conectar ao cliente HTTPS de saída, que consiste em um servidor gRPC em execução no sistema de gerenciamento de rede. gRPC é uma estrutura de chamada de procedimento remoto (RPC) agnóstica e de código aberto. A Figura 1 ilustra a configuração DE HTTPS de saída em sua forma mais simples.
Nesse cenário, o servidor gRPC atua como o cliente NETCONF/shell, e o aplicativo JET é o cliente gRPC e o servidor NETCONF/shell. O servidor gRPC ouve as solicitações de conexão na porta especificada, que é padrão para a porta 443. Você configura o aplicativo JET como um serviço de extensão. As informações relevantes de conexão e autenticação são passadas para o script. Enquanto o script é executado, ele tenta automaticamente se conectar ao servidor gRPC no host e porta configurados.
O aplicativo JET e o servidor gRPC estabelecem uma conexão HTTPS persistente em uma sessão de gRPC criptografada por TLS. O aplicativo JET autentica o servidor gRPC usando um certificado digital X.509 e, se a autenticação for bem sucedida, a sessão netconf ou shell solicitada é estabelecida sobre essa conexão. As operações do NETCONF e os comandos de shell são executados sob os privilégios de conta do usuário configurado para o aplicativo de serviço de extensão.
A conexão HTTPS de saída usa um certificado digital X.509 para autenticar o servidor gRPC. 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 validação de certificados. O padrão X.509 define o formato do certificado. Para estabelecer uma sessão NETCONF ou shell sobre HTTPS de saída em dispositivos Junos suportados, o servidor gRPC deve ter um certificado X.509 válido.
O HTTPS de saída aprimorado oferece suporte para:
-
Conectando-se a vários clientes HTTPS de saída
-
Configuração de vários servidores gRPC de backup para cada cliente HTTPS de saída
-
Estabelecendo várias sessões simultâneas de NETCONF e shell com um determinado cliente
-
Autenticando o cliente HTTPS de saída usando certificados digitais X.509 auto-assinados ou assinados por CA
-
Autenticando o dispositivo Junos usando um segredo compartilhado
Fluxo de trabalho de conexão para sessões em HTTPS de saída aprimorado
Em uma sessão netconf ou shell sobre HTTPS de saída, o servidor gRPC em execução no sistema de gerenciamento de rede atua como o cliente NETCONF/shell, e o aplicativo JET no dispositivo Junos é o cliente gRPC e servidor NETCONF/shell. Você pode configurar vários clientes HTTPS de saída e configurar um ou mais servidores gRPC de backup para cada cliente. O aplicativo JET se conecta a apenas um servidor gRPC na lista de servidores do cliente a qualquer momento.
O cliente e o servidor gRPC executam as seguintes ações para estabelecer uma SESSÃO NETCONF ou shell sobre HTTPS de saída:
-
O servidor gRPC ouve as conexões de entrada na porta especificada, ou se nenhuma porta for especificada, na porta padrão 443.
-
O cliente gRPC inicia uma conexão TCP/IP com o servidor e a porta gRPC configurados. Se você configurar um cliente HTTPS de saída com um ou mais servidores gRPC de backup, o cliente gRPC tenta se conectar a cada servidor da lista até que ele estabeleça uma conexão.
-
O cliente gRPC envia uma mensagem de TLS
ClientHello
para iniciar o processo de aperto de mão do TLS. -
O servidor gRPC envia uma
ServerHello
mensagem e seu certificado. -
O cliente gRPC verifica a identidade do servidor gRPC.
-
O cliente gRPC envia o ID do dispositivo e o segredo compartilhado configurado para esse cliente HTTPS de saída para o servidor gRPC.
-
O cliente HTTPS de saída solicita uma sessão NETCONF ou shell, e o servidor gRPC usa o ID do dispositivo e segredo compartilhado para autenticar o dispositivo Junos. Se a autenticação for bem sucedida, a sessão será estabelecida.
-
Se uma sessão netconf for solicitada, o servidor e o cliente trocam mensagens NETCONF
<hello>
. -
O aplicativo NETCONF ou shell client realiza as operações conforme necessário.
O cliente gRPC inicia outra conexão TCP/IP com o mesmo servidor gRPC, e o cliente e servidor gRPC repetem o processo, o que permite que o cliente HTTPS de saída estabeleça várias sessões netconf e shell com o dispositivo de rede.
Como estabelecer sessões de NETCONF e Shell em HTTPS de saída aprimorado
Você pode usar o aplicativo JET que está incluído como parte da imagem do software Junos para estabelecer sessões NETCONF e shell sobre HTTPS de saída entre sistemas de gerenciamento de rede (NMS) e dispositivos Junos suportados. O aplicativo JET, configurado como um serviço de extensão, inicia uma conexão a um servidor gRPC em execução em um NMS e estabelece uma conexão HTTPS persistente em uma sessão gRPC criptografada por TLS. A sessão netconf ou shell é executado por essa conexão HTTPS. Nesse cenário, o servidor gRPC é o cliente NETCONF/shell, e o aplicativo JET é o cliente gRPC e o servidor NETCONF/shell.
O hardware e o software a seguir são necessários para estabelecer sessões em HTTPS de saída aprimorado:
Sistema de gerenciamento de rede que executa Python 3.5 ou posterior
Dispositivo que executa o Junos OS Evolved ou dispositivo que executa o Junos OS com versão FreeBSD atualizada 20.3 ou posterior que também oferece suporte à execução de aplicativos JET
Nota:Para dispositivos compatíveis, veja Feature Explorer.
A Figura 2 ilustra a configuração mencionada nas tarefas a seguir. O nome da interface de gerenciamento no dispositivo Junos varia dependendo da plataforma e do SO.
Antes que o cliente e o servidor possam estabelecer uma netconf ou sessão de shell sobre HTTPS de saída, você deve satisfazer os requisitos discutidos nas seguintes seções:
- Obtenha um certificado X.509 para o servidor gRPC
- Configure o servidor gRPC
- Configure a conta do usuário para o usuário NETCONF ou Shell
- Configure os clientes HTTPS de saída
- Configure o serviço de extensão HTTPS de saída em dispositivos Junos
- Inicie a sessão NETCONF ou Shell
Obtenha um certificado X.509 para o servidor gRPC
A conexão HTTPS de saída usa um certificado de chave pública X.509 para autenticar a identidade do servidor gRPC em execução no sistema de gerenciamento de rede. A pilha de gRPC oferece suporte ao formato de certificado x.509 v3.
Os requisitos para o certificado do servidor gRPC são:
-
O certificado pode ser autoassinado ou assinado por uma autoridade de certificado (CA).
-
O certificado deve definir o nome de host do servidor gRPC no campo nome comum (CN), ou deve definir o endereço IP do servidor gRPC no campo endereço IP SubjectAltName (SAN). O dispositivo Junos deve usar o mesmo valor para estabelecer a conexão com o servidor. Se o certificado definir o campo endereço IP SubjectAltName, o dispositivo ignorará o campo Nome Comum durante a autenticação.
-
O certificado deve ser codificado por PEM e usar uma extensão .crt .
-
O certificado e sua chave devem ser nomeados servidor.crt e server.key, respectivamente.
Usar o OpenSSL para obter um certificado:
Configure o servidor gRPC
O sistema de gerenciamento de rede requer o seguinte software:
Python 3.5 ou posterior
O sistema de gerenciamento de rede e o aplicativo JET no dispositivo Junos usam a estrutura gRPC para estabelecer uma conexão HTTPS persistente em uma sessão de gRPC criptografada por TLS. O sistema de gerenciamento de rede deve ter a pilha gRPC instalada e executar um servidor gRPC que ouça a porta especificada para a solicitação de conexão. A Juniper Networks fornece os arquivos protode definição necessários e arquivos de aplicativo de servidor gRPC de amostra no repositório da Juniper Networks netconf-https-outbound
no GitHub.
Esta seção configura o servidor gRPC em um sistema de gerenciamento de rede que executa o Ubuntu 18.04. Se você estiver executando um sistema operacional diferente, use os comandos apropriados para o seu SO.
Para configurar o servidor gRPC em um sistema de gerenciamento de rede que executa o Ubuntu 18.04:
O servidor gRPC ouve indefinidamente a porta especificada para conexões de entrada. Depois de configurar o dispositivo Junos para se conectar ao servidor gRPC e uma conexão e sessão forem estabelecidas, você pode realizar operações netconf ou comandos de shell conforme apropriado.
Configure a conta do usuário para o usuário NETCONF ou Shell
Para estabelecer uma sessão netconf ou shell sobre HTTPS de saída, você deve criar uma conta de usuário localmente no dispositivo Junos. Você usa essa conta para realizar as operações netconf ou shell no dispositivo para essa sessão. O aplicativo JET é executado usando as permissões configuradas para esta conta.
Para criar uma conta de usuário em um dispositivo Junos:
Configure os clientes HTTPS de saída
O HTTPS de saída aprimorado permite configurar vários clientes HTTPS de saída no nível de [edit system services outbound-https]
hierarquia e configurar vários servidores gRPC de backup para cada cliente. O aplicativo JET se conecta a apenas um servidor gRPC na lista de servidores do cliente a qualquer momento.
Antes de configurar o dispositivo, você precisará das seguintes informações:
-
A porta em que o servidor gRPC está ouvindo as conexões.
-
O conteúdo do campo endereço IP SubjectAltName ou se não houver tal campo, o conteúdo do campo nome comum (CN) no certificado do servidor gRPC.
-
O conteúdo do certificado do servidor gRPC, se ele for auto-assinado ou o conteúdo dos certificados ca, se o certificado do servidor for autenticado usando uma cadeia de certificados.
Para configurar um cliente HTTPS de saída:
Se o serviço de extensão HTTPS de saída já estiver em execução, e você adicionar, excluir ou modificar um cliente HTTPS de saída e confirmar a configuração, você não precisa reiniciar o serviço para que as mudanças entrem em vigor. Eles são recolhidos automaticamente.
Configure o serviço de extensão HTTPS de saída em dispositivos Junos
Os lançamentos do Junos que oferecem suporte a sessões netconf e shell sobre HTTPS de saída incluem um aplicativo JET e arquivos de suporte na imagem do software. A Tabela 1 descreve os arquivos, que estão localizados no /var/db/scripts/jet directory no dispositivo.
Arquivo |
Descrição |
---|---|
nc_grpc_app.pyc |
Aplicativo JET que usa a estrutura gRPC para estabelecer uma conexão HTTPS persistente com um servidor gRPC em execução no sistema de gerenciamento de rede. |
nc_grpc_app_lib.pyc |
Bibliotecas necessárias |
Para configurar o dispositivo Junos para sessões em HTTPS de saída:
Após o início do aplicativo com sucesso, ele registra mensagens no arquivo outbound_https.log .
Se o aplicativo não começar automaticamente após confirmar a configuração, analise as mensagens de log relacionadas a este aplicativo para solucionar problemas. No Junos OS, emita o show log jet.log
comando. No Junos OS Evolved, emita e show trace application cscript
comanda show log messages
.
Inicie a sessão NETCONF ou Shell
O servidor gRPC em execução no sistema de gerenciamento de rede atua como o cliente NETCONF/shell, e o aplicativo JET no dispositivo Junos atua como o cliente gRPC e servidor NETCONF/shell. Depois de iniciar o servidor gRPC e o aplicativo JET, o aplicativo JET tenta se conectar ao servidor gRPC na porta especificada. Se a conexão for bem sucedida, o cliente gRPC autentica o servidor gRPC. Se a autenticação do servidor for bem sucedida, você pode solicitar uma ou mais sessões netconf ou shell.
Antes de começar, você precisará das seguintes informações:
-
O identificador de dispositivos e a string secreta compartilhada configurada para o cliente HTTPS de saída
Para estabelecer uma sessão NETCONF ou shell sobre HTTPS de saída aprimorado: