Skip to content
🎨 作者:chenyi 📔 阅读量:

服务器CVE测试方案

CVE进行下载地址

1060u1A: https://cdimage.uniontech.com/server-dev/1060u1/a/release/amd64/

1060u1E: https://cdimage.uniontech.com/server-dev/1060u1/e/release/amd64/

1050A: https://cdimage.uniontech.com/iso-v20/

1050E: https://cdimage.uniontech.com/iso-v20/

1002A: https://cdimage.uniontech.com/iso-v20/

1050D:

arm&amd

http://10.0.32.57/server/1050u1/d/release/ISO/

loongarch

https://iso.uniontech.com/#/productdetails/F5rRRsdxJ4TdoV7X9NacOEF

安装方式

高危&&常规:图形化默认安装,选择商业授权

补丁CVE:图形化全选安装,选择商业授权

内核CVE:需要根据实际需要选择4.19和5.10安装;

高危&&常规

提测周期

高危:每周一和周三晚提测

常规:每周二晚提测

提测仓库

常规:

提测仓库E:http://10.7.60.100/server/1050_update/e/cve_regular.repo

A:https://cdimage.uniontech.com/server-dev/1050_update/a/cve_regular.repo

C:https://cdimage.uniontech.com/server-dev/1050_update/c/cve_regular.repo

高危:

E:http://10.7.60.100/server/1050_update/e/cve_risk.repo

A:https://cdimage.uniontech.com/server-dev/1050_update/a/cve_risk.repo

C: https://cdimage.uniontech.com/server-dev/1050_update/c/cve_risk.repo

测试策略

1.添加提测仓库(自带仓库不用屏蔽)

2.下载邮件中的提测申请单(邮件中的附件)

3.安装提测申请单中的提测包并核对版本,仓库中的所有包都需要安装(ACED版二进制包名列,核对二进制包名列是否与仓库一致,如果不一致找开发沟通 AC版张兴荣 D版王佳 E版孔立栋)

4.包安装完成后,进行重启,重启以后对包的基本功能进行测试(部分包的功能是需要自己调研的,如果是库包,实在找不到测试方法,可接受测试安装即可)

5.建立测试单,可以查看以前cve的测试单(格式:安全更新a版提测(高危)_2024-1-5_arm_2024/1/10)

6.输出测试报告,按照之前抄送给你的邮件格式即可

高危外网推送

测试周期:每周一高危外网推送

测试方法:

1.外网推送方法(先推到update仓库,update仓库是商业授权仓库,所以测试外网推送的时候需要打开商业授权仓库)

2.在各架构机器上安装查看版本即可,项目经理会提供外网推送列表

内核CVE测试

测试方法

1.下载内核提测包,安装内核提测包(rpm -Uvh .rpm 进行安装,或者使用yum install.rpm 如果之前安装过同版本 可以使用 rpm -Uvh *.rpm --force)

2.安装内核包后,重启系统,查看内核版本,内核版本正确可开始运行ltp和内核基本功能测试用例

测试注意事项

1.ltp版本问题 1060用2023-1月份的版本 1070用最新版本

2.生态机器链接:https://udoc.uniontech.com/apps/editor/677888?gbcotea=4c11c48eeb983bb22fec6963e8b038a9

3.测试单建立方式

统信服务器操作系统V20(1060)A版本 CVE-20230904_2023/09/04_ AMD

4.D版使用2016的测试套

5.机器挂了使用串口运行,C版和A版容易出问题尽量使用就近的机器

6.使用生态的机器,需要用到跳板机,跳板机ip: 10.20.48.157

7.鲲鹏机器跑ltp的时候,在ltp-service-for-kunpeng套件里面的skip-list需要放在与ltp-service文件中的ExecStart路径一致,ltp-service文件中的ExecStart默认路径为/home,可以把skip-list默认放在/home目录下

8.每日需要跟踪ltp的是否正常运行

内核基本功能自动化运行方式

1.访问自动化工程:https://jenkinswh.uniontech.com/jenkinsb/view/测试/job/autotest/job/update/ 工程为A_AMD_CVE——KERNEL A_ARM_CVE——KERNEL A_LONNGARCH_CVE——KERNEL

2.工程构建任务填写

VERSION_TIME 默认为20230606-1951不用修改

20230725-kernel 根据实际情况填写 (例如:20230817-5.10kernel,根据转测申请单的实际情况填写,一定要加上5.10和4.19)

cve_version不用修改

3.创建好的qcow2路径

http://10.7.60.181/test_qcow2

内核CVE外网推送

1.打开update源,安装内核包,装完后重启系统,查看内核版本,参考测试用例:https://pms.uniontech.com/testcase-view-1240931-6.html

例行补丁

提测周期

提测仓库

E:https://cdimage.uniontech.com/server-dev/1050_update/e/1060e-UTSA-xxxx/

A: http://10.30.38.115/packages.chinauos.com/server-enterprise-c-test/kongzi/1060/

C: http://10.30.38.115/packages.chinauos.com/server-enterprise-c-test/kongli/1000/update/

测试策略

1.添加提测仓库,添加完成后,执行yum makecache可以看见新增的仓库

2.提测申请单中,任意找一个包查看是否有对应的高版本,存在对应的高版本则表示仓库配置成功

3.下载转测申请单中的附件,下载附件脚本,新建test文件,把转测申请单中的update列,复制到test文件,然后运行脚本

shell
#! /bin/bash

###################
# 1 将所测试的包列表放到 test文件中(是提测申请单中的update列,全复制)
# 2 打开系统默认配置源. 创建update.repo文件并添加升级源,且状态切换为不可用
# 3 在test文件统计目录执行 nohup bash -x run.sh  >>run.log &
# 4 在/home/packages_log 目录下查看结果
#     install.log  安装默认版本过程日志
#     uninstall_packages 默认源没有安装成功的包
#     install_new.log 用最新的源安装uninstall_packages的包
#     update.log 升级日志
#     update_error.log 升级报错日志,如果没有生成该文件,说明安装升级全部成功,测试通过
#     update_check.log 版本信息检查日志
###################
echo  "1 将所测试的包放到 test文件中"
rm -rf package_list
cat test | tr -s '\n' >> package_list


result_log=/home/packages_log
rm -rf ${result_log:?}
mkdir -p ${result_log}
echo "获取包名 package_name"
rm -rf package_name
while read line
do
        pkgname1=`echo ${line%-*}`
        pkgname=`echo ${pkgname1%-*}`
        echo $pkgname >> package_name
done <  package_list

echo "默认配置安装低版本软件包"
sed -i 's/enabled = 1/enabled = 0/g'  /etc/yum.repos.d/update.repo
yum clean all
### 低版本源 UnionTechOS-Server-20-everything
while read line
do
      yum -y install  ${line} --allowerasing  >>${result_log}/install.log 2>&1
      if [ "$?" != "0" ];then
         echo "${line} install failed in old repo"
         echo ${line} >> ${result_log}/uninstall_packages 2>&1
      fi
done <  package_name

### 配置源
echo "配置高版本源,并升级"
sed -i 's/enabled = 1/enabled = 0/g'  /etc/yum.repos.d/UnionTechOS.repo
sed -i 's/enabled = 0/enabled = 1/g'  /etc/yum.repos.d/update.repo
yum clean all
if [ -f "${result_log}/uninstall_packages" ]; then
  echo "start try install rpm in uninstall_packages"
  while read line
  do
      yum -y install  ${line} --allowerasing  >>${result_log}/install_new.log 2>&1
  done <  ${result_log}/uninstall_packages

fi
yum clean all
#yum update --allowerasing -y >>${result_log}/update.log 2>&1
while read line
do
      yum update --allowerasing -y  ${line} >>${result_log}/update.log 2>&1
      if [ "$?" != "0" ];then
         echo "${line} update failed "
         echo ${line} >> ${result_log}/update_failed_list 2>&1
      fi
done <  package_name



echo "检查版本号是否正确"

while read line
do
        rpm -qa | grep ${line%.*}
        if [ "$?" != "0" ];then
           echo "${line} rpm version check Fail"
           echo "${line} update failed"  >>${result_log}/update_error.log  2>&1
        else
           echo "${line} rpm version check success"
           echo "${line}  check    PASS" >> ${result_log}/update_check.log 2>&1
        fi
done <  package_list
sed -i 's/update failed//g' ${result_log}/update_error.log 
sed -i 's/1://g' ${result_log}/update_error.log  
sed -i 's/2://g' ${result_log}/update_error.log 
sed -i 's/9://g' ${result_log}/update_error.log 
while read line
do
        rpm -qa | grep ${line%.*}
        if [ "$?" != "0" ];then
           echo "${line} rpm version check Fail"
           echo "${line} update failed"  >>${result_log}/update1_error.log  2>&1
        else
           echo "${line} rpm version check success"
           echo "${line}  check    PASS" >> ${result_log}/update_check.log 2>&1
        fi
done <  ${result_log}/update_error.log 



if [ -f "${result_log}/update_error.log" ]; then
  echo "**************Test  Fail**************"
  exit 1
else
  echo "##################Test  PASS##################"
  exit 0
fi

4.运行完成后,查看/home/packages_log/update-error.log日志,分析升级失败的软件包,可以接受当前安装版本比提测版本高

5.待所有安装失败的软件包核对完成后,进行系统升级,执行yum update,执行完成后,执行重启操作

updateinfo测试

1.下载转测申请单附件中的cve更新列表,和高危cve更新列表,需要准备全新的环境

2.安装步骤1两个cve更新列表中低版本的包,所有的二进制包,安装完成后做个快照

3.A版:需要屏蔽自带的仓库源,E版:不需要屏蔽自带的仓库, C版:需要屏蔽自带的update仓库,然后根据updateinfo的测试用例测试

4.如果外网update仓库和提测仓库中版本一样,并且没有其他低版本,则不进行update的测试

自动化运行注意事项

1.准备qcow2的环境,qcow2的环境密码必须为uostest12#$(建议创建虚拟机的时候直接设置此密码,创建虚拟机时候全选安装)

2.上传qcow2的时候,查看是否传完

3.修改qcow2的权限

chmod -R 644 uniontechos-server-20-1050a_update-amd64-gui-legacy-release-UTSA-2023-0818.qcow2(根据实际情况修改)

4.修改qcow2的名称

a版的qcow2命名为

uniontechos-server-20-1050a_update-amd64-gui-legacy-release-UTSA-2023-0818.qcow2

uniontechos-server-20-1050a_update-arm64-gui-release-UTSA-2023-0818.qcow2

uniontechos-server-20-1050a_update-loongarch64-gui-release-UTSA-2023-0928.qcow2

e版的qcow2命名为

uniontechos-server-20-1050e_update-amd64-gui-legacy-release-UTSA-2023-0818.qcow2

uniontechos-server-20-1050e_update-arm64-gui-release-UTSA-2023-0818.qcow2

5.保证机器的/home目录有足够的空间,以及剩余内存足够多,大于150G

6.如果创建虚拟机出现进入了紧急模式的情况,可以强制重启虚拟机,如果还解决不了,可以参照

https://wikidev.uniontech.com/UTSA补丁自动化测试虚拟机失败处理方法

自动化构建

1.先根据构建自动化https://wikidev.uniontech.com/补丁自动化拉起流程

2.访问研测平台:http://adtmp.uniontech.com/#/ProductVersion

3.选择基线管理-->产品版本-->构建-->新增

4.任务管理-->版本测试-->新建

5.版本测试内容填入

6.运行自动化

7.查看自动化运行日志