Enhanced Outbound HTTPS에 대한 NETCONF 및 쉘 세션
요약 클라이언트 애플리케이션은 지원되는 Junos 디바이스에서 향상된 아웃바운드 HTTPS를 사용하여 NETCONF(Network Configuration Protocol) 세션 및 쉘 세션을 설정할 수 있습니다.
Enhanced Outbound HTTPS에 대한 NETCONF 및 셸 세션 이해
- 아웃바운드 HTTPS를 통한 NETCONF 및 셸 세션의 이점
- 아웃바운드 HTTPS에 대한 NETCONF 및 셸 세션 개요
- 향상된 아웃바운드 HTTPS를 통한 세션을 위한 연결 워크플로
아웃바운드 HTTPS를 통한 NETCONF 및 셸 세션의 이점
NETCONF 또는 셸 클라이언트 애플리케이션을 활성화하여 다른 프로토콜을 통해 액세스할 수 없는 디바이스를 관리할 수 있습니다.
아웃바운드 HTTPS 클라이언트에 대한 인증서 기반 인증을 사용하여 디바이스의 원격 관리를 활성화합니다.
아웃바운드 HTTPS에 대한 NETCONF 및 셸 세션 개요
지원되는 Junos 디바이스와 네트워크 관리 시스템 사이에 아웃바운드 HTTPS에 NETCONF 및 셸 세션을 설정할 수 있습니다. 아웃바운드 HTTPS에 대한 NETCONF 또는 셸 세션을 사용하면 SSH와 같은 다른 프로토콜을 통해 액세스할 수 없는 디바이스를 원격으로 관리할 수 있습니다. 예를 들어 디바이스가 방화벽 뒤에 있고 방화벽 또는 다른 보안 도구가 해당 프로토콜을 차단하는 경우 이러한 작업이 발생할 수 있습니다. 반면 HTTPS는 대부분의 환경에서 일반적으로 아웃바운드로 허용되는 표준 포트를 사용합니다.
지원되는 디바이스에서 Junos 소프트웨어 이미지에는 아웃바운드 HTTPS를 사용하여 NETCONF 또는 쉘 세션 구축을 지원하는 JET(Juniper Extension Toolkit) 애플리케이션이 포함되어 있습니다. JET 애플리케이션은 gRPC 프레임워크를 사용하여 네트워크 관리 시스템에서 실행되는 gRPC 서버로 구성된 아웃바운드 HTTPS 클라이언트에 연결합니다. gRPC는 언어 독립적인 오픈 소스 원격 프로시저 호출(RPC) 프레임워크입니다. 그림 1 은 가장 간단한 형식으로 아웃바운드 HTTPS 설정을 보여줍니다.
이 시나리오에서 gRPC 서버는 NETCONF/셸 클라이언트 역할을 하며 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF/쉘 서버입니다. gRPC 서버는 지정된 포트에서 연결 요청을 수신하며, 이는 포트 443의 기본값입니다. JET 애플리케이션을 확장 서비스로 구성합니다. 관련 연결 및 인증 정보가 스크립트로 전달됩니다. 스크립트가 실행되는 동안 구성된 호스트 및 포트의 gRPC 서버에 자동으로 연결을 시도합니다.
JET 애플리케이션과 gRPC 서버는 TLS 암호화 gRPC 세션을 통해 영구 HTTPS 연결을 설정합니다. JET 애플리케이션은 X.509 디지털 인증서를 사용하여 gRPC 서버를 인증하고 인증이 성공하면 요청된 NETCONF 또는 쉘 세션이 이 연결을 통해 설정됩니다. NETCONF 운영 및 쉘 명령은 확장 서비스 애플리케이션을 위해 구성된 사용자의 계정 권한에 따라 실행됩니다.
아웃바운드 HTTPS 연결은 X.509 디지털 인증서를 사용하여 gRPC 서버를 인증합니다. 디지털 인증서는 인증 기관 또는 인증 기관(CA)으로 알려진 신뢰할 수 있는 타사를 통해 신원을 확인하는 전자적 수단입니다. 인증서 당국은 인증서 검증을 통해 두 엔드포인트 간에 안전한 연결을 설정하는 데 사용할 수 있는 디지털 인증서를 발행합니다. X.509 표준은 인증서의 형식을 정의합니다. 지원되는 Junos 디바이스에서 아웃바운드 HTTPS를 통해 NETCONF 또는 쉘 세션을 설정하려면 gRPC 서버에 유효한 X.509 인증서가 있어야 합니다.
향상된 아웃바운드 HTTPS는 다음을 지원합니다.
-
여러 아웃바운드 HTTPS 클라이언트에 연결
-
각 아웃바운드 HTTPS 클라이언트에 대해 여러 개의 백업 gRPC 서버 구성
-
특정 클라이언트를 통한 다수의 동시 NETCONF 및 셸 세션 설정
-
자체 서명 또는 CA 서명 X.509 디지털 인증서를 사용하여 아웃바운드 HTTPS 클라이언트 인증
-
공유 비밀을 사용하여 Junos 디바이스 인증
향상된 아웃바운드 HTTPS를 통한 세션을 위한 연결 워크플로
아웃바운드 HTTPS의 NETCONF 또는 쉘 세션에서 네트워크 관리 시스템에서 실행되는 gRPC 서버는 NETCONF/쉘 클라이언트 역할을 하며, Junos 디바이스의 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF/쉘 서버입니다. 여러 아웃바운드 HTTPS 클라이언트를 구성할 수 있으며, 각 클라이언트에 대해 하나 이상의 백업 gRPC 서버를 구성할 수 있습니다. JET 애플리케이션은 클라이언트 서버 목록에 있는 하나의 gRPC 서버에 한 번만 연결합니다.
gRPC 클라이언트 및 서버는 아웃바운드 HTTPS를 통해 NETCONF 또는 셸 세션을 설정하기 위해 다음 작업을 수행합니다.
-
gRPC 서버는 기본 포트 443에서 지정된 포트에서 들어오는 연결을 수신하거나 포트가 지정되지 않은 경우 수신합니다.
-
gRPC 클라이언트는 구성된 gRPC 서버 및 포트로 TCP/IP 연결을 시작합니다. 하나 이상의 백업 gRPC 서버를 사용하여 아웃바운드 HTTPS 클라이언트를 구성하는 경우, gRPC 클라이언트는 연결을 설정할 때까지 목록의 각 서버에 연결하려고 합니다.
-
gRPC 클라이언트는 TLS
ClientHello
핸드셰이크를 시작하기 위해 TLS 메시지를 보냅니다. -
gRPC 서버는 메시지와 인증서를
ServerHello
보냅니다. -
gRPC 클라이언트는 gRPC 서버의 ID를 확인합니다.
-
gRPC 클라이언트는 아웃바운드 HTTPS 클라이언트에 대해 구성된 디바이스 ID 및 공유 비밀을 gRPC 서버로 보냅니다.
-
아웃바운드 HTTPS 클라이언트는 NETCONF 또는 셸 세션을 요청하고, gRPC 서버는 디바이스 ID와 공유 비밀을 사용하여 Junos 디바이스를 인증합니다. 인증이 성공하면 세션이 설정됩니다.
-
NETCONF 세션이 요청되면 서버와 클라이언트는 NETCONF
<hello>
메시지를 교환합니다. -
NETCONF 또는 쉘 클라이언트 애플리케이션은 필요에 따라 작업을 수행합니다.
gRPC 클라이언트는 동일한 gRPC 서버로 다른 TCP/IP 연결을 시작하고 gRPC 클라이언트와 서버는 이 프로세스를 반복하여 아웃바운드 HTTPS 클라이언트가 네트워크 디바이스로 여러 NETCONF 및 쉘 세션을 설정할 수 있도록 합니다.
향상된 아웃바운드 HTTPS를 통해 NETCONF 및 셸 세션을 설정하는 방법
Junos 소프트웨어 이미지의 일부로 포함된 JET 애플리케이션을 사용하여 네트워크 관리 시스템(NMS)과 지원되는 Junos 디바이스 간에 NETCONF 및 쉘 세션을 아웃바운드 HTTPS에 설정할 수 있습니다. 확장 서비스로 구성된 JET 애플리케이션은 NMS에서 실행되는 gRPC 서버에 대한 연결을 시작하고 TLS 암호화 gRPC 세션을 통해 영구 HTTPS 연결을 설정합니다. NETCONF 또는 쉘 세션은 이 HTTPS 연결을 통해 실행됩니다. 이 시나리오에서 gRPC 서버는 NETCONF/셸 클라이언트이고 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF/쉘 서버입니다.
향상된 아웃바운드 HTTPS를 통한 세션을 설정하려면 다음과 같은 하드웨어와 소프트웨어가 필요합니다.
Python 3.5 이상에서 실행되는 네트워크 관리 시스템
Junos OS 실행 중인 디바이스 또는 JET 애플리케이션 실행을 지원하는 업그레이드된 FreeBSD 릴리스 20.3 이상에서 Junos OS 실행하는 디바이스
참고:지원되는 디바이스의 경우 기능 탐색기를 참조하십시오.
그림 2 는 다음 작업에서 참조된 설정을 보여줍니다. Junos 디바이스의 관리 인터페이스 이름은 플랫폼 및 OS에 따라 다릅니다.
클라이언트와 서버가 아웃바운드 HTTPS를 통해 NETCONF 또는 셸 세션을 설정하기 전에 다음 섹션에서 설명한 요구 사항을 충족해야 합니다.
- gRPC 서버에 대한 X.509 인증서 획득
- gRPC 서버 설정
- NETCONF 또는 셸 사용자에 대한 사용자 계정 구성
- 아웃바운드 HTTPS 클라이언트 구성
- Junos 디바이스에서 아웃바운드 HTTPS 확장 서비스 구성
- NETCONF 또는 쉘 세션 시작
gRPC 서버에 대한 X.509 인증서 획득
아웃바운드 HTTPS 연결은 X.509 공개 키 인증서를 사용하여 네트워크 관리 시스템에서 실행되는 gRPC 서버의 ID를 인증합니다. gRPC 스택은 X.509 v3 인증서 형식을 지원합니다.
gRPC 서버 인증서의 요구 사항은 다음과 같습니다.
-
인증서는 인증 기관(CA)이 자체 서명하거나 서명할 수 있습니다.
-
인증서는 공통 이름(CN) 필드에서 gRPC 서버의 호스트 이름을 정의하거나 SAN(SubjectAltName) IP 주소 필드에서 gRPC 서버의 IP 주소를 정의해야 합니다. Junos 디바이스는 서버에 대한 연결을 설정하기 위해 동일한 값을 사용해야 합니다. 인증서가 SubjectAltName IP 주소 필드를 정의하는 경우, 디바이스는 인증 중에 공통 이름 필드를 무시합니다.
-
인증서는 PEM 인코딩되어야 하며 .crt 확장을 사용해야 합니다.
-
인증서와 키는 각각 server.crt 와 server.key라는 이름이 되어야 합니다.
OpenSSL을 사용하여 인증서를 획득하는 경우:
gRPC 서버 설정
네트워크 관리 시스템에는 다음 소프트웨어가 필요합니다.
Python 3.5 이상
Junos 디바이스의 네트워크 관리 시스템과 JET 애플리케이션은 gRPC 프레임워크를 사용하여 TLS 암호화 gRPC 세션을 통해 영구 HTTPS 연결을 설정합니다. 네트워크 관리 시스템은 gRPC 스택을 설치하고 연결 요청에 대해 지정된 포트에서 수신하는 gRPC 서버를 실행해야 합니다. 주니퍼 네트웍스 GitHub의 주니퍼 네트웍스 리포지토리에서 netconf-https-outbound
필요한 프로토 정의 파일 및 샘플 gRPC 서버 애플리케이션 파일을 제공합니다.
이 섹션에서는 Ubuntu 18.04를 실행하는 네트워크 관리 시스템에서 gRPC 서버를 설정합니다. 다른 운영 체제를 실행하는 경우 OS에 적합한 명령을 사용합니다.
Ubuntu 18.04를 실행하는 네트워크 관리 시스템에서 gRPC 서버를 설정하려면,
gRPC 서버는 수신 연결을 위해 지정된 포트에서 무기한 수신합니다. gRPC 서버에 연결하도록 Junos 디바이스를 구성하고 연결 및 세션이 설정된 후에는 NETCONF 작업 또는 쉘 명령을 적절히 수행할 수 있습니다.
NETCONF 또는 셸 사용자에 대한 사용자 계정 구성
아웃바운드 HTTPS에서 NETCONF 또는 셸 세션을 설정하려면 Junos 디바이스에서 로컬로 사용자 계정을 생성해야 합니다. 이 계정을 사용하여 해당 세션에 대한 디바이스에서 NETCONF 또는 쉘 작업을 수행합니다. JET 응용 프로그램은 이 계정에 대해 구성된 권한을 사용하여 실행됩니다.
Junos 디바이스에서 사용자 계정을 생성하려면 다음을 수행합니다.
아웃바운드 HTTPS 클라이언트 구성
향상된 아웃바운드 HTTPS를 사용하면 계층 수준에서 여러 아웃바운드 HTTPS 클라이언트를 [edit system services outbound-https]
구성하고 각 클라이언트에 대해 여러 개의 백업 gRPC 서버를 구성할 수 있습니다. JET 애플리케이션은 클라이언트 서버 목록에 있는 하나의 gRPC 서버에 한 번만 연결합니다.
디바이스를 구성하기 전에 다음 정보가 필요합니다.
-
gRPC 서버가 연결을 수신하는 포트입니다.
-
SubjectAltName IP 주소 필드의 내용 또는 그러한 필드가 없는 경우 gRPC 서버 인증서의 공통 이름(CN) 필드입니다.
-
gRPC 서버 인증서의 내용(자체 서명된 경우, CA 인증서의 내용인 경우, 서버 인증서가 인증서 체인을 사용하여 인증된 경우).
아웃바운드 HTTPS 클라이언트를 구성하려면,
아웃바운드 HTTPS 확장 서비스가 이미 실행 중이고 아웃바운드 HTTPS 클라이언트를 추가, 삭제 또는 수정하고 구성을 커밋하면 변경 사항이 적용하려면 서비스를 다시 시작할 필요가 없습니다. 자동으로 픽업됩니다.
Junos 디바이스에서 아웃바운드 HTTPS 확장 서비스 구성
아웃바운드 HTTPS에서 NETCONF 및 쉘 세션을 지원하는 Junos 릴리스에는 JET 애플리케이션과 소프트웨어 이미지의 지원 파일이 포함됩니다. 표 1 에서는 디바이스의 /var/db/scripts/jet directory에 있는 파일을 간략하게 설명합니다.
파일 |
설명 |
---|---|
nc_grpc_app.pyc |
네트워크 관리 시스템에서 실행되는 gRPC 서버와 영구 HTTPS 연결을 설정하기 위해 gRPC 프레임워크를 사용하는 JET 애플리케이션입니다. |
nc_grpc_app_lib.pyc |
필수 라이브러리 |
아웃바운드 HTTPS에서 세션에 대한 Junos 디바이스를 구성하려면 다음을 수행합니다.
애플리케이션이 성공적으로 시작되면 outbound_https.log 파일에 메시지를 기록합니다.
구성을 커밋한 후 애플리케이션이 자동으로 시작되지 않으면 이 애플리케이션과 관련된 로그 메시지를 검토하여 문제를 해결합니다. Junos OS 명령을 실행합니다show log jet.log
. 진화한 Junos OS 및 show log messages
명령을 실행 show trace application cscript
합니다.
NETCONF 또는 쉘 세션 시작
네트워크 관리 시스템에서 실행되는 gRPC 서버는 NETCONF/쉘 클라이언트 역할을 하며, Junos 디바이스의 JET 애플리케이션은 gRPC 클라이언트 및 NETCONF/쉘 서버 역할을 합니다. gRPC 서버 및 JET 애플리케이션을 시작한 후 JET 애플리케이션은 지정된 포트의 gRPC 서버에 연결하려고 시도합니다. 연결이 성공하면 gRPC 클라이언트가 gRPC 서버를 인증합니다. 서버 인증이 성공하면 하나 이상의 NETCONF 또는 셸 세션을 요청할 수 있습니다.
시작하기 전에 다음 정보가 필요합니다.
-
아웃바운드 HTTPS 클라이언트용으로 구성된 디바이스 식별자 및 공유 암호 문자열
향상된 아웃바운드 HTTPS를 통해 NETCONF 또는 쉘 세션을 구축하려면 다음을 수행합니다.