서명 키를 사용하여 기본적으로 타사 응용 프로그램 실행Running third-party applications natively with signing keys
서명 키 개요
Junos OS Evolved 릴리스 22.4R1부터 서명 키를 생성하고 이를 사용하여 실행 파일 또는 공유 객체에 서명할 수 있습니다. 실행 파일에 서명하면 디바이스에서 실행할 수 있는 권한이 부여되므로 신뢰할 수 있는 애플리케이션을 승인된 주니퍼 네트웍스 소프트웨어와 함께 실행하도록 승인할 수 있습니다.
Junos OS Evolved를 사용하려면 사용자가 실행을 위해 메모리에 매핑될 모든 파일에 서명해야 합니다. 여기에는 다음과 같은 파일 형식이 포함됩니다.
-
ELF(Executable and Linkable Format) 파일
-
공유 객체(.so) 파일
다음 유형의 파일은 서명할 필요가 없습니다.
-
Docker 컨테이너
-
컨테이너 내부의 애플리케이션
-
스크립트
참고:스크립트에 서명할 필요는 없지만 실행을 위해 서명된 인터프리터를 통해 전달해야 합니다. Junos OS Evolved는 셸 명령을 통해 사용할 수 있는 서명된 Python 2 및 Python 3 인터프리터와
python script-name
함께 설치됩니다.
서명 키는 IMA(Integrity Measurement Architecture)라는 Linux 하위 시스템에 의해 제어됩니다. IMA 정책은 파일을 실행하기 전에 수행해야 하는 작업을 정의하는 규칙으로 구성됩니다. IMA 측정 정책은 파일의 해시를 측정하고 저장하며, IMA 평가 정책은 파일에 유효한 해시 또는 디지털 서명이 있는지 확인합니다. IMA는 이 유효성 검사가 성공한 경우에만 파일 실행을 허용합니다. IMA에 대한 자세한 내용은 IMA와 함께 진화한 Junos OS의 무결성 보호를 참조하십시오.
서명 키는 시스템 키 저장소에 저장되며, 서명 키 확인에 사용된 인증서는 IMA 확장 인증 키에 저장됩니다. 서명 키를 생성하고, 가져오고, 보고, 사용하는 방법을 알아보려면 계속 읽어보세요.
서명 키 생성
키는 OpenSSL 명령줄 또는 OpenSSL 구성 파일을 통해 생성할 수 있습니다.
OpenSSL 명령줄을 사용하여 서명 키 생성
다음 예제 OpenSSL 명령을 사용하여 서명 키를 생성할 수 있습니다.
openssl req -new \ -newkey rsa:3072 \ # Create an RSA 3072 key -x509 \ # Need an X509 certificates -sha256 \ # Strong hashing algorithm -nodes \ # No encrypted private-key -out ima-cert.x509 \ # Name of the certificate file -outform DER \ # Key in DER format -keyout privkey.pem \ # Name of the private key
이 명령은 2개의 파일을 생성합니다.
-
privkey.pem
- 실행 파일에 서명하는 데 사용할 수 있는 PEM 인코딩 개인 키입니다. -
ima-cert.x509
- IMA 확장 인증 키에 로드할 DER 인코딩 인증서입니다.
OpenSSL 명령줄은 기능이 제한됩니다. X509v3 확장에 대한 값을 설정할 수 없습니다. 위의 명령을 사용하여 생성된 모든 키는 CA(인증 기관)로 사용할 수 있으므로 다른 인증서에 서명하는 데 사용할 수 있습니다. 이를 방지하기 위해 OpenSSL 구성 파일을 사용할 수 있습니다.
OpenSSL 구성 파일을 사용하여 서명 키 생성
라는 ima-x509.cnf
파일을 만들고 다음 내용을 붙여넣습니다.
# Begining of ima-x509.cnf [ req ] default_bits = 2048 distinguished_name = custom_distinguished_name prompt = no string_mask = utf8only x509_extensions = custom_exts [ custom_distinguished_name ] O = Juniper Networks, Inc. CN = IMA extended signing key emailAddress = john.smith@juniper.net [ custom_exts ] basicConstraints=critical,CA:FALSE keyUsage=digitalSignature subjectKeyIdentifier=hash authorityKeyIdentifier=keyid # EOF
구성 파일을 만든 후 다음 OpenSSL 명령을 사용하여 및 ima-cert.x509
파일을 만듭니다ima-privkey.pem
.
openssl req -new \ -nodes \ -utf8 \ -sha1 \ -days 36500 \ -batch \ -x509 \ -config ima-x509.cnf \ -outform DER -out ima-cert.x509 \ -keyout ima-privkey.pem
개인 키 파일은 서명 키를 생성하는 데 사용되며 인증서 파일은 ima-privkey.pem
ima-cert.x509
서명을 확인하는 데 사용됩니다. 두 파일 모두 서명 키를 시스템 키 저장소 및 IMA 확장 키링으로 가져오는 과정에서 사용됩니다.
서명 키를 시스템 키 저장소 및 IMA 확장 키링으로 가져오기
서명 키는 사용하기 전에 시스템 키 저장소로 가져와야 합니다. 시스템 키 저장소로 가져온 키는 자동으로 IMA 확장 키링으로 가져옵니다. 키는 두 라우팅 엔진 모두에서 가져옵니다.
서명 키를 시스템 키 저장소로 가져오려면 다음 2개의 필수 인수와 함께 명령을 사용합니다 request security system-keystore import
.
-
key-name
- 키의 고유한 이름 -
x509-cert
- DER로 인코딩된 인증서 파일의 경로
다음 예제 명령은 인증서 파일을 ima-cert.x509
사용하여 라는 ima-test-key 키를 만듭니다.
user@host> request security system-keystore import key-name ima-test-key x509-cert ima-cert.x509 Key Name: ima-test-key X509 Cert Path: /etc/ima-ext/ima-test-key/ima-cert.x509 Key SKI: b71b35e380517cd224b46072dadeb6c53e0a58a1
키를 성공적으로 system-keystore
가져오면 위의 출력에 키 이름, 디스크의 인증서 경로 및 키의 SKI(주체 키 식별자)가 표시됩니다. 다음 명령을 사용하여 이 SKI가 IMA 확장 키링에 로드된 키와 일치하는지 확인할 수 있습니다.
user@host> show security integrity extended-keyring Keyring 351716837 ---lswrv 0 0 keyring: ima_ext 684930381 --als--v 0 0 \_ asymmetric: Juniper Extended Signing Key: b71b35e380517cd224b46072dadeb6c53e0a58a1
시스템 키 저장소 및 IMA 확장 인증 키 보기
Junos OS Evolved CLI show
명령을 통해 시스템 키 저장소 및 IMA 확장 인증 키의 내용을 볼 수 있습니다.
show security integrity system-keystore
명령을 사용하여 시스템 키 저장소에서 사용 가능한 서명 키를 확인합니다.
user@host> show security integrity system-keystore Available signing keys: --- Key Name: ima-test-key X509 Cert Path: /etc/ima-ext/ima-test-key/ima-cert.x509 Key SKI: b71b35e380517cd224b46072dadeb6c53e0a58a1 --- Key Name: test-key1 X509 Cert Path: /etc/ima-ext/test-key1/ima-cert.x509 Key SKI: 332f173d61bba03fed5399a609523cbd3cfe66b3 --- Key Name: test-key2 X509 Cert Path: /etc/ima-ext/test-key2/ima-cert.x509 Key SKI: 26ebafd58b54f7b8b530d0311503fd84873ee754 ---
Key SKI 필드의 정보를 사용하여 이러한 키를 IMA 확장 키링에 매핑할 수 있습니다.
show security integrity extended-keyring
명령을 사용하여 IMA 확장 인증 키의 내용을 확인합니다.
user@host> show security integrity extended-keyring Keyring 351716837 ---lswrv 0 0 keyring: ima_ext 684930381 --als--v 0 0 \_ asymmetric: Juniper Extended Signing Key: b71b35e380517cd224b46072dadeb6c53e0a58a1 316767440 --als--v 0 0 \_ asymmetric: Juniper Extended Signing Key: 26ebafd58b54f7b8b530d0311503fd84873ee754 950431262 --als--v 0 0 \_ asymmetric: Juniper Extended Signing Key: 332f173d61bba03fed5399a609523cbd3cfe66b3
신청서에 서명하는 방법
서명 키를 시스템 키 저장소로 가져온 후 실행 가능한 바이너리에 서명하는 데 사용할 수 있습니다.
request security integrity measure file filename key key-name
명령을 사용하여 파일에 서명합니다.
다음 예제 명령은 라는 ima-test-key이름의 키로 서명되는 파일을 ima-test 보여줍니다.
user@host> request security integrity measure file ima-test key ima-test-key Successfully signed file /data/var/home/root/ima-test
다음과 같이 명령을 사용하여 request security integrity appraise file filename key key-name
파일이 성공적으로 서명되었는지 확인할 수 있습니다.
user@host> request security integrity appraise file ima-test key ima-test-key File /data/var/home/root/ima-test has a valid IMA signature
파일이 제대로 서명되지 않은 경우 다음 메시지가 표시됩니다.
user@host> request security integrity appraise file ima-test key ima-test-key warning: IMA signature verification failed for /data/var/home/root/ima-test using ima-test-key IMA appraisal for /data/var/home/root/ima-test failed.
파일에 서명한 후에는 Junos OS Evolved 디바이스에서 기본적으로 실행할 수 있습니다.