Veriexec 개요
Verified Exec(veriexec라고도 함)은 디바이스의 무결성을 손상시킬 수 있는 무단 소프트웨어 및 활동으로부터 Junos 운영 체제(OS)를 보호하는 파일 서명 및 확인 체계입니다. 본래 NetBSD OS용으로 개발된 veriexec은 Junos OS에 맞게 조정되었으며, Junos OS 릴리스 7.5 이후부터 기본적으로 활성화되었습니다.
인증된 파일, 즉 Junos OS와 함께 제공되는 특정 파일에는 파일을 사용할 수 있는지(실행 또는 열 수 있는지) 여부를 결정하기 위해 veriexec이 확인하는 관련 지문이 있습니다. 유효한 지문이 없는 파일은 확인된 입력이 필요한 애플리케이션에서 실행하거나 읽을 수 없습니다.
/bin/sh 에는 확인된 입력이 필요하지 않습니다. 위험 관점에서 볼 때 사용자 인증 및 권한을 통해 이미 제어되는 대화형 명령과 동일하기 때문에 임의의 스크립트를 실행하는 데 사용할 수 있습니다. 그러나 확인된 셸 스크립트에 임의의 스크립트, 즉 매니페스트에 서명이 없는 파일을 실행하기 위한 지침이 포함되어 있으면 해당 파일을 실행할 수 없습니다.
Veriexec 작동 방식
Veriexec는 커널에 변경할 수 없는 상태로 유지되어야 하는 모든 실행 파일 및 기타 파일에 대한 지문 집합으로 구성된 디지털 서명된 매니페스트를 제공합니다. veriexec 로더는 매니페스트의 디지털 서명이 성공적으로 확인된 경우에만 매니페스트의 내용을 커널에 공급합니다. 그러면 커널은 파일이 지문과 일치하는지 확인할 수 있습니다. veriexec가 적용되는 경우 확인된 지문이 있는 실행 파일만 실행됩니다. 보호된 파일은 쓰거나 수정하거나 변경할 수 없습니다.
각 설치 이미지에는 매니페스트가 포함되어 있습니다. 매니페스트는 읽기 전용입니다. 여기에는 다음과 같은 항목이 포함됩니다.
etc/rc sha1=478eeda6750c455fbfc18eeb06093e32a341911b uid=0 gid=0 mode=644 etc/rc.verify sha1=15566bb2731abee890fabd0ae8799e02071e006c uid=0 gid=0 mode=644 usr/libexec/veriexec-ext.so.1 sha1=8929292d008d12cd5beb2b9d9537458d4974dd22 uid=0 gid=0 mode=550 no_fips sbin/verify-sig sha1=cd3ffd45f30f1f9441e1d4a366955d8e2c284834 uid=0 gid=0 mode=555 no_ptrace sbin/veriexec sha1=7b40c1eae9658f4a450eb1aa3df74506be701baf uid=0 gid=0 mode=555 no_ptrace jail/usr/bin/php sha1=c444144fef5d65f7bbc376dc3ebb24373f1433a2 uid=0 gid=0 mode=555 indirect no_fips usr/sbin/chassisd sha1=61b82b36da9c6fb7eeb413d809ae2764a8a3cebc uid=0 gid=0 mode=555 trusted
파일이 수정되고 결과 지문이 매니페스트의 지문과 다른 경우 다음 예와 같은 로그 메시지가 표시됩니다.
/kernel:veriexec:fingerprintfordev100728577,file70750 64ea873ed0ca43b113f87fa25fb30f9f60030cec!= 0d9457c041bb3646eb4b9708ba605facb84a2cd0
로그 메시지의 형식은 다음과 같습니다.
/kernel:veriexec:fingerprintfordev<deviceid>,file<fileid><calculatedfingerprint>!= <fingerprintinthemanifest>
지문 불일치는 파일이 수정되었음을 나타냅니다. 파일을 실행하려고 하지 마십시오. 손상된 코드가 포함될 수 있습니다. JTAC에 문의하십시오.
Veriexec의 중요성
Veriexec은 주니퍼 네트웍스 라우터, 스위치 및 방화벽의 시스템 보안을 침해하려는 사람들로부터 보호하기 위한 효과적이고 중요한 도구입니다. 시스템에 발판을 마련하거나, 지속적인 무단 액세스를 얻거나, 시스템을 장애 상태로 전환하려는 위협 행위자를 차단합니다. 이러한 행위자가 서명되지 않은 임의의 이진 파일을 실행할 수 있는 경우 무단 수정을 수행하고 보안 정책을 위반하는 맬웨어 또는 기타 코드를 실행할 수 있습니다.
고객은 JET SDK를 사용하여 veriexec이 적용된 서명 및 권한 부여 코드를 Junos OS에 추가할 수 있습니다. SDK 솔루션에 대한 자세한 내용은 Juniper Extension Toolkit 개발자 가이드의 디바이스 내 JET 애플리케이션 개발을 참조하십시오.
Veriexec가 Junos OS를 실행하는 디바이스에 적용되는지 확인하는 방법
다음 하위 섹션에서는 veriexec가 적용되는지 여부를 확인하는 방법에 대한 절차를 제공합니다.
일부 Junos OS 플랫폼은 veriexec 적용이 비활성화된 Junos OS의 옵션 버전(Junos Enhanced Automation 또는 Junos Flex라고 함)을 제공합니다. Junos Enhanced Automation에 대한 자세한 내용은 Enhanced Automation을 통해 Junos OS를 실행하는 디바이스의 Junos 자동화 개선 사항 개요를 참조하십시오.
Junos OS 릴리스 15.1 이상에는 sysctl security.mac.veriexec.state 명령을 사용합니다
관리자는 Junos OS CLI 셸에서 다음 명령을 실행하여 veriexec가 적용되는지 확인할 수 있습니다.
셸을 시작합니다.
username@hostname> start shell %
sysctl security.mac.veriexec.state
명령을 사용합니다.% sysctl security.mac.veriexec.state security.mac.veriexec.state: loaded active enforce %
veriexec가 적용되면 출력은
security.mac.veriexec.state: loaded active enforce
입니다. veriexec가 적용되지 않으면 출력은security.mac.veriexec.state: loaded active
입니다.
이 security.mac.veriexec.state
명령은 Junos OS 릴리스 15.1 이상에서만 유효합니다.
Veriexec가 작동하는지 확인하는 또 다른 방법
아래와 같이 승인된 파일(여기서는 /usr/bin/id)을 새 위치에 복사하여 veriexec이 작동하는지 확인할 수 있습니다. Veriexec는 /usr/bin/id에 대한 유효한 지문이 있더라도 파일이 동일하더라도 /tmp/id 에 대한 지문이 없기 때문에 조작을 방지합니다. 무슨 일이 일어나고 있는지는 veriexec가 파일 자체가 아니라 복사 후 동일하지 않은 파일의 기본 Linux 속성을 평가한다는 것입니다.
셸을 시작합니다.
username@hostname> start shell #
디렉터리를 변경한 다음 예제 파일 /usr/bin/id 를 새 위치에 복사합니다.
# /usr/bin/id uid=928(username) gid=20 groups=20,0(wheel),10(field) # cp /usr/bin/id /tmp
결과
veriexec가 적용되고 있는 경우 인증 오류가 나타납니다. 그렇지 않은 경우 파일이 정상적으로 실행됩니다.
veriexec가 적용될 때의 출력(파일이 차단됨):
# /tmp/id /bin/sh: /tmp/id: Authentication error #
veriexec가 적용되지 않은 경우의 출력(파일이 복사됨):
# /tmp/id #
SRX 시리즈 디바이스용 Veriexec 지원 로더
veriexec 지원 로더는 TFTP 서버 또는 USB 스토리지 디바이스의 명령을 사용하여 install
Junos OS 이미지를 설치합니다.
install 명령을 사용하여
install tftp://[host]/
tftp 서버에서 Junos OS 이미지를 설치합니다.loader> install tftp://[host]/package
install 명령을 사용하여
install file:///
USB 스토리지 디바이스에서 Junos OS 이미지를 설치합니다.loader> install file:///package
veriexec 지원 로더는 Junos OS 이미지를 검증합니다. veriexec 지원 로더는 지문이 있는 새로운 Junos OS 이미지만 부팅하며 지문이나 커널 없이 기존 Junos OS 이미지를 부팅하지 않습니다. 이 nextboot
기능을 사용하여 현재 부팅 장치를 확인할 수 있습니다.
username@hostname# nextboot Platform: srx-sword eUSB usb current bootdev is: eUSB
Bootupgrade는 BIOS 펌웨어 업그레이드를 지원하기 위해 Junos OS 패키지에서 사용할 수 있는 도구입니다. 명령을 사용하여 bootupgrade
업그레이드하고, uboot를 확인하고, 수동으로 로드하고, 더 큰 크기의 veriexec 지원 로더를 설치할 수 있습니다. 명령은 bootupgrade -c loader
현재 로더의 버전 문자열을 인쇄합니다.
Veriexec 지원 로더를 Junos OS 이미지에 설치하기 전에 Junos OS 지문 식별이 두 듀얼 루트 파티션에서 수행됩니다. 두 듀얼 루트 파티션에 지문이 있는 Junos OS가 있는 경우에만 veriexec 지원 로더 설치가 허용됩니다.
Junos OS CLI 셸에서 veriexec 지원 로더를 설치합니다.
셸을 시작합니다.
username@hostname> start shell %
-
bootupgrade -l /boot/veloader
명령을 사용하여 veriexec 지원 로더를 설치합니다.% bootupgrade -l /boot/veloader Checking Loader CRC... veloader size 1251641 OK
여기에서 다양한 시나리오를 볼 수 있습니다.
Junos OS 릴리스 20.3R1 이상에서는 명령을 사용하여
request system software add /var/tmp/xxx.tgz no-copy no-validate
지문이 있는 Junos OS를 정상적으로 설치합니다.username@hostname> request system software add /var/tmp/junos-srxsme-20.4I-20200810_dev_common.0.0833.tgz no-copy no-validate Formatting alternate root (/dev/ad0s2a)... /dev/ad0s2a: 600.0MB (1228732 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 150.00MB, 9600 blks, 19200 inodes. super-block backups (for fsck -b #) at: 32, 307232, 614432, 921632 Installing package '/altroot/cf/packages/install-tmp/junos-20.4I-20200810_dev_common.0.0833' ... Verified junos-boot-srxsme.tgz signed by PackageDevelopmentECP256_2020 method ECDSA256+SHA256 Verified junos-srxsme-domestic signed by PackageDevelopmentECP256_2020 method ECDSA256+SHA256 Verified manifest signed by PackageDevelopmentECP256_2020 method ECDSA256+SHA256 WARNING: The software that is being installed has limited support. WARNING: Run 'file show /etc/notices/unsupported.txt' for details. JUNOS 20.4I-20200810_dev_common.0.0833 will become active at next reboot WARNING: A reboot is required to load this software correctly WARNING: Use the 'request system reboot' command WARNING: when software installation is complete Saving state for rollback ...
-
20.3R1 이전의 Junos OS 릴리스의 경우, veriexec 지원 로더가 사용 중이고 이전 릴리스의 대상 Junos OS 이미지가 veriexec 지원 로더에서 지원되지 않는 경우, 명령을 사용하여
request system software add /var/tmp/xxx.tgz no-copy no-validate
veriexec 지원 로더에서 이전 로더로 자동 다운그레이드합니다.username@hostname> request system software add /var/tmp/junos-srxsme-19.4R1.3.tgz no-copy no-validate WARNING: Package junos-19.4R1.3 version 19.4R1.3 is not compatible with current loader WARNING: Automatic recovering loader, please wait ... Upgrading Loader... ##################################### Verifying the loader image... OK WARNING: The new boot firmware will take effect when the system is rebooted. WARNING: Loader recover finish. Formatting alternate root (/dev/ad0s1a)... /dev/ad0s1a: 598.5MB (1225692 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 149.62MB, 9576 blks, 19200 inodes. super-block backups (for fsck -b #) at: 32, 306464, 612896, 919328 Installing package '/altroot/cf/packages/install-tmp/junos-19.4R1.3' ... Verified junos-boot-srxsme-19.4R1.3.tgz signed by PackageProductionEc_2019 method ECDSA256+SHA256 Verified junos-srxsme-19.4R1.3-domestic signed by PackageProductionEc_2019 method ECDSA256+SHA256 Verified junos-boot-srxsme-19.4R1.3.tgz signed by PackageProductionEc_2019 method ECDSA256+SHA256 V erified junos-srxsme-19.4R1.3-domestic signed by PackageProductionEc_2019 method ECDSA256+SHA256 JUNOS 19.4R1.3 will become active at next reboot WARNING: A reboot is required to load this software correctly WARNING: Use the 'request system reboot' command WARNING: when software installation is complete Saving state for rollback ...
-
request system software add /var/tmp/xxx
명령을 사용하여 Junos OS 패키지가 설치와 호환되는지 확인합니다.username@hostname> request system software add /var/tmp/junos-srxsme-19.4R2.3.tgz WARNING: Package junos-19.4R2.3 version 19.4R2.3 is not compatible with this system. WARNING: Please install a package with veloadr support, 20.3 or higher.
20.3R1 이전의 Junos OS 릴리스에서는 veriexec 지원 로더가 지원되지 않으므로 설치가 종료됩니다.