麒麟 ZYJ 服务器软件适配 参考示例
一、zyj 环境简介
1. ZYJ 概述
国产化 SMZYJ 是由国家 BM 主管部门鉴定并批准生产使用的国内自主开发的 整机 JM 国标设备,设备采用了自主设备基础硬件(飞腾、国科微等)、安全硬 件+自主固件(昆仑等)+自主 SM 专用操作系统(麒麟)的三层加密一体方式进 行整机生产。
麒麟 ZYJ 操作系统使用了国标架构,通过了 BM 等级认证,采用了三员分立+
软硬一体化认证的主机管控措施,内置操作系统内核、壳结构、服务及软件均通 过基线安全策略加固,可通过操作系统内核安全策略控制专用机进程,识别进程 动作,实现基线策略触发告警功能。
⚫ 管理用户采用三权分立系统,以分割管理权限。
⚫ 三合一软硬一体化设备实现了管控软件安装,硬件接口放行,文件输入 输出,端口放行等相关功能.
⚫ 加入审计追溯机制,强制保留用户使用踪迹。
⚫ 固件绑定安全卡进行加密硬件及相关部件监控,一旦硬件信息被更改及 损坏即有告警禁入等相关安全措施。
这些软硬一体化认证的整机安全机制保证了涉密设备的使用的安全性,从基 础架构、系统原理与交互机制上排除了泄密隐患和信息安全风险。
2. 背景
由于 ZYJ 的特殊安全机制,用户 SAAS 级产品迁移适配需要遵循 ZYJ 适配 迁移的规则,本文以常见 web 服务器软件 nginx 源码作为适配举例,将详细 介绍适配流程及重点注意事项。
3. 相关机制简介
KYSEC 机制和白名单(其中一种安全机制)
KYSEC 是基于 kysec 安全标记对执行程序、脚本文件、共享库、内核模块 进行保护的一种安全机制。除了系统默认集成的执行程序、脚本文件、共享 库、内核模块,任何外来的该 4 种文件,如拷贝、移动、下载、重新编译生 成等,都必须添加到麒麟安全管理工具的相应白名单列表中,才能执行调用。 并且 KYSEC 会对白名单列表中的文件进行保护,保护文件不被或限定修改、 移动、删除。
那么在 ZYJ 中,KYSEC 不能强制关闭。使用配置管理工具,进行签名并导 入安装包的过程,就是给软件打白名单标签的过程。配置管理工具本身限定 了软件的导入和安装方式,就是必须使用安全软介质通过图形配置管理软件 导入格式化安装包(deb、rpm)的形式进行安装。不能直接使用二进制安装 或编译安装,也不能使用命令行进行安装。 ZYJ 内不允许安装编译环境,那就要求开发者提前在其他通用操作系统环 境或开发板中做适配工作。
4. 开发板
开发板是麒麟软件为 ZYJ 各操作平台提供的开发适配专用版本,开发板 提供了与 ZYJ 内环境(内核、shell、服务、软件)等完全相同的原生环境, 并且去掉了相关的安全限制。用户可以使用开发板环境对应用进行开发、配 置仓库、补充依赖、打包、软件测试等适配工作。开发板可以安装在同架构 通用机型上也可以安装在 ZY 机型上。(注意:通用机型可以连接互联网、 公网;ZY 机型不允许连接互联网、公网!)
各平台开发板镜像地址:各整机厂商在整机出厂时会附带对应版本开发 盘。如未提供,请直接联系整机厂商或麒麟软件销售。
5. zyj 适配流程示意图
6. 准备工具介绍
二、适配过程
1. 安装开发盘镜像
准备好相关版本镜像使用刻录软件进行刻录至相关介质,作为镜像安装介质。这 里推荐 DVD-RW 光盘进行刻录安装。
ZYJ 安装方法:
第一步:开机---secadm 登录---F1 进入 bios---依次选择:安全管理→安全维护 →启动项管理开启/关闭,重启。如图
第二步,重启后,使用 root 登录---F1 进入 bios---更改启动项为光驱启动---F1 0 保存退出---重启后,以 root 用户身份登录,进入光盘引导。如图
第三步,开始加载光盘,加载完成后,(如需度量校验,请按照提示进行度 量校验)展示出安装欢迎界面,正常安装系统即可,如图
通用机型安装方法:
第一步:开机—按照各整机对应的 bios 菜单进入按钮,进入 bios---选择光盘 启动或 usb 存储介质启动,重启。 第二步:启动后,选择安装,根据提示进行安装即可。
2. 在开发板上进行软件编译以及安装、测试等
因 zyj 必须使用格式化安装包形式,并且不允许在 zyj 上直接执行编译动作, 需要先将软件在开发板系统中编译完成后再进行打包上传安装。
请主要关注编译安装过程中的重点步骤
准备相关安装包
一般 GCC、make 工具开发板系统自动预装。如缺失,请补充相关工具。
获取 nginx 主程序编译安装包及相关依赖。
⚫ 在 nginx 官网下载 nginx 主程序
⚫ 在软件源仓库获取已有依赖相关库或下载编译包。
重点步骤:重点文件安装目录规划
⚫ 自适配软件的安装目录 zyj 尽量统一为/opt/下,方便统一管理。
⚫ 后续打包时应与规划目录一一对应不能修改
⚫ 如需指定用户,以 root 为优先。(zyj 中 root 非全权限用户)
⚫ zyj 日志目录/var/log 为单独分区,分区满后会限制用户登录(可以删除)。 日志分区大小固定,不能扩容。在日志文件放置位置上请做好指定。
⚫ 规划示例:
本次 nginx 安装统一目录下的优点是打包时填写配置较为方便。
编译参数
nginx 源文件自带已生成的 configure 文件,相关支持参数可以支持指定位置安装。 且可以指定用户。
本地环境安装测试
第一步 配置软件源或离线安装依赖库(桌面和服务器不相同,如不了解 可咨询整机或联系麒麟销售)
第二步 解压源码包
tar xf nginx-1.12.2.tar.gz
cd nginx-1.12.2
第三步 重点步骤:注意指定目录,生成 makefile 文件
./configure --prefix=/opt/nginx-1.12.2 --user=root --group=root --with-http_ssl_module --with-http_stub_status_module
第四步 make #软件编译
第五步 make install #软件编译安装
重点步骤:验证测试程序,先让软件在开发板上可用
第六步
启动 nginx 服务,进入指定的安装目录找到启动文件
执行:/opt/nginx/sbin/nginx
第七步
利用浏览器访问测试或使用 curl 命令获取 80 端口
可以看到 nginx 的 web 欢迎页信息。如图:
第八步
测试配置环境变量,将启动命令简单化,不再使用绝对路径 export PATH=$PATH:/opt/nginx/sbin
测试关闭 nginx
到这一步已可以验证在开发板上软件可用,接下来就是需要进行将软件打包,打 包完成后再迁移至 zyj 进行测试使用。
3. 软件打包注意事项
其实生成格式化安装包的方法是多种多样的,并且方法各异,只要掌握了其 中的的重点规则,了解相关文件的具体配置和用法,按照需求配置即可。
我们先来看下 zyj 不同平台的传统打包应用工具,以及注意事项:
4. 服务器打包方法(重点)
那么本次介绍的服务器传统打包方法是基于麒麟操作系统本身自带的 rpmbuild
ZYJ 软件适配参考示例 第 14
页
工具来进行实现的,主要是配置好 spec 文件。其他方式的打包方法如 fpm 或 c heckinstall 等等,可自行进行研究,本次不做详细介绍,后续整理好后会进行补 充。
三、ZYJ 已适配软件安装迁移
1. 安装工具介绍
zyj 安装软件必须使用使用配置管理工具,然后进行签名,导入安装包。
配置管理工具本身,限定了一个软件的导入和安装方式,就是必须使用安全介质 传输到系统内,通过图形配置管理软件导入这种格式化安装包,不能直接使用二 进制安装方式或者是编译的安装方式,也不能使用命令行进行安装。
2. zyj 软件安装过程
导入安装包至系统
将 U 盘插入专用机,以安全用户放行 U 盘,启动左下角程序中的【三合一管 理】工具,页面认证如图所示,然后注销使用 root 用户将需要安装的 nginx 软件包导出到桌面
四、一些注意事项
1. 多个文件不同安装路径 spec 编写方法
假如我们需要将多个编译安装包或文件打成一个 rpm 包进行同时安装,比如, 我们想使用 systemd 管理 nginx 的启动及开机自启等相关功能,需要将编写好的 的 service 文件导入到系统的 systemd 管理目录中,跟本次 nginx 主目录不是同一 个目录的情况。可通过增加 Source 定义来指定多个文件,通过增加 build 目录来 指定多个目录。
示例如下
2. jar 包打包时的注意事项
由于 jar 包本身就是压缩包,针对此类包,再 build 过程中如果执行了解压动作, 可能会对 jar 包本身造成破坏,导致不可用。所以如果需要导入 jar 包时,需要 去掉解压缩定义%prep 下的%setup -q 参数。并且加入 jar 包安装支持参数,避免jar 文件重新打包,需要添加%define __jar_repack 0 定义。
3. 两种情况都包括
如过两种情况都包括,既有 jar 包,又需要其他文件放入其他目录,且都是单文 件情况下,可以不使用 tar 工具将文件压缩,直接指定文件。
4. 保留软连接
如果软件包内存在软连接,请添加此定义,避免在打包过程中去除。 %define debug_package %{nil}
5. 目录及压缩包命名问题
如果命名不规范,报如下错误:
可添加此定义 %setup -n 软件目录名