麒麟 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 软件目录名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/162164.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7、传统CV之高斯滤波

这一节在上一节均值滤波的基础上,再进阶一下,了解一下什么是高斯滤波。 首先,如上一节所说,均值滤波是利用一个窗口在图片上滑动,每次都计算窗口内能看到的像素的平均值,然后将平均值作为滤波的输出,从而可以起到平滑图像、去噪点的作用。 有没有发现,此时并没有特别…

栈的实现及OJ练习(c语言)

目录 前言 栈 栈的实现(数组栈) 初始化栈 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空 销毁栈 最终代码: 选择练习 栈的OJ题 前言 我们在之前已经学习了顺序表和链表的概念,它们有这样的优缺点&a…

4.2 Windows驱动开发:内核中进程线程与模块

内核进程线程和模块是操作系统内核中非常重要的概念。它们是操作系统的核心部分,用于管理系统资源和处理系统请求。在驱动安全开发中,理解内核进程线程和模块的概念对于编写安全的内核驱动程序至关重要。 内核进程是在操作系统内核中运行的程序。每个进…

键鼠自动化2.0展示

软件介绍:桌面键鼠自动化工具 Qtc 编写: 本软件采用Qt C编写,旨在提供高效、跨平台的桌面键鼠自动化解决方案。Qt C框架的选择确保了软件的稳定性、可靠性,并通过其图形用户界面实现了用户友好的操作体验。 鼠标移动与点击&#…

MySQL 的执行原理(一)

5.1 单表访问之索引合并 我们前边说过 MySQL 在一般情况下执行一个查询时最多只会用到单个二级 索引,但存在有特殊情况,在这些特殊情况下也可能在一个查询中使用到多个二 级索引,MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为&…

物联网AI MicroPython学习之语法 SPI串行外设通信

学物联网,来万物简单IoT物联网!! SPI 介绍 模块功能: SPI串行外设驱动 接口说明 SPI - 构建SPI对象 函数原型:SPI(id, baudrate,polarity, phase,sck, mosi, miso)参数说明: 参数类型必选参…

webAPP基础学习

###视觉基础 part-I ####1.面试中常见的像素问题 >什么是像素? *1.什么是px? px-虚拟像素,css像素的单位 px是一个相对单位,相对于设备像素而言 >相对性 a.相对于同一个设备,css像素的可变的 css像素物理像素>会受到缩放的影响 css像素缩放倍数*单个物理像…

django理解02 前后端分离中的问题

前后端分离相对于传统方式的问题 前后端数据交换的问题跨域问题 页面js往自身程序(django服务)发送请求,这是浏览器默认接受响应 而请求其它地方是浏览器认为存在潜在危险。自动隔离请求!!! 跨域问题的解决…

蓝桥杯 枚举

例题讲解 特别数的和 #include<iostream> using namespace std; bool ifspecial(int n){while(n){if(n%100||n%101||n%102||n%109){return true;} n/10;}return false; } int main(){int n;cin>>n;int sum0;for(int i1;i<n;i){if(ifspecial(i)){sumi;}}cout&l…

K-Means算法进行分类

已知数据集D中有9个数据点&#xff0c;分别是&#xff08;1,2&#xff09;&#xff0c;(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类&#xff0c;k2&#xff0c;设初始中心点为&#xff08;1.1,2.2&#xff09;&#xff0c;&#xff08;2.3,3.…

LitCTF2023 - Reverse方向 全WP

文章目录 [LitCTF 2023]世界上最棒的程序员[LitCTF 2023]ez_XOR[LitCTF 2023]enbase64[LitCTF 2023]snake[LitCTF 2023]程序和人有一个能跑就行了[LitCTF 2023]debase64[LitCTF 2023]For AiurLitCTF{Pylon_OverCharge!!_We_Must_construc7_addition4l_pylons} [LitCTF 2023]世界…

【giszz笔记】产品设计标准流程【6】

目录 六、组织评审 1.评审的类型 2.评审的人员——谁参加评审 3.评审的核心——怎么提问 & 答案谁说了算 4.评审的流程——前中后三部曲 5.评审的标的——漂亮的靶子 6.避免被“烤”问的一些技巧 7.搞几次评审比较好 这个产品设计系列&#xff0c;陆陆续续写了6篇了…

JavaEE进阶(1)Java EE 简述(Java EE 发展历程、什么是Web开发? Web网站的工作流程、什么是框架?Java EE 框架学习概览)

目录 Java EE 简述 Java EE 发展历程 什么是Web开发? Web网站的工作流程 什么是框架 框架的定义 源于建筑行业的类比 框架的作用 Java EE 框架学习概览 1. Spring 2. Spring Boot 3. Spring MVC 4. Mybatis 框架之间的关系 Java EE 简述 Java EE是Java平台的企…

C#实现观察者模式

观察者模式是一种软件设计模式&#xff0c;当一个对象的状态发生变化时&#xff0c;其所有依赖者都会自动得到通知。 观察者模式也被称为“发布-订阅”模式&#xff0c;它定义了对象之间的一对多的依赖性&#xff0c;当一个对象状态改变时&#xff0c;所有依赖于它的对象都会得…

IO多路转接之select和poll

目录 一. IO多路转接的概念 二. 通过select实现IO多路转接 2.1 select接口 2.2 Select服务器的实现 2.3 select实现IO多路转接的优缺点 三. 通过poll实现IO多路转接 3.1 poll接口 3.2 Poll服务器的实现 3.3 poll实现IO多路转接的优缺点 四. 总结 一. IO多路转接的概念…

Python uiautomation获取微信内容!聊天记录、聊天列表、全都可获取

Python uiautomation 是一个用于自动化 GUI 测试和操作的库&#xff0c;它可以模拟用户操作来执行各种任务。 通过这个库&#xff0c;可以使用Python脚本模拟人工点击&#xff0c;人工操作界面。本文使用 Python uiautomation 进行微信电脑版的操作。 以下是本次实验的版本号。…

C语言从入门到精通之【其他运算符】

sizeof运算符和size_t sizeof运算符以字节为单位返回运算对象的大小。 例如 &#xff1a;sizeof(int) 打印转换说明&#xff0c;使用C99新增的**%zd转换说明 – 如果编译器不支持%zd&#xff0c;请将其改 成%u或%lu**。 C 语言规定&#xff0c;sizeof 返回 size_t 类型的值…

安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)

1:安装docker环境必须使用麒麟的版本如下 2:使用docker-compse up -d启动容器遇到的文件 故障1:如果运行docker-compose up 报“Cannot create redo log files because data files are corrupt or the database was not shut down cleanly after creating the data files”…

基于单片机教室人数实时检测系统仿真及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、红外传感器检测进出人数&#xff0c;液晶1602显示。 3、按键最多容纳人数&#xff0c;烟雾报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 void lcd_init() { lcd_write_com(0x38…

为什么选择B+树作为数据库索引结构?

背景 首先&#xff0c;来谈谈B树。为什么要使用B树&#xff1f;我们需要明白以下两个事实&#xff1a; 【事实1】 不同容量的存储器&#xff0c;访问速度差异悬殊。以磁盘和内存为例&#xff0c;访问磁盘的时间大概是ms级的&#xff0c;访问内存的时间大概是ns级的。有个形象…