软件签名增强
软件签名增强
功能简介
“软件签名增强”功能是 FortiOS 7 推出的新功能,对重要的系统文件和可执行文件实现了 BIOS 级别签名和文件完整性检查。首先要保证在引导系统时加载的内核版本是经过签名的。系统一旦启动,将在活动系统上运行定期检查,以确认系统内核和进程以及 AV/IPS 引擎是经过签名的。此功能从 6.4.13、7.0.12、7.2.5、7.4.0、7.6.0 开始生效。
“软件签名增强”功能主要有三个模块。
启动保护
在设备启动时,会检查版本固件以及 AV/IPS 的签名合法性,在 BIOS 中支持 3 个“启动保护安全级别”设置(FortiGate 硬件产品),分别为 Level 0、Level 1、Level 2。:
Level 1:当检测到系统内核文件的错误签名时(如非 GA 的临时版本),产生告警信息。


Level 2(大多数设备默认):当检测到系统内核文件的错误签名时(如非 GA 的临时版本),将 FortiGate 关机,FortiOS 固件和每个版本的 AV/IPS 引擎文件将由 Fortinet CA 和第三方权威 CA 双重签名。
Initializing firewall... System is starting... System file integrity init check failed! The system is going down NOW !! The system is halted.Level 0:静默检查,当检测到系统内核文件的错误签名时(如非 GA 的临时版本),不产生告警信息,也不会将设备关闭。
系统安全保障
篡改文件系统或文件的尝试将立即被检测到,会触发设备重新启动,并生成事件日志。
定期检查系统
系统将定期(每 6 小时)检查进程和文件名、权限,并对它们执行签名检查。这种定期检查每 6 小时进行一次。如果检测到异常,将触发设备重启,并生成事件日志,相关日志如下所示:

IPS/AV 特征库签名
AV 和 IPS 包现在由 Fortinet CA 签名,以确保包的真实性。FortiGate 更新时将进行如下检查:
- 自动更新时,只接受经过签名和验证的 IPS/AV 包。
- 手动更新时,将接受签名和验证的 IPS/AV 包。如果 IPS/AV 包未签名,则有以下情况:
- BIOS Security Level 0:接受新的 AV 和 IPS 包,即使它没有签名。
- BIOS Security Level 1:显示警告并要求用户确认接受。
- BIOS Security Level 2:显示错误并拒绝 AV 和 IPS 包。
对于 HA,备设备将在保存签名包的同时从主设备同步签名文件。
在 CLI 下,可以查看当前的 IPS/AV 特征库是否通过签名验证。
FortiGate # diagnose autoupdate signature check-all aven(7,33) signature is valid. virdb(2,2) signature is valid. etdb(2,7) signature is valid. exdb(2,4) signature is valid. fcni(9,0) signature N/A. contract(10,0) signature N/A. idsen(30,80) signature is valid. ipscfgscr(30,50) signature is valid. fldb(34,2) signature is valid. idsdb(4,24) signature is valid. idsetdb(4,27) signature is valid. idsurldb(5,1) signature is valid. appdb(38,1) signature is valid. isdb(39,1) signature is valid. iot_detec(40,1) signature is valid. geoip(28,0) signature N/A. certdb(33,0) signature N/A. update objects signature check finished. FortiGate # diagnose autoupdate versions AV Engine --------- Version: 6.00288 signed Contract Expiry Date: n/a Last Updated using manual update on Mon May 15 18:35:00 2023 Last Update Attempt: n/a Result: Updates Installed Virus Definitions --------- Version: 1.00000 signed Contract Expiry Date: n/a Last Updated using manual update on Mon Apr 9 19:07:00 2018 Last Update Attempt: n/a Result: Updates Installed Extended set --------- Version: 1.00000 signed Contract Expiry Date: n/a Last Updated using manual update on Mon Apr 9 19:07:00 2018 Last Update Attempt: n/a Result: Updates InstalledFortiGate 向 FortiGuard 自动更新时的验证签名 Debug 如下。
... installUpdateObject[321]-Signature verified for obj 9, ret=0, data_len=90, obj_len=90, sig_len=0. installUpdateObject[358]-Step 2:Prepare temp file for obj 9 installUpdObjRest[827]-Step 3:Signal parent not to respawn installUpdObjRest[837]-Step 4:Kill daemon(s) installUpdObjRest[871]-Step 5:Backup /etc/fcni.dat->/tmp/update.backup installUpdObjRest[899]-Step 6:Copy new object /tmp/updrbmfhS->/etc/fcni.dat installUpdObjRest[984]-Step 7:Validate object ...
功能影响
- 当版本签名在启动检查失败时(如“临时发布”或“特殊分支”等固件), BIOS 安全级别为 2 时将强制 FortiGate 关机,不会重新启动。 2.
- 在 RMA 期间,没有 BIOS 安全级别的设备(6.4.13,7.0.12,7.2.5,7.4.0 以下版本)可能被替换为具有安全级别支持的新硬件(默认安全级别为 2)。如果客户正在运行非 GA 版本(如 TOP 3 版本),则客户应在更换设备之前需将 BIOS 上的安全级别设置为 0。
- 当 FortiGate 被攻击时,作为一种保护措施,试图篡改系统文件会导致 FortiGate 立即重启。修改 BIOS 安全级别不会影响此行为。
- 如果系统文件校验和不匹配,在文件系统定期检查期间,FortiGate 也会重新启动。修改 BIOS 安全级别不会影响此行为。
查看 BIOS 安全级别
FortiGate # get system status
...
Version: FortiGate-601F v7.2.6,build1559,230822 (interim)
Security Level: 1
Firmware Signature: un-certified
...提示
从 7.0.16、7.2.11、7.4.6、7.6.1 版本开始,更新了安全级别的命名规则。以前的数字级别 0、1 和 2 现在分别表示为 low、low 和 high。
修改 BIOS 安全级别
警告
请注意,调低该参数将影响设备或网络的整体安全状态。可能允许访问设备的用户在系统中安装或运行修改过的恶意代码。 强烈建议将 FortiOS 升级到支持 BIOS 安全检查的版本,最大限度地提高设备的安全等级。
如果 FortiGate 设备运行的 BIOS 版本为 5000100 或 6000100(或更新版本),用户将无法降级到 6.0、6.2 或这些:6.4.13、7.0.12、7.2.5、7.4.0 以下的 FortiOS 版本。
设备将无法正常启动,启动时将显示以下错误信息:
Booting OS...
Fatal error: Loading FOS fails!
Please power cycle. System halted.如果因为特殊要求,需要在已经具备 BIOS 安全级别功能的 FortiOS 版本上降级到以上 FortiOS 版本,请按照以下步骤更改 BIOS 安全级别。
使用 PC 已连接设备的 Console 接口,重启 FortiGate。在重启过程中,FortiGate 会在 Console 中打印一条信息“press any key to display configuration menu”,然后按一个任意键进入 BIOS。
FortiGate-60F Ver:05000009 Serial number: FGT60XXXXXXXXXXXXXX CPU: 1200MHz Total RAM: 2 GB Initializing boot device... Initializing MAC... NP6XLITE#0 Please wait for OS to boot, or press any key to display configuration menu. <-- Press any key.键入
I,进入System information。[C]: Configure TFTP parameters. [R]: Review TFTP parameters. [T]: Initiate TFTP firmware transfer. [F]: Format boot device. [I]: System information. <--键入I [B]: Boot with backup firmware and set as default. [Q]: Quit menu and continue to boot. [H]: Display this list of options.键入
U,进入Set security level。Enter C,R,T,F,I,B,Q,or H: [S]: Set serial port baudrate. [R]: Set restricted mode. [T]: Set menu timeout. [U]: Set security level. <--键入U [I]: Display system information. [E]: Reset system configuration. [P]: Normal POST test. [Q]: Quit this menu. [H]: Display this list of options.键入安全级别的数字 (0、1 或 2)。
Enter S,R,T,U,I,E,P,Q,or H: [0]: Level 0 - Check image silently [1]: Level 1 - Check image with result only [2]: Level 2 - Check image and reinforce validity Enter security level setting [2]: <--键入安全级别的数字(0、1或2)随后按照说明退出 BIOS 菜单并启动设备(通常是键入 2 次
Q)。
常见问题
哪些硬件支持 BIOS 安全级别设置?
FGT_40F, FGT_41F, FGT_41F_3G4G FGT_60F, FGT_61F, FGR_60F, FGR60F_3G4G FGT_70F, FGT_71F FGT_80F, FGT_80F_BP, FGT_80F_POE FGT_81F, FGT_81F_POE FGT_100F, FGT_101F FGT_200F, FGT_201F FGT_400E_BP, FGT_400E, FGT_401E FGT_1100E, FGT_1101E FGT_1800F, FGT_1801F FGT_2200E, FGT_201E FGT_2600F, FGT_2601F FGT_3300E, FGT_3301E FGT_3400E, FGT_3401E FGT_3500F, FGT_3501F FGT_3600E, FGT_3601E FGT_4200F, FGT_4201F FGT_4400F, FGT_4401F FGT_600E, FGT601E是否对 VM 有影响?
- 虚拟机 VM 上无法修改“BIOS 安全级别”。从
get system status中看到的 BIOS 安全级别取决于固件版本:- 6.4.16、7.0.16、7.2.9、7.4.4、7.6.0 及之后版本:Level 2。
- 6.4.13 ~ 6.4.15,7.0.12 ~ 7.0.15,7.2.5 ~ 7.2.8,7.4.0 ~ 7.4.3:Level 1。
- 所以在 BIOS 安全级别为 2 的 VM 镜像中上传非 GA 的临时版本时,是无法上传的,必须先降级到 BIOS 安全级别为 1 的 VM 版本后,再导入非 GA 版本。
- 虚拟机 VM 上无法修改“BIOS 安全级别”。从
如果 BIOS 设置为 Level 2,但启动的固件不支持软件签名增强,预期的行为是什么?
- 在引导时和系统启动时都不执行检查。
如果 BIOS 设置安全级别为 0,在启动时是否还会执行检查?
- 会执行检查,它是静默地完成的,结果可以在
get system status中看到。
- 会执行检查,它是静默地完成的,结果可以在
如果 BIOS 安全级别设置为 0,系统安全保障和定期检查是否会激活。
- 是的,如果加载的固件支持该特性,仍然会执行系统安全保障和定期检查。
如何查看一个系统文件的 MD5 校验和?
FortiGate # diagnose sys csum /bin/init //该命令需要指定具体的文件// /bin/init: df c1 b2 8f d9 a6 82 c5 d2 1e 45 87 e5 ec 98 f6 diagnose sys filesystem hash //列出所有敏感文件的hash,7.4支持// 12b9377cbe7e5c94e8a70d9d23929523d14afa954793130f8a3959c7b849aca8 /data/etc/fdsm_mgmt_id.dat 00664fbc0fdafced6c4e0f77570f371cf0d0b85e0429c10d1376a81941f17289 /data/etc/cloudinit.log 48bd618e47b0dc185ff512b75c9fc6f7c5437d8aec6d7f3527c41d6687375d59 /data/etc/ips.mudb.rules.x 3af43771ffc8990ed38c7bd10ad37e60391e565c51a133e0acdc63539661ef11 /data/etc/applications.csv 423720df1a74eca781eaa37a388d86f438541d7f0624cd8f0c5781c843a5bded /data/etc/sample.pac db057221b788f6ed5c8b629ad83d6f8fca8dc35274bce13be6520595c09f1f65 /data/etc/modem_list_fex.conf 2e29084d86f3925a0fb6bf96c4d83a6d3025fdd9cf8059ebcfc307153b9fd63b /data/etc/virexdb 0ceb39183d6ce36e7bd6bb5edfe6beacac702be9bfeac3bf0e2066df3643af1d /data/etc/ips.iot.rules a38bba93dc8691ca7367d134f575df31ba51c5c591309447338d10d08812910c /data/etc/geoip_db.gz 2e29084d86f3925a0fb6bf96c4d83a6d3025fdd9cf8059ebcfc307153b9fd63b /data/etc/virext 0cbf59ea97ced14b3dd844cb4dcd784ddcae7d5ef38c2a6081c9e369c25d5ac6 /data/etc/protocols.csv 896b71b3d9b209d339213f9d4af4088d3addd891cd292e93b5168eddb36b599a /data/etc/virfldb.x dbe703c06735797ac86570442b39827ca1844fea6312e48fee8c2d80647392d0 /data/etc/fgt.crt 3e36debe496618432707dc680ef78fc59c2d9ecc38b3f65a2f055dc826492492 /data/etc/fcni.dat如果遇到系统文件被篡改或是误报,我应该怎么办?
如下所示,设备 Console 打印信息:
fos_ima: fos_process_appraise 99: Suspicous Executable File(/data2/libcrashpad.so) is missing hash fos_ima: fos_process_appraise 99: Suspicous Executable File(/data2/flatkc_info) is missing hash如果您看到文件缺失散列值,如以下(但不限于),可能是攻击造成,可以访问此链接联系 PSIRT 团队:https://www.fortiguard.com/faq/psirt-contact ,会有 Fortinet 相关人员与您取得联系,或联系 Fortinet 技术支持。
/bin/sh /bin/toybox /data2/tftpd /data2/libvcm.so.gz /data2/libcrashpad.so /data2/libpreload.so /data2/flatkc_info /data/lib/libvar.so /tmp/busybox