功能和性能参数主要集中在 /system/dps/etc/configure.ini 文件当中,可跟据自身设备的实际情况和需求进行配置,它们可能会影响到设备的 CPU、RAM、磁盘、网络消息等资源占用,请进行合理配置。
1. DPS_DATA: IoT 安全运营中心的安全 Agent 服务程序存放数据的路径,请配置到操作系统的可读/写分区的文件夹路径下,请确保 /data 目录所在的数据磁盘分区空间至少 128MB 剩余。
2. DPS_PROFILE:IoT 安全运营中心的安全 Agent 的分类,可配置为以下 2 类(通常默认 standard 即可)
standard - 普通的物联网设备使用的 Agent 类型
server - 网关设备推荐使用的 Agent 类型
3. DPS_DEBUG:开启或者关闭 IoT 安全运营中心的安全 Agent 日志,日志功能开启之后日志将保存在 $DPS_DATA/log 下。
0 - 关闭日志功能
1 - 开启日志功能
4. NUM_LOGS: IoT 安全运营中心的安全 Agent 服务日志最大保存天数,仅保存最近 $NUM_LOGS 天的日志文件。
5. LOG_FILE_SIZE:单个日志文件最大大小,单位为 KB。
6. KERNEL_AUDIT:配置是否启用内核审计能力,如果目标设备 CPU 比较弱但是业务负载比较大时,建议关闭此选项,其余状态请尽量打开,具体评估方式可采用运行 sudo dmesg 观察内核日志是否出现 auditctl 队列溢出的打印,如果有溢出,请关闭。
0 - 关闭,并采用相应用户态能力进行事件审计(可能牺牲一些安全审计能力,如暴力登录)
1 - 打开。
7. PROTECTED_PATH:目标设备取证扫描的自定义路径,在此路径之下的所有文件将被取证和加入完整性保护,建议配置成目标设备上可执行程序、共享库、配置文件等重要文件存放的目录。支持配置多个路径,中间用 : 隔开。
8. SCAN_DUTY_CYLCLE:取证服务的工作占空比,可以在设备首次上线的 20 分钟内通过观察 /system/dps/bin/scanner 的 CPU 占用率来调节它的值,范围在 0~100,数值越大 scanner 工作时占 CPU 资源越低,但是工作持续时间越长(太长可能导致取证超时,安全保护不完整)。反之数值越小 scanner 占 CPU 越高,但是工作时间更短。
9. TRAFFIC_MONITOR:用于配置要进行流量审计的网络接口名称,一般在 3G/4G/5G 这样的移动设备上,建议配置使用计费运营商网络的网络接口,而并非 WiFi,ETH 等不计费的网络接口,有助于帮助监控运营商网络流量,并在流量异常时进行告警,一方面可以避免流量资费不够,另一方面异常流量可帮助判断设备是否被非法入侵。例如一般手机设备上,移动网络接口为 rmnet_data0 等。可在 adb shell 当中使用命令 ip a 命令进行观测。
如果不需要进行流量审计,可以将此配置项配置为“0”。
10. MANAGED_VERSION:表示厂商固件版本号信息。格式为一段描述文本,按照不同情况,配置方法有以下 3 种:
如果将固件版本号直接描述在 configure.ini 当中,那么 MANAGED_VERSION 的值即为固件版本号的文本。
例如:MANAGED_VERSION=V1.0.0
如果设备厂商始终使用本地文件系统来追溯固件版本,这段文本是一个标准 URI,它的格式为:
file://<file_path>?pattern=<pattern_string>。
例如:MANAGED_VERSION=file:///etc/version.txt?pattern=.%2b
其中 file:// 后面紧接着固件版本号所寄存的文件绝对路径,为标准 Unix 文件路径格式
URI 的 query 部分(“?”符号后面的部分),query 字段只有一个,query key 为固定的“pattern=”,其值为固件版本号寄存文件内容当中进行正则匹配的正则表达式。
**请注意在 URI 字符串当中填写非字母和非数字 ASCII 符号时需要做 URI encode,详细的 encode 表请参考下表:https://www.tutorialspoint.com/html/html_url_encoding.htm
在 Android 系统当中,如果需要使用 property 来获取版本号,这段文本是一个标准 URI,它的格式为:
property://<property_name>,其中 <property_name> 表示 Android 系统当中存放固件版本号的属性名称。
例如:MANAGED_VERSION=property://ro.build.id
11. MANAGED_ID:表示该设备在厂商自有设备管理系统中的唯一标识号。格式为一段描述文本,按照不同情况,配置方法有以下 3 种:
如果将设备管理 ID 直接描述在 configure.ini 当中,那么 MANAGED_ID 的值即为设备管理 ID 的文本。
例如:MANAGED_ID=serial_0123456789
如果设备厂商始终使用本地文件系统来追溯固件版本,这段文本是一个标准 URI,它的格式为:
file://<file_path>?pattern=<pattern_string>。
例如:MANAGED_ID=file:///etc/managed_id.txt?pattern=.%2b
其中 file:// 后面紧接着设备管理 ID 所寄存的文件绝对路径,为标准 Unix 文件路径格式
URI 的 query 部分(“?”符号后面的部分),query 字段只有一个,query key 为固定的“pattern=”,其值为设备管理 ID 寄存文件内容当中进行正则匹配的正则表达式。
在 Android 系统当中,使用 property 来获取设备管理 ID ,此文本是一个标准的 URI,它的格式为:
property://<property_name>,其中 <property_name> 表示 Android 系统当中存放设备管理 ID 的属性名称。
例如:MANAGED_ID=property://ro.product.vendor.device
对于可通过命令行返回结果获取厂商硬件 ID 的场景,它的格式为:
cmdline://<cmdline_full_path>?pattern=<pattern_string>
例如 MANAGED_ID=cmdline:///bin/bash%20-C%20/usr/local/bin/get_sn.sh?pattern=.%2b
12. MANAGED_NAME:标识一类设备,选择性填写。如果需要填写则需要按照一定规范进行定义。
MANAGED_NAME 使用下划线(“_”)划分信息栏位,分别是:
品类:标识设备品类,采用下面列表当中的一种:
取值 | 释义 |
camera | 网络摄像机 |
nvr | 视频 NVR 设备 |
screen | 屏幕类设备 |
edge | 边缘网关类设备 |
net | 网络设施 |
handy | 手持设备:POS 机,快递员专用机等。 |
car | 车载设备 |
sales | 自动售卖机 |
computer | 个人电脑 |
mobile | 手机 |
厂商:不超过 12 个字符的标识厂商的栏位,例如:aliyun,cainiao 等。
型号:可选,如果设备没有型号,则填 0。
示例,下面一个字符串标识阿里云物联网生产制造的网关 B001:
MANAGED_NAME=edge_aliyun_b001
13. 一个完整示例:
[system]
DPS_DATA=/data/dps
DPS_PROFILE=standard
DPS_DEBUG=1
NUM_LOGS=3
LOG_FILE_SIZE=10240
KERNEL_AUDIT=1
[attestation]
PROTECTED_PATH=/home/usr/lib:/home/usr/lib64
SCAN_DUTY_CYCLE=100
FILE_MONITOR=/dev
TRAFFIC_MINITOR=eth0
[report]
REPORT_EVENTS=1
REPORT_FILE_INTEGRITY=1
REPORT_PROCESS_BEHAVIOR=1
REPORT_NETWORK_INTERNET=1
REPORT_NETWORK_INTRANET=0
REPORT_NETWORK_MULTICAST=0
[security]
SEC_STORAGE_PATH=
[device]
MANAGED_NAME=some_device_type
MANAGED_VERSION=file:///etc/version.txt:.%2b
MANAGED_ID=serial_01234567890
通过 configure.ini 的 MANAGED_VERSION 和 MANAGED_ID 分别配置 managed_version 和 managed_id文件,需要注意权限设置,才能确保保护功能正常运作。
文件说明 | 权限 | 用户 | 组 |
managed version 文件 | 644 | root | root |
managed ID 文件 | 644 | root | root |
当前版本号以及设备管理 ID 字符串限制最长 128 字节。
后续步骤:功能和性能评估