华为云用户手册

  • 系统预定义参数 系统预定义参数的参数值由系统自动生成,无需定义,如表1所示,可在代码中使用${参数名}引用。 表1 系统预定义参数 参数 说明 BUILDNUMBER 构建编号。格式为“日期.今日该构建任务执行次数”,例如:20200312.3。 TIMESTAMP 构建任务执行时间戳。例如:20190219191621。 INCREASENUM 该构建任务执行总次数,从1开始自增长,每执行1次加1。 PROJECT_ID 该构建任务所在的项目编号。 WORKSPACE 该构建任务拉取的源代码根目录,即工作空间。 GIT_TAG 代码tag名,在配置代码下载时指定tag构建才有值。 COMMIT_ID_SHORTER 代码提交号的前8位。在配置代码下载时指定CommitID构建才有值。 COMMIT_ID 代码提交号。例如:b6192120acc67074990127864d3fecaf259b20f5。
  • 使用参数的操作指导 以图1为例为您介绍如何使用自定义的参数。 图1 自定义参数 在编译构建任务配置页面切换到“构建步骤”页签,在“上传软件包至软件发布库”构建步骤的“发布版本号”中输入“${myparam}”,保存并执行构建任务。 在弹框中,将“myparam”修改为“1.0.1.2”,单击“确定”,等待构建任务执行完成。 图2 填写运行参数值 进入软件发布库,找到刚构建的构建包,即可看到版本号就是修改后的的“myparam”值。 图3 查看构建包
  • 添加自定义参数的配置指导 在编译构建任务配置页面,切换至“参数设置”页签,单击“新建参数”,参考表2配置参数。 表2 添加自定义参数 名称 类型 默认值 私密参数 运行时设置 参数描述 自定义参数名称。支持字母,数字,下划线“_”,长度不超过128个字符。 说明: 以下字段不可用:LD_PRELOAD、LD_LIBRARY_PATH、PATH、BASH_ENV、GIT_SSH_COMMAND。 不可使用以下符号“{{”、“{%”和“{#”。 字符串 自定义参数的默认值。长度不超过8192个字符。 设置是否为私密参数。参数为私密参数时,系统会将输入参数进行加密存储,使用时再进行解密,同时在运行日志里不可见。 设置该参数是否在执行构建任务时设置。 打开“运行时设置”开关,表示通过单击按钮执行构建任务时支持变更参数值,并且系统会把该参数上报到流水线服务。 自定义关于该参数的描述信息。长度不超过1024个字符。 枚举 在弹出的对话框中,填写自定义的“可选取值”,每个参数值必须以英文分号结尾。长度不超过8192个字符。 配置完可选取值后,在“默认值”的下拉框中为该参数配置一个默认值。 自增长 自定义参数的默认值。长度不超过8192个字符。
  • 代码化构建 参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。 1 2 3 4 5 6 7 version: 2.0 # 必须是2.0 steps: BUILD: - swr: image: cloudbuild@ddd inputs: command: echo 'hello' 表2 使用SWR镜像代码示例参数说明 参数 类型 说明 image string 填写镜像地址,分为以下两种填写方式: 以cloudbuild开始,@作为分隔符,后面是编译构建支持的工具版本对应的名称。例如:cloudbuild@maven3.5.3-jdk8-open,其中“maven3.5.3-jdk8-open”为Maven构建的工具版本名称。 4中获取的镜像地址。 command string 配置执行命令。 例如:若使用的镜像是用于Maven构建,则配置Maven构建命令;若使用的镜像是用于NPM构建,则配置NPM构建命令,以此类推。
  • 图形化构建 在配置构建步骤中,添加“使用SWR公共镜像”构建步骤,参考表1配置参数。 表1 使用SWR公共镜像参数说明 参数 说明 步骤显示名称 构建步骤的名称,可自定义修改。 支持中文、英文、数字、“-”、“_”、英文逗号、英文分号、英文冒号、“.”、“/”、圆括号(中英文)。 字符长度范围为1~128。 镜像地址 填写4中获取的镜像地址。 命令 配置命令,一般使用系统默认生成的命令即可。如有特殊构建要求,可以在文本域中输入自定义的构建脚本。 例如:若使用的镜像是用于Maven构建,则配置Maven构建命令;若使用的镜像是用于NPM构建,则配置NPM构建命令,以此类推。
  • 后续处理 如果切换操作系统前后都是Linux系统,且数据盘设置了开机自动挂载分区。切换操作系统后,数据盘分区挂载信息会丢失,请更新/etc/fstab配置。 在/etc/fstab写入切换后的分区信息。 建议您先备份/etc/fstab文件。 详细操作请参考初始化Linux数据盘(fdisk),设置开机自动挂载磁盘分区。 挂载分区。挂载分区后即可开始使用数据盘。 mount diskname mountpoint 执行以下命令,查看挂载结果。 df -TH 如果操作系统切换失败,公有云平台支持重试功能,用户可重新执行2-7,切换操作系统。 重试后,如果仍未成功,可联系客服进行人工恢复。
  • 前提条件 待切换操作系统的挂载有系统盘。 如果原服务器使用的是密码登录方式,切换操作系统后使用密钥登录方式,请提前创建密钥文件。 如果您使用私有镜像切换操作系统请参考《 镜像服务 用户指南》提前完成私有镜像的制作。 如果需要指定云服务器的镜像,请提前使用指定云服务器创建私有镜像。 如果需要使用本地的镜像文件,请提前将镜像文件导入并注册为云平台的私有镜像。 如果需要使用其他区域的私有镜像,请提前复制镜像。 如果需要使用其他账号的私有镜像,请提前完成镜像共享。
  • 切换须知 切换操作系统后,将不再保留原操作系统,并删除原有系统盘及清除系统盘数据,包括系统盘上的系统分区和所有其它分区,请做好数据备份。详细内容,请参考备份弹性云服务器。 切换操作系统不影响数据盘数据。 切换操作系统后IP地址和MAC地址不发生改变。 切换操作系统成功后会自动开机。 切换操作系统后不支持更换系统盘的云硬盘类型。 切换操作系统后,您的业务运行环境需要在新的系统中重新部署。 切换操作系统后,当前操作系统内的个性化设置(如DNS、主机名等)将被重置,需重新配置。 重新配置云服务器DNS信息请参考:怎样配置弹性云服务器的DNS和NTP信息? 重新配置主机名请参考:怎样使修改的静态主机名永久生效?
  • 准备工作 在做动态加速之前,请先做如下两个检查。两个条件都满足,才能对应用进行动态加速。 执行如下命令检查待优化的二进制文件中是否可以重新定位。可以重新定位表示可以进行应用优化。 readelf -a application | grep .rela.text 如果二进制文件中.rela.text段存在,表示可以重新定位。 如果不存在,为了允许BOLT在程序中重新排列函数(除了重新排列函数中的代码),需要将--emit-relocs或-q添加到应用程序的最后链接步骤中。 执行hce-wae --check命令查看应用是否支持动态加速。 如果检查结果为3,表示可以使用动态加速工具。否则不支持动态加速。
  • 操作步骤 本例以优化/data/apps/mysql-8.0.28/bin目录下的mysqld应用 ,为您介绍动态加速方式优化应用的操作。 生成插桩版应用并运行。 执行命令/data/hce-wae/dbo/gen_instrumentation /data/apps/mysql-8.0.28/bin/mysqld生成插桩版应用。 命令格式:/data/hce-wae/dbo/gen_instrumentation 应用路径 命令运行完成后,会在当前目录生成对应的以.inst为后缀的插桩文件mysqld.inst。 运行插桩文件获取进程PID,本例为87042。 创建mysqld的应用加速动态配置文件。 每一个待优化的应用都要有一个对应的配置文件,应用加速工具根据此配置文件对应用进行动态加速。 执行如下命令复制一份默认的配置文件为/data/hce-wae/config/mysqld.conf。 [root@localhost]# cp /data/hce-wae/config/hce-wae-tmp.conf /data/hce-wae/config/mysqld.conf 设置/data/hce-wae/config/mysqld.conf配置文件中的origin-exe字段。 origin-exe为待优化应用的位置,本例为/data/apps/mysql-8.0.28/bin/mysqld [root@localhost]# vim /data/hce-wae/config/mysqld.conf 使用配置文件和对应的进程PID配置动态加速工具。 命令格式:hce-wae --conf [PID] [/path/to/config] 启动动态加速,对插桩版mysql进行优化。 命令格式:hce-wae --start [PID] 启动后,可以通过--status参数查看当前优化状态。当状态为Running时,表示进程正在优化中;Finished时,表示进程已经优化完成。 命令格式:hce-wae --status [PID] 优化后,通过--snapshot参数生成优化后的.dbo二进制快照文件,本例为mysqld.dbo。 快照生成的默认路径为/data/hce-wae/snapshot/,可在配置文件中对快照位置进行修改。后续您可以直接使用此优化后的快照文件mysqld.dbo运行应用,无需重复优化。 终止动态加速工具,应用优化结束。 命令格式:hce-wae --stop [PID]
  • hung task 当内核检测到进程处于D状态超过设定的时间时,上报hung task异常。 原理 进程其中一个状态是TASK_UNINTERRUPTIBLE,也叫D状态,处于D状态的进程只能被wake_up唤醒。内核引入D状态时,是为了让进程等待IO完成。正常情况下,IO正常处理,进程不应该长期处于D状态。 hung task检测进程长期处于D状态的原理,内核会创建一个线程khungtaskd,用来定期遍历系统中的所有进程,检查是否存在处于D状态超过设置时长(默认120秒)的进程。如果存在这样的进程,则打印并上报相关警告和进程堆栈。如果配置了hung_task_panic(通过proc或内核启动参数配置),则直接发起panic。 触发方法 创建内核线程,设成D状态,scheduler释放时间片。
  • page allocation failure page allocation failure是申请空闲页失败时,系统上报的错误。当程序申请某个阶数(order)的内存,但系统内存中,没有比申请阶数高的空闲页,即触发内核报错。 原理 Linux使用伙伴系统(buddy system)内存分配算法。将所有的空闲页表(一个页表的大小为4K)分别链接到包含了11个元素的数组中,数组中的每个元素将大小相同的连续页表组成一个链表,页表的数量为1、2、4、8、16、32、64、128、256、512、1024,所以一次性可以分配的最大连续内存为1024个连续的4k页表,即4MB的内存。 假设申请一个包括256个页表的内存,指定阶数order为6,系统会依次查找数组中的第9、10、11个链表,上一个为空,表示没有此阶数的空闲内存,查找下一个,直到最后一个链表。 如果所有链表均为空,申请失败,则内核上报错误page allocation failure。输出报错信息,描述申请阶数为6的内存页失败: page allocation failure:order:6 触发方法 用alloc_pages连续申请高阶数内存页(例如order=10),不释放,直到申请失败。
  • warning Warning是操作系统在运行时,检测到需要立即注意的内核问题(issue),而采取的上报动作,打印发生时的调用栈信息。上报后,系统继续运行。 原理 Warning是通过调用WARN、WARN_ON、WARN_ON_ONCE等宏来触发的。 导致Warning的原因有多种,需要根据调用栈回溯,找到调用Warning宏的具体原因。Warning宏并不会导致系统运行状态发生改变,也不提供处理Warning的指导。 触发方法 根据系统调用构造Warning条件。
  • panic Kernel panic是指操作系统在监测到内部的致命错误,并无法安全处理此错误时采取的动作。内核触发到某种异常情况,运行kernel_panic函数,并尽可能把异常发生时获取的全部信息打印出来。 原理 导致异常的原因多种多样,通过异常打印的调用信息,找到调用kernel_panic的原因。常见的原因包括内核堆栈溢出、内核空间的除0异常、内存访问越界、内核陷入死锁等。 触发方法 内核态读0地址。
  • Bad mm_struct Bad mm_struct错误通常是由于内核中的一个或多个mm_struct数据结构被破坏或损坏所导致。 原理 mm_struct是Linux内核中的一个重要数据结构,用于跟踪进程的虚拟内存区域。如果该数据结构被破坏,可能会导致进程崩溃或系统崩溃。这种错误通常内存异常导致,例如mm_struct区域的内存被踩踏、内存越界等。 触发方法 无人为触发方法,当硬件错误,或者Linux系统内核代码错误时会触发Bad mm_struct。
  • MCE (Machine Check Exception) Machine Check Exception (MCE) 是CPU发现硬件错误时触发的异常(exception),上报中断号是18,异常的类型是abort。 原理 导致MCE的原因主要有:总线故障、内存ECC校验错、cache错误、TLB错误、内部时钟错误等。不仅硬件故障会引起MCE,不恰当的BIOS配置、firmware bug、软件bug也有可能引起MCE。 MCE中断上报,操作系统检查一组寄存器称为Machine-Check MSR,根据寄存器的错误码执行对应的处理函数(函数实现依赖不同的芯片架构实现)。 触发方法 无人为触发方法,当总线故障、内存ECC校验错、cache错误、TLB错误、内部时钟错误等时会触发MCE。
  • 背景说明 HCE运行时,不可避免地会出现一些内核事件,例如soft lockup、RCU(Read-Copy Update) stall、hung task、global OOM、cgroup OOM、page allocation failure、list corruption、Bad mm_struct、I/O error、EXT4-fs error、MCE (Machine Check Exception)、fatal signal、warning、panic。本节为您介绍这些内核事件的原理及触发方法。
  • soft lockup soft lockup是内核检测CPU在一定时间内(默认20秒)没有发生调度切换时,上报的异常。 原理 soft lockup利用Linux内核watchdog机制触发。内核会为每一个CPU启动一个优先级最高的FIFO实时内核线程watchdog,名称为watchdog/0、watchdog/1以此类推。这个线程会定期调用watchdog函数,默认每4秒执行一次。同时调用过后会重置一个hrtimer定时器在2倍的watchdog_thresh时间后到期。watchdog_thresh是内核参数,对应默认超时时间为20秒。 在超时时间内,如果内核线程watchdog没被调度,hrtimer定时器到期,即触发内核打印类似如下的soft lockup异常。 BUG: soft lockup - CPU#3 stuck for 23s! [kworker/3:0:32] 触发方法 关闭中断或关闭抢占,软件执行死循环。
  • RCU(Read-Copy Update) stall RCU stall是一种rcu宽限期内rcu相关内核线程没有得到调度的异常。 原理 在RCU机制中,reader不用等待,可以任意读取数据,RCU记录reader的信息;writer更新数据时,先复制一份副本,在副本上完成修改,等待所有reader退出后,再一次性地替换旧数据。 writer需要等所有reader都停止引用“旧数据”才能替换旧数据。这相当于给了这些reader一个优雅退出的宽限期,这个等待的时间被称为grace-period,简称GP。 当reader长时间没有退出,writer等待的时间超过宽限期时,即上报RCU Stall。 触发方法 内核在Documentation/RCU/stallwarn.txt文档列出了可能触发RCU stall的场景:cpu在rcu reader临界区一直循环,cpu在关闭中断或关闭抢占场景中一直循环等。
  • global OOM Linux的OOM killer特性是一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择结束一些进程释放掉一些内存。 原理 通常oom_killer的触发流程是:内核为某个进程分配内存,当发现当前物理内存不够时,触发OOM。OOM killer遍历当前所有进程,根据进程的内存使用情况进行打分,然后从中选择一个分数最高的进程,终止进程释放内存。 OOM killer的处理主要集中在mm/oom_kill.c,核心函数为out_of_memory,函数处理流程为: 通知系统中注册了oom_notify_list的模块释放一些内存,如果从这些模块中释放出了一些内存,直接结束oom killer流程;如果回收失败,进入下一步。 触发oom killer通常是由当前进程进行内存分配所引起。如果当前进程已经挂起了一个SIG_KILL信号或者正在退出,直接选中当前进程,终止进程释放内存;否则进入下一步。 检查panic_on_oom系统管理员的设置,决定OOM时是进行oom killer还是panic。如果选择panic,则系统崩溃并重启;如果选择oom killer,进入下一步。 进入oom killer,检查系统设置,系统管理员可设置终止当前尝试分配内存、引起OOM的进程或其它进程。如果选择终止当前进程,oom killer结束;否则进入下一步。 调用select_bad_process选中合适进程,然后调用oom_kill_process终止选中的进程。如果select_bad_process没有选出任何进程,内核进入panic。 触发方法 执行占用大内存的程序,直到内存不足。
  • list corruption list corruption是内核检查链表有效性失败的报错,报错类型分为list_add corruption和list_del corruption。 原理 内核提供list_add和list_del,对传入的链表先检查链表的有效性(valid),检查通过后,修改链表增加或删除节点。如果检查链表失败,则上报corruption错误。检查和报错代码在内核lib/list_debug.c。 这种错误通常为内存异常操作导致,例如内存踩踏、内存损坏等。 触发方法 用list.h的内核标准接口创建链表,非法修改链表节点的prev或next指针,再调用内核list_add/list_del接口。
  • I/O error Linux I/O error报错通常表示输入/输出操作失败,在网卡、磁盘等IO设备驱动异常,或文件系统异常都可能打印这个错误。 原理 错误原因取决于代码执行失败的条件。常见的触发异常的原因是硬件故障、磁盘损坏、文件系统错误、驱动程序问题、权限问题等。例如当系统尝试读取或写入磁盘上的数据时,如果发生错误,就会出现I/O错误。 触发方法 系统读写磁盘过程,拔出磁盘,导致磁盘数据损坏。
  • EXT4-fs error EXT4-fs error是由于ext4格式的文件系统中,文件节点的错误导致。 原理 文件储存的最小存储单位叫做“扇区”(sector),连续多个扇区组成“块”(block)。inode节点储存文件的元信息,包括文件的创建者、创建日期、大小、属性、实际存储的数据块(block number)。EXT4格式的inode信息校验失败会触发EXT4-fs error。 内核ext4校验使用checksum校验inode信息,当出现分区表错误、磁盘硬件损坏时,内核返回-EIO错误码,系统上报EXT4-fs error checksum invalid错误。 触发方法 使用磁盘过程中强行拔盘,重新接入读盘。
  • osmt-agent服务自动更新 osmt-agent服务支持周期性检查是否有待更新的RPM包,并自动更新RPM包。检查的周期和执行更新的时间段可以自定义设置。 执行以下命令,确保osmt.conf文件auto_upgrade字段为True。 osmt config -k auto_upgrade -v True 执行systemctl status osmt-agent.service命令确认osmt-agent服务是否正常开启。 Active为active (running)状态,表示osmt-agent正常开启。 如果osmt-agent没有处于active (running)状态,请执行systemctl start osmt-agent.service命令启动osmt-agent。 执行如下命令设置自动更新RPM包的时间段与升级周期。 指定可自动升级的时间段 命令格式:osmt config -k auto_upgrade_window -v "auto_upgrade_window" auto_upgrade_window:配置后台osmt-agent服务自动升级的时间窗,格式为"HH:MM-HH:MM",表示升级的开始时间和截止时间。 如果截止时间小于开始时间,则表示本次升级时间段跨越自然日。如“22:00-05:00”表示升级时间段为当日22:00到次日凌晨5:00。 例如,配置当日23:00到次日01:00时间段为可升级时间窗为: osmt config -k auto_upgrade_window -v "23:00-01:00" 指定检查升级的时间间隔 命令格式:osmt config -k auto_upgrade_interval -v auto_upgrade_interval auto_upgrade_interval:指定两次自动升级之间的最小间隔(单位:天)。 例如,配置每隔1天进行自动升级的命令为: osmt config -k auto_upgrade_interval -v 1 父主题: 更新RPM包
  • 产品优势 节约成本 随着显卡技术的不断发展,单张GPU卡的算力越来越强,同时价格也越来越高。但在很多的业务场景下,一个AI应用并不需要一整张的GPU卡。XGPU的出现让多个容器共享一张GPU卡,从而实现业务的安全隔离,提升GPU利用率,节约用户成本。 可灵活分配资源 XGPU实现了物理GPU的资源任意划分,您可以按照不同比例灵活配置。 支持按照显存和算力两个维度划分,您可以根据需要灵活分配。 XGPU支持只隔离显存而不隔离算力的策略,同时也支持基于权重的算力分配策略。算力支持最小1%粒度的划分,推荐最小算力不低于4%。 兼容性好 不仅适配标准的Docker和Containerd工作方式,而且兼容Kubernetes工作方式。 操作简单 无需重编译AI应用,运行时无需替换CUDA库。
  • general/hwsecurity/cybersecurity三种类型的差异 检查项类型 检查项名称 检查内容 general hwsecurity cybersecurity 是否默认满足 初始配置 文件系统配置 应当对系统关键目录进行分区挂载 - - - 否 确保禁用不需要的文件系统 - - - 否 确保无需修改的分区以只读方式挂载 - - - 否 确保无需挂载设备的分区以nodev方式挂载 - - - 否 确保无可执行文件的分区以noexec方式挂载 - - - 否 确保无需SUID和SGID的分区以nosuid方式挂载 - - - 否 避免使用USB存储 √ - - 是 软件服务配置 禁止安装X Window系统 - - - 是 禁止启用debug-shell服务 √ - - 是 禁止启用rsync服务 √ - - 是 禁止启用avahi服务 √ √ - 是 禁止启用SNMP服务 √ √ - 是 禁止启用squid服务 √ √ - 是 避免启用samba服务 √ √ - 是 禁止启用FTP服务 √ √ - 是 禁止启用TFTP服务 √ √ - 是 禁止启用DNS服务 √ - - 是 禁止启用NFS服务 √ √ - 是 禁止启用rpcbind服务 √ √ √ 否 禁止启用LDAP服务 √ √ - 是 禁止启用DHCP服务 √ √ - 是 禁止安装CUPS服务软件 - - - 是 禁止安装NIS服务软件 - - - 是 禁止安装telnet软件 - - - 是 禁止安装NIS客户端 - - - 是 禁止安装LDAP客户端 - - - 是 禁止安装调测类工具 - - - 是 禁止安装开发编译类工具 - - - 是 禁止安装网络嗅探类工具 - - - 是 软件升级配置 确保配置GPG公钥 - - - 是 确保配置启用gpgcheck - - - 是 确保配置软件仓库源 - - - 是 文件完整性检查 确保安装AIDE - - - 否 应当定期检查文件完整性 - - - 否 通用进程加固 确保启用ASLR √ - - 是 确保core dump配置正确 √ - - 是 应当合理限制用户可打开文件数量 - - - 否 确保链接文件保护配置正确 √ - - 是 确保dmesg访问权限配置正确 √ √ - 否 确保内核符号地址受限访问 √ √ - 是 应当合理限制进程ptrace能力 - - - 否 禁止全局加解密策略配置为LEGACY - - - 是 系统服务 时间同步服务 应当正确配置ntpd服务 - - - 否 应当正确配置chronyd服务 - - - 是 定时任务服务 确保cron服务正常运行 √ - - 是 确保cron配置权限正确 √ √ - 否 SSH服务 确保/etc/ssh/sshd_config权限配置正确 √ √ - 是 确保SSH私钥文件权限配置正确 √ √ √ 否 确保SSH公钥文件权限配置正确 √ √ √ 否 确保启用IgnoreRhosts √ - - 是 应当合理配置认证黑白名单 - - - 否 确保SSH使能PAM认证 √ - - 是 禁止SSH root登录 - - √ 否 禁止SSH空口令登录 √ - - 是 禁止使用HostbasedAuthentication √ - - 是 确保配置Warning Banner文件路径 √ √ - 否 确保正确配置SSH日志级别 √ √ - 是 应当配置SSH服务侦听IP - - - 否 应当正确配置SSH并发未认证连接数 √ - - 否 禁止使用X11Forwarding √ √ - 否 应当配置SSH MaxSessions不超过10 √ - - 是 应当正确配置MaxAuthTries √ - - 否 禁止使用PermitUserEnvironment √ - - 是 应当配置LoginGraceTime不超过60秒 √ √ - 否 确保配置空闲超时间隔时间 √ √ - 否 禁止使用AllowTcpForwarding √ √ - 否 确保SSH KexAlgorithms配置强算法 √ √ - 是 确保SSH MACs配置强算法 √ √ - 是 确保SSH Ciphers配置强算法 √ √ - 是 禁止配置SSH将弃用的选项 √ - - 是 网络服务 禁用不使用的网络协议和设备 避免使用不常见网络协议 - - - 否 避免使用无线网络 - - - 是 内核网络协议栈 禁止系统响应ICMP广播报文 √ √ - 是 禁止接收ICMP重定向报文 √ √ - 否 禁止转发ICMP重定向报文 √ - - 是 应当忽略所有ICMP请求 - - - 否 确保忽略伪造的ICMP报文 √ - - 是 确保启用反向地址过滤 √ √ - 否 禁止IP转发 √ √ - 是 禁止接收源路由报文 √ √ - 否 确保启用TCP-SYN cookie保护 √ √ - 是 应当启用日志记录可疑的网络包 √ - - 否 避免启用tcp_timestamps - - - 否 确保TIME_WAIT TCP协议等待时间已配置 √ - - 是 应当合理配置SYN_RECV状态队列数量 - - - 否 禁止使用ARP代理 - - - 是 防火墙配置 配置firewalld服务 应当启用firewalld服务 - - - 是 确保iptables未启用 - - - 是 确保nftables未启用 - - - 是 应当配置正确的默认区域 - - - 否 应当确保网络接口绑定正确区域 - - - 否 避免开启不必要的服务和端口 - - - 否 配置iptables服务 应当启用iptables服务 - - - 否 确保firewalld未启用 - - - 否 确保nftables未启用 - - - 是 应当正确配置iptables默认拒绝策略 - - - 否 应当正确配置iptables loopback策略 - - - 否 应当正确配置iptables INPUT策略 - - - 否 应当正确配置iptables OUTPUT策略 - - - 否 应当正确配置iptables INPUT、OUTPUT关联策略 - - - 否 配置nftables服务 应当启用nftables服务 - - - 否 确保iptables未启用 - - - 是 确保firewealld未启用 - - - 否 应当配置nftables默认拒绝策略 - - - 否 应当配置nftables loopback策略 - - - 否 应当正确配置nftables input策略 - - - 否 应当正确配置nftables output策略 - - - 否 应当正确配置nftables input、output关联策略 - - - 否 日志审计 auditd 确保auditd审计已启用 √ - - 是 应当在启动阶段启用auditd - - - 否 应当正确配置audit_backlog_limit - - - 否 确保配置单个日志大小限制 - - - 是 确保审计日志rotate已启用 - - - 否 确保审计日志不被自动删除 - - - 是 应当合理配置磁盘空间阈值 - - - 是 避免配置审计日志限速阈值过小 - - - 是 应当配置sudoers审计规则 - √ √ 否 应当配置登录审计规则 - - - 是 应当配置会话审计规则 - - - 是 应当配置时间修改审计规则 - √ √ 否 应当配置SELinux审计规则 - - - 否 应当配置网络环境审计规则 - - √ 否 应当配置文件访问控制权限审计规则 - - - 否 应当配置文件访问失败审计规则 - - - 否 应当配置文件删除审计规则 - - - 否 应当配置账号信息修改审计规则 - √ √ 否 应当配置文件系统挂载审计规则 - - - 否 应当配置提权命令审计规则 - - - 否 应当配置内核模块变更审计规则 - - - 是 应当配置修改sudo日志文件审计规则 - - - 否 rsyslog 确保rsyslog服务已启用 √ √ √ 否 确保系统认证相关事件日志已记录 - - - 是 确保cron服务日志已记录 √ - - 是 应当正确配置各服务日志记录 - - - 是 应当正确配置rsyslog默认文件权限 √ √ √ 否 确保rsyslog日志rotate已配置 - - - 否 应当配置发送日志到远程日志服务器 - - - 否 应当仅在指定的日志主机上接收远程rsyslog消息 - - - 否 确保rsyslog转储journald日志已配置 - - - 否 账号与口令管理 账号管理 禁止无需登录的账号拥有登录能力 - - - 否 禁止存在不使用的账号 - - - 否 应当正确设置账号有效期 - - - 否 禁止存在UID为0的非root账号 - - - 是 确保UID唯一 - - - 是 确保GID唯一 - - - 是 确保账号名唯一 - - - 是 确保组名唯一 - - - 是 确保/etc/passwd中的组都存在 - - - 是 确保账号拥有自己的Home目录 - - - 是 确保账号Home目录权限是750或更严格 - - - 是 避免账号Home目录下存在.forward文件 - - - 是 避免账号Home目录下存在.netrc文件 - - - 是 确保用户PATH变量被严格定义 - - - 是 口令管理 确保配置口令复杂度 √ √ √ 否 确保限制重用历史口令次数 √ √ √ 否 确保口令中不包含账号字符串 - - - 是 确保口令使用SHA512算法加密 √ √ √ 否 确保口令过期时间设置正确 √ √ √ 否 确保口令过期告警时间设置正确 √ √ - 是 应当设置口令修改周期设置正确 √ √ √ 否 确保不活跃口令锁定时间不超过30天 √ - - 是 确保Grub已设置口令保护 - - - 是 确保单用户模式已设置口令保护 - - - 是 身份认证 登录管理 确保登录失败一定次数后锁定账号 √ √ √ 否 避免root用户本地接入系统 - - - 否 确保会话超时时间设置正确 √ √ √ 否 确保Warning Banner包含合理的信息 确保本地登录Warning Banner包含合理的信息 √ √ - 否 确保远程登录Warning Banner包含合理的信息 √ √ - 否 确保motd文件包含合理的信息 √ √ - 否 确保/etc/issue权限配置正确 √ √ - 是 确保/etc/issue.net权限配置正确 √ √ - 是 确保/etc/motd权限配置正确 √ √ - 是 访问控制 SELinux 应当启用enforce模式 - - - 是 应当正确配置SELinux策略 - - - 是 避免标签为unconfined_service_t的服务存在 - - - 否 确保SETroubleshoot服务未安装 - - - 是 确保M CS 转换服务未安装 - - - 是 特权命令 确保su受限使用 √ √ √ 否 确保su命令继承用户环境变量不会引入提权 √ √ √ 否 确保普通用户通过sudo运行特权程序 - - - 否 确保配置sudo日志文件 √ - - 否 禁止使用SysRq键 - √ - 否 系统文件权限 确保/etc/passwd权限配置正确 √ - - 是 确保/etc/passwd-权限配置正确 √ - - 是 确保/etc/shadow权限配置正确 √ - - 是 确保/etc/shadow-权限配置正确 √ - - 是 确保/etc/group权限配置正确 √ - - 是 确保/etc/group-权限配置正确 √ - - 是 确保/etc/gshadow权限配置正确 √ - - 是 确保/etc/gshadow-权限配置正确 √ - - 是 确保全局可写目录已设置sticky位 - - - 是 禁止存在无属主或属组的文件或目录 - - - 是 禁止存在全局可写的文件 - - - 是 禁止存在空链接文件 - - - 是 禁止存在隐藏的可执行文件 - - - 是 确保删除文件非必要的SUID和SGID位 - - - 是 确保umask是027或更严格 √ √ √ 否 “√”表示执行。 “-”表示不执行。
  • 第三方repo源配置 如果要新增第三方repo源,可按下述过程进行配置(以openEuler社区的镜像源为例): 在/etc/yum.repos.d/目录新增openEuler.repo文件(名称可以自定义,文件后缀需以.repo结尾)。使用vim /etc/yum.repo.d/openEuler.repo命令进行编辑。 配置仓库名字,如[openEuler],仓库名必须唯一,可根据实际情况进行调整。 配置name选项,如openEuler repository,表示仓库的具体描述,可根据实际情况进行调整。 配置baseurl选项,此处为:https://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/,表示软件包从该链接获取,具体可参考openEuler或者对应repo提供者的官方说明。 配置gpgcheck选项,为1表示对安装的软件包进行gpg校验。 配置enabled选项,为1表示启用该repo源。 配置gpgkey选项,此处为:https://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler,表示gpg校验使用的公钥来源于该链接。 最终openEuler.repo文件效果如下: [openEuler] name=openEuler repository baseurl=https://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://repo.openeuler.org/openEuler-22.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler 可以通过配置中的priority字段控制repo源的优先级。如果优先使用HCE默认源,可在hce.repo配置中都加上priority=1(数值越小优先级越高),然后在第三方源配置中加上priority=2,数值根据实际情况进行调整。本文仅为示例,完整的openEuler仓库配置请参考HCE获取openEuler扩展软件包。 如果要升级软件包,可参考用户指南更新HCE系统和RPM包。
  • 官方repo源配置 通过弹性云服务器购买的HCE默认镜像,在/etc/yum.repos.d/hce.repo文件中会默认配置官方repo源。以HCE 2.0版本为例,其内容如下: [base] name=HCE $releasever base baseurl=https://repo.huaweicloud.com/hce/$releasever/os/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/hce/$releasever/os/RPM-GPG-KEY-HCE-2 [updates] name=HCE $releasever updates baseurl=https://repo.huaweicloud.com/hce/$releasever/updates/$basearch/ enabled=1 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/hce/$releasever/updates/RPM-GPG-KEY-HCE-2 [debuginfo] name=HCE $releasever debuginfo baseurl=https://repo.huaweicloud.com/hce/$releasever/ debuginfo/$basearch/ enabled=0 gpgcheck=1 gpgkey=https://repo.huaweicloud.com/hce/$releasever/ debuginfo/RPM-GPG-KEY-HCE-2 其中各字段含义如下: name:对repo源的描述。 baseurl:仓库所在的服务器地址,支持http://、ftp://、file://三种格式。 enabled:是否启用该软件仓库,1表示启用,0表示禁用。 gpgcheck:是否进行gpg校验,1表示启用校验,0表示禁用校验。 gpgkey:公钥保存的地址,用于gpg校验。 修改该文件可能会对系统的软件安装、升级产生影响,不建议修改该文件。
  • 附录:conf配置文件说明 #rpm lists for os migration [rpm_lists] #origin system must need rpms baserpms_list = "basesystem initscripts hce-logos plymouth grub2 grubby" //系统迁移依赖的RPM包 #old rpm and default conflict rpms //迁移过程中,原系统可能存在的冲突包 oldrpms_list = centos-backgrounds centos-release-cr desktop-backgrounds-basic \ centos-release-advanced-virtualization centos-release-ansible26 centos-release-ansible-27 \ centos-release-ansible-28 centos-release-ansible-29 centos-release-azure \ centos-release-ceph-jewel centos-release-ceph-luminous centos-release-ceph-nautilus \ centos-release-ceph-octopus centos-release-configmanagement centos-release-dotnet centos-release-fdio \ centos-release-gluster40 centos-release-gluster41 centos-release-gluster5 \ centos-release-gluster6 centos-release-gluster7 centos-release-gluster8 \ centos-release-gluster-legacy centos-release-messaging centos-release-nfs-ganesha28 \ centos-release-nfs-ganesha30 centos-release-nfv-common \ centos-release-nfv-openvswitch centos-release-openshift-origin centos-release-openstack-queens \ centos-release-openstack-rocky centos-release-openstack-stein centos-release-openstack-train \ centos-release-openstack-ussuri centos-release-opstools centos-release-ovirt42 centos-release-ovirt43 \ centos-release-ovirt44 centos-release-paas-common centos-release-qemu-ev centos-release-qpid-proton \ centos-release-rabbitmq-38 centos-release-samba411 centos-release-samba412 \ centos-release-scl centos-release-scl-rh centos-release-storage-common \ centos-release-virt-common centos-release-xen centos-release-xen-410 \ centos-release-xen-412 centos-release-xen-46 centos-release-xen-48 centos-release-xen-common \ python3-syspurpose python-oauth sl-logos yum-rhn-plugin centos-indexhtml \ libreport-centos libreport-web libreport-plugin-mantisbt libreport-plugin-rhtsupport \ libreport hunspell-en-US hunspell-en policycoreutils-gui libcanberra-gtk2 cups \ NetworkManager-libreswan-gnome plymouth-graphics-libs avahi cups-lpd pinentry-qt \ librsvg2-devel libcanberra-gtk3 gnome-themes-standard wodim gsettings-desktop-schemas-devel \ avahi-ui-gtk3 freerdp-libs pulseaudio-utils gstreamer1-plugins-bad-free-gtk ghostscript-cups \ setools-console libxkbcommon-x11 cups plymouth-plugin-two-step pulseaudio-module-x11 ImageMagick-c++ \ cups-devel policycoreutils-sandbox PackageKit-gstreamer-plugin gtk3-immodule-xim avahi-glib avahi-autoipd \ mesa-libGLES foomatic libcanberra-devel plymouth-plugin-label PackageKit-gtk3-module colord avahi-gobject \ pinentry-qt4 avahi-ui-gtk3 plymouth-plugin-two-step ghostscript-cups ImageMagick-perl firewall-config \ plymouth-plugin-label redhat-redhat-lsb-corelsb vim-X11 dbus-x11 pulseaudio PackageKit-command-not-found libproxy-mozjs \ pinentry-gtk nm-connection-editor gtk2-immodule-xim wireshark-gnome pulseaudio-module-bluetooth pidgin-sipe freerdp kmod-kvdo \ redhat-lsb-core #The following list contains the same symbol as centos/redhat dstrpms_list = "hce-release hce-repos" [log_conf] # migration tool log common dir migrate_common_dir = "/var/log/migrate-tool/" //日志存放路径 # migration tool classification log dir migrate_classification_dir = %(migrate_common_dir)s/centos2hce1/ #iso as yum source link [repo_info] base_yum_url =https://repo.huaweicloud.com/hce/1.1/os/x86_64/ //基础yum源路径,用于检查网络状态 #iso as yum source repostr_hce1_1 = //提供迁移模式的源路径 [base] name=hceversion baseurl=https://repo.huaweicloud.com/hce/1.1/os/x86_64/ //基础yum源路径,用于获取RPM包 gpgcheck=0 enabled=1 gpgkey= #released updates [updates] name=hce1_updates baseurl= gpgcheck=0 enabled=0 gpgkey= #additional packages that may be useful [extras] name=hce1_extras baseurl= gpgcheck=0 enabled=0 gpgkey= # plus packages provided by Huawei Linux dev team [plus] name=hce1_plus baseurl= gpgcheck=0 enabled=0 gpgkey=
  • 系统迁移 备份操作系统。 系统迁移至HCE1.1不支持回滚,请备份CentOS整体操作系统(包括系统盘和数据盘)。 执行centos2hce1.py命令,进行系统迁移。 系统迁移的耗时受更新的RPM包数量、大小和从repo源下载速度等影响,一般会在20分钟到1个小时左右完成,具体时间视实际环境确定,执行操作时注意预留足够的时间。 [root@localhost home]# centos2hce1.py 有如下回显信息,表示迁移完成。若迁移失败请使用备份数据恢复。 CentOS含有某些HCE 1.1不提供的RPM包,执行centos2hce1.py命令迁移系统后,迁移工具会自动清除这些RPM包。如果您想保留这些RPM包,请使用-s skip参数进行系统迁移。 (可选)删除无用的RPM包。 如下两个RPM包在迁移过程中并没有使用,也不会对系统运行产生任何影响。在此对您可能产生的疑惑进行解释。 执行reboot命令重启操作系统。 执行cat /etc/os-release命令检查是否迁移成功。 显示如下Huawei Cloud EulerOS信息表示迁移成功。 (可选)开启selinux。 系统迁移前关闭了selinux,请根据需要选择是否开启selinux。 修改/etc/selinux/config文件,将config文件中SELINUX的值设置成enforcing SELINUX=enforcing 重启操作系统使selinux配置生效。
共100000条