openEuler信创适配与安全管理教程
基于openEuler的信创运维环境实战
本文根据openEuler信创运维真实环境配置教程,内容涵盖系统安装、网口绑定、DNS、CA证书、Redis集群、Apache、WordPress、NFS、openGauss、安全加固
一、信创系统安装(Server3 openEuler)
为 Server3 安装 openEuler 操作系统,放入安装介质进入安装界面,依次完成:
- 系统语言:English
- 系统时区:Asia/Shanghai
- 安装类型:Server
- root 密码:启用(口令为
you_passwd),加密方式选择 SM3 - 磁盘分区:选择自定义分区,使用 LVM 逻辑卷
| 位置 | 容量 | 文件系统 | 分区类型 |
|---|---|---|---|
| /(根分区) | 25 GiB | ext4 | LVM |
| swap | 4 GiB | swap | LVM |
| /opt | 5 GiB | xfs | LVM |
系统启动分区(/boot)保持不变,其他未提及的配置均保持默认。安装完成后重启进入系统。
二、信创系统管理
1、网口绑定(Server3)
使用 ens3 和 ens4 配置网口绑定,balance-alb 模式,连接名 nm_bond1,设备名 bond1:
nmcli con add type bond con-name nm_bond1 ifname bond1 mode balance-albnmcli con add type ethernet con-name bond1_port1 ifname ens3 master bond1nmcli con add type ethernet con-name bond1_port2 ifname ens4 master bond1
nmcli con mod nm_bond1 ipv4.method manual ipv4.addresses 172.16.50.103/24nmcli con mod nm_bond1 ipv4.gateway 172.16.50.1nmcli con mod nm_bond1 ipv6.addresses 2402:2025::103/64 ipv6.method manual
nmcli con up nm_bond1nmcli dev statuscat /proc/net/bonding/bond12、网络地址与名称配置(所有主机)
各主机 IP 与 FQDN 规划如下:
| 服务器 | FQDN | IPv4 | IPv6 |
|---|---|---|---|
| Server1 | node1.server.itai.org | ens3:172.16.50.101/24,ens4:10.0.0.101/24 | ens3:2402:2025::101/64 |
| Server2 | node2.server.itai.org | ens3:172.16.50.102/24,ens4:10.0.0.102/24 | ens3:2402:2025::102/64 |
| Server3 | node3.server.itai.org | bond1:172.16.50.103/24 | bond1:2402:2025::103/64 |
| Desktop | ws.server.itai.org | eth0:172.16.50.111/24 | eth0:2402:2025::111/64 |
以 Server1 为例,配置主机名与地址:
hostnamectl set-hostname node1.server.itai.orgbash
nmcli con mod ens3 ipv4.method manual ipv4.addresses 172.16.50.101/24 ipv4.gateway 172.16.50.1nmcli con mod ens3 ipv6.addresses 2402:2025::101/64 ipv6.method manualnmcli con mod ens4 ipv4.method manual ipv4.addresses 10.0.0.101/24nmcli con up ens3 ens4Server2、Desktop 按上表参数同理配置。所有主机间访问均使用 FQDN。
在 /etc/hosts 中补充解析兜底(DNS 搭建完成前使用):
cat >> /etc/hosts <<EOF172.16.50.101 node1.server.itai.org172.16.50.102 node2.server.itai.org172.16.50.103 node3.server.itai.org172.16.50.111 ws.server.itai.orgEOF3、网关、防火墙与 SSH 免密
确认所有 Server 主机网关为 172.16.50.1,并校验连通:
ping -c 4 172.16.50.1启用防火墙,区域为 public,按服务放行端口(永久生效,以 Server1 为例):
systemctl enable --now firewalldfirewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=sshfirewall-cmd --permanent --add-port=53/tcp --add-port=53/udpfirewall-cmd --permanent --add-port=80/tcp --add-port=443/tcpfirewall-cmd --permanent --add-port=18901-18903/tcp --add-port=28901-28903/tcpfirewall-cmd --permanent --add-port=5432/tcpfirewall-cmd --permanent --add-port=3306/tcpfirewall-cmd --reloadfirewall-cmd --list-all放行端口需与实际部署服务对应:DNS 53、Redis 18901-18903(含集群总线 +10000)、Apache 80/443、openGauss 5432、MySQL 3306、NFS 服务另放行 2049/111/rpc-bind。
设置 root 密码并确保可通过 SSH 远程登录(所有 Server):
echo 'you_passwd' | passwd --stdin rootgrep -E 'PasswordAuthentication|PermitRootLogin' /etc/ssh/sshd_configecho "PasswordAuthentication yes" >> /etc/ssh/sshd_configsystemctl restart sshd生成 2 组 SSH 密钥对(RSA 4096 与国密 SM2),名称和位置保持默认:
ssh-keygen -t rsa -b 4096 -N ""ssh-keygen -t sm2 -N ""ls -l ~/.ssh/利用 FQDN 配置 Server 主机间 SSH 免密登录(每台主机均执行,将本机公钥分发到其他主机):
ssh-copy-id node1.server.itai.orgssh-copy-id node2.server.itai.orgssh-copy-id node3.server.itai.org
ssh node2.server.itai.org 'hostname'4、DNS 主备服务(Server1 主、Server2 备)
安装 bind:
yum install -y bind bind-utilsServer1(主 DNS):修改 /etc/named.conf,监听任意地址、允许任意网段查询:
sed -i 's/listen-on port 53 { 127.0.0.1; };/listen-on port 53 { any; };/' /etc/named.confsed -i 's/listen-on-v6 port 53 { ::1; };/listen-on-v6 port 53 { any; };/' /etc/named.confsed -i 's/allow-query { localhost; };/allow-query { any; };/' /etc/named.conf添加正反向区域:
cat >> /etc/named.rfc1912.zones <<EOFzone "server.itai.org" IN { type master; file "db.server.itai.org";};
zone "0.50.16.172.in-addr.arpa" IN { type master; file "db.0.50.16.172";};EOF正向解析文件 /var/named/db.server.itai.org:
cat > /var/named/db.server.itai.org << 'EOF'$TTL 1D@ IN SOA node1.server.itai.org. root.server.itai.org. ( 2025010101 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS node1.server.itai.org. NS node2.server.itai.org.node1 A 172.16.50.101node2 A 172.16.50.102node3 A 172.16.50.103ws A 172.16.50.111www A 172.16.50.101blog A 172.16.50.102EOF反向解析文件 /var/named/db.0.50.16.172:
cat > /var/named/db.0.50.16.172 << 'EOF'$TTL 1D@ IN SOA node1.server.itai.org. root.server.itai.org. ( 2025010101 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS node1.server.itai.org. NS node2.server.itai.org.101 PTR node1.server.itai.org.102 PTR node2.server.itai.org.103 PTR node3.server.itai.org.111 PTR ws.server.itai.org.EOFchown root:named /var/named/db.server.itai.org /var/named/db.0.50.16.172chmod 640 /var/named/db.server.itai.org /var/named/db.0.50.16.172Server2(备用 DNS):配置为 slave,从主服务器同步区域:
cat >> /etc/named.rfc1912.zones <<EOFzone "server.itai.org" IN { type slave; masters { 172.16.50.101; }; file "slaves/db.server.itai.org";};
zone "0.50.16.172.in-addr.arpa" IN { type slave; masters { 172.16.50.101; }; file "slaves/db.0.50.16.172";};EOF启动并验证(两台均执行):
systemctl enable --now namedrndc reloadnslookup node1.server.itai.org 127.0.0.1nslookup node2.server.itai.org 172.16.50.102nslookup 172.16.50.103所有主机的 /etc/resolv.conf 指向 DNS 服务器:
cat > /etc/resolv.conf <<EOFsearch server.itai.orgnameserver 172.16.50.101nameserver 172.16.50.102EOF5、CA 证书服务(Server1)
初始化 CA 目录结构与数据库:
mkdir -p /etc/pki/CA/{private,newcerts,certs,crl}touch /etc/pki/CA/index.txtecho 1000 > /etc/pki/CA/serialchmod 700 /etc/pki/CA/private修改 /etc/pki/tls/openssl.cnf 中 [ CA_default ] 段与 [ policy_match ] 策略:检查国家和组织两个字段是否匹配,其他字段可选,公用名必填:
[ CA_default ]dir = /etc/pki/CAcerts = $dir/certscrl_dir = $dir/crldatabase = $dir/index.txtnew_certs_dir = $dir/newcertscertificate = $dir/cacert.pemserial = $dir/serialprivate_key = $dir/private/cakey.pemdefault_days = 365default_md = sha256policy = policy_match
[ policy_match ]countryName = matchstateOrProvinceName = optionalorganizationName = matchorganizationalUnitName = optionalcommonName = suppliedemailAddress = optional生成 CA 私钥与自签名证书(RSA 4096,有效期 1 年,详细信息如下):
openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem \ -out /etc/pki/CA/cacert.pem -days 365 \ -subj "/CN=ca-rsa.itai.org/C=CN/ST=Beijing/L=Beijing/O=itai.org/OU=ca-rsa"openssl x509 -in /etc/pki/CA/cacert.pem -noout -text为 Server 主机签发证书(CN 为泛域名,有效期 2 年,RSA 4096):
openssl genrsa -out /etc/pki/CA/private/server-rsa.key 4096openssl req -new -key /etc/pki/CA/private/server-rsa.key \ -out /etc/pki/CA/server-rsa.csr \ -subj "/CN=*.itai.org/C=CN/ST=shanghai/L=shanghai/O=itai.org/OU=server"
openssl ca -in /etc/pki/CA/server-rsa.csr \ -out /etc/pki/CA/certs/server-rsa.pem -days 730 \ -notext -batch
openssl x509 -in /etc/pki/CA/certs/server-rsa.pem -noout -text将主机证书复制到所有 Server 主机的 /etc/ssl 目录:
scp /etc/pki/CA/certs/server-rsa.pem node2.server.itai.org:/etc/ssl/scp /etc/pki/CA/certs/server-rsa.pem node3.server.itai.org:/etc/ssl/scp /etc/pki/CA/private/server-rsa.key node2.server.itai.org:/etc/ssl/scp /etc/pki/CA/private/server-rsa.key node3.server.itai.org:/etc/ssl/后续服务需要使用普通证书的均使用此证书 server-rsa.pem / server-rsa.key。
6、Redis 集群(Server1 + Server2)
安装 redis 并为每个节点单独准备配置文件:
yum install -y redismkdir -p /opt/redis-cluster/node1/data /opt/redis-cluster/node2/data /opt/redis-cluster/node3/datamkdir -p /opt/redis-cluster/node4/data /opt/redis-cluster/node5/data /opt/redis-cluster/node6/data集群节点分布如下:
| Redis Node_Name | Server_Name/Port |
|---|---|
| node1 | 172.16.50.101:18901 |
| node2 | 172.16.50.101:18902 |
| node3 | 172.16.50.101:18903 |
| node4 | 172.16.50.102:18901 |
| node5 | 172.16.50.102:18902 |
| node6 | 172.16.50.102:18903 |
各节点独立配置文件 /opt/redis-cluster/[node_name].conf,以 node1 为例:
bind 172.16.50.101port 18901daemonize yespidfile /var/run/redis_18901.pidlogfile /var/log/redis_18901.logdir /opt/redis-cluster/node1/dataappendonly yescluster-enabled yescluster-config-file nodes-node1.confcluster-node-timeout 5000node2、node3 在 Server1 上(端口 18902/18903,dir 指向 node2、node3 的 data 目录);node4、node5、node6 在 Server2 上(端口 18901/18902/18903,bind 172.16.50.102)。
启动全部节点并创建集群(3 主 3 从,每个主节点 1 个从节点):
redis-server /opt/redis-cluster/node1.confredis-server /opt/redis-cluster/node2.confredis-server /opt/redis-cluster/node3.conf
redis-server /opt/redis-cluster/node4.confredis-server /opt/redis-cluster/node5.confredis-server /opt/redis-cluster/node6.conf
redis-cli --cluster create \172.16.50.101:18901 172.16.50.102:18901 172.16.50.101:18902 \172.16.50.102:18902 172.16.50.101:18903 172.16.50.102:18903 \--cluster-replicas 1验证集群状态:
redis-cli -c -p 18901 cluster inforedis-cli -c -p 18901 cluster nodes7、Apache 服务(Server1)
安装 httpd 与 SSL 模块:
yum install -y httpd mod_ssl curl-openssl配置 /etc/httpd/conf.d/itai.conf:
# itai.org 及三级域名访问时跳转到 www.itai.orgRewriteEngine onRewriteCond %{HTTP_HOST} !^www\.itai\.org$ [NC]RewriteCond %{HTTP_HOST} (^|\.)itai\.org$ [NC]RewriteRule ^(.*)$ http://www.itai.org$1 [L,R=301]
# 使用 IP 地址访问时返回 403<VirtualHost 172.16.50.101:80> ServerName 172.16.50.101 <Location /> Require all denied </Location></VirtualHost>
# 域名访问默认页面<VirtualHost *:80> ServerName www.itai.org DocumentRoot /var/www/html</VirtualHost>
# http 跳转 https<VirtualHost *:80> ServerName www.itai.org Redirect permanent / https://www.itai.org/</VirtualHost>
<VirtualHost *:443> ServerName www.itai.org SSLEngine on SSLCertificateFile /etc/ssl/server-rsa.pem SSLCertificateKeyFile /etc/ssl/server-rsa.key DocumentRoot /var/www/html</VirtualHost>写入默认页面并启动:
echo "Hello_ITAI" > /var/www/html/index.htmlsystemctl enable --now httpdsystemctl restart httpdcurl http://www.itai.org/curl -I http://172.16.50.101/8、企业应用部署(Server2 LAMP + WordPress)
安装 LAMP 组件:
yum install -y httpd httpd-tools mariadb-server mariadb php php-fpm php-mysqlnd php-gd php-xml php-mbstringsystemctl enable --now httpd mariadb php-fpm初始化数据库并设置 root 密码,创建 wordpress 库与数据库用户:
mysqlALTER USER 'root'@'localhost' IDENTIFIED BY 'you_passwd';CREATE DATABASE wordpress;CREATE USER 'wpadmin'@'localhost' IDENTIFIED BY 'you_passwd';GRANT ALL PRIVILEGES ON wordpress.* TO 'wpadmin'@'localhost';FLUSH PRIVILEGES;EXIT;部署 WordPress:
tar xf /opt/software/wordpress-*.tar.gz -C /var/www/html/cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.phpsed -i "s/database_name_here/wordpress/" /var/www/html/wordpress/wp-config.phpsed -i "s/username_here/wpadmin/" /var/www/html/wordpress/wp-config.phpsed -i "s/password_here/you_passwd/" /var/www/html/wordpress/wp-config.php配置 blog 虚拟主机:
cat > /etc/httpd/conf.d/blog.conf <<EOF<VirtualHost *:80> ServerName blog.itai.org DocumentRoot /var/www/html/wordpress <Directory /var/www/html/wordpress> AllowOverride All </Directory></VirtualHost>EOFsystemctl restart httpd浏览器访问 http://blog.itai.org 完成安装,站点信息:
- 站点标题:Technology Innovation @ CHINA
- 管理员名称:admin,密码:
you_passwd - 管理员邮箱:mail@itai.org
9、NFS 文件存储(Server3)
安装并创建共享目录,创建存储专用用户:
yum install -y nfs-utilsmkdir -p /data/nfs/lun_clutsergroupadd -g 1111 nfsusersuseradd -u 1111 -g 1111 -s /sbin/nologin nfsusers配置 exports,允许 node1、node2 以 FQDN 形式读写访问,数据落盘后才返回成功(sync),所有操作映射到 nfsusers:
cat > /etc/exports <<EOF/data/nfs/lun_clutser node1.server.itai.org(rw,sync,no_wdelay,all_squash,anonuid=1111,anongid=1111)/data/nfs/lun_clutser node2.server.itai.org(rw,sync,no_wdelay,all_squash,anonuid=1111,anongid=1111)EOFsystemctl enable --now rpcbind nfs-serverexportfs -rexportfs -v防火墙放行 NFS 相关端口:
firewall-cmd --permanent --add-service=nfs --add-service=rpc-bind --add-service=mountdfirewall-cmd --reloadnode1、node2 开机自动挂载,启用服务器超时检测(timeo=3 即 300ms),重试 3 次:
yum install -y nfs-utilsmkdir -p /mnt/lun_clutserecho "node3.server.itai.org:/data/nfs/lun_clutser /mnt/lun_clutser nfs soft,bg,timeo=3,retrans=3 0 0" >> /etc/fstabmount -adf -h /mnt/lun_clutsertouch /mnt/lun_clutser/test_writels -l /mnt/lun_clutser/三、信创系统适配验证
1、openGauss 部署与建库(Server3)
通过 yum 仓库安装 openGauss 及配套工具:
yum install -y opengauss以 opengauss 系统用户初始化数据库并启动:
su - opengaussmkdir -p /var/lib/opengauss/datags_initdb -D /var/lib/opengauss/data --nodename=pg1 -E UTF8 --locale=C -w you_passwdgs_ctl start -D /var/lib/opengauss/datagsql -d postgres -p 5432openGauss 超级用户 opengauss 的口令为
you_passwd,该系统用户口令相同。
创建数据库用户 oaadmin、实例 db_oa 及模式 sche_oa:
CREATE USER oaadmin IDENTIFIED BY 'you_passwd';CREATE DATABASE db_oa OWNER oaadmin;CREATE SCHEMA sche_oa AUTHORIZATION oaadmin;ALTER ROLE oaadmin IN DATABASE db_oa SET search_path TO sche_oa;题面所述 dbA 即实例 db_oa。oaadmin 是 sche_oa、db_oa 的拥有者,登录 db_oa 后默认查询模式为 sche_oa。
在 sche_oa 中创建表 tb_userinfo:
\c db_oa oaadminCREATE TABLE sche_oa.tb_userinfo ( user_sk INT4, c_user_id CHAR(5), c_first_name CHAR(10), c_last_name CHAR(10), c_role CHAR(10), PRIMARY KEY (user_sk));\d sche_oa.tb_userinfo以纯文本形式将 db_oa 导出到 /data/db_oa.sql:
su - opengauss -c "gs_dump -U oaadmin -W you_passwd -p 5432 db_oa -f /data/db_oa.sql"head -20 /data/db_oa.sql创建数据库用户 opsadmin、实例 db_wordpress 及模式 schema_wordpress:
CREATE USER opsadmin IDENTIFIED BY 'you_passwd';CREATE DATABASE db_wordpress OWNER opsadmin;CREATE SCHEMA schema_wordpress AUTHORIZATION opsadmin;ALTER ROLE opsadmin IN DATABASE db_wordpress SET search_path TO schema_wordpress;2、数据迁移与备份
在 Desktop 上安装数据库管理工具 Navicat,完成 wordpress 数据迁移:
- 新建 MySQL 连接(Server2,库 wordpress),记录源数据;
- 新建 openGauss 连接(Server3,库 db_wordpress);
- 使用“数据传输”功能,将 Server2 的 wordpress 库完整迁移至 openGauss 的 db_wordpress 中(仅迁移数据);
- 迁移完成后检查数据完整性、可用性。
将迁移完成的数据库备份到 /data/opengauss.sql:
su - opengauss -c "gs_dump -U opsadmin -W you_passwd -p 5432 db_wordpress -f /data/opengauss.sql"ls -l /data/opengauss.sql四、信创系统安全加固
1、系统登录加固(所有系统)
修改全局环境变量实现终端超时 180 秒自动登出:
echo "export TMOUT=180" >> /etc/profilesource /etc/profile删除不必要的用户 game 和 ftp:
userdel -r gameuserdel -r ftp2、SSH 服务加固(所有系统)
在 /etc/ssh/sshd_config 中增加如下配置:
ClientAliveInterval 20ClientAliveCountMax 3AllowTcpForwarding noX11Forwarding noMaxAuthTries 6systemctl restart sshdssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub3、渗透测试(FLAG 取证)
通过本地 PC 中的渗透测试平台对目标服务器场景进行渗透测试,各项操作结果作为 FLAG 提交:
- 系统版本扫描:对服务器场景进行版本扫描,将结果显示中系统信息的确切版本作为 FLAG 提交
nmap -sV -O 172.16.50.101- 还原攻击路径:发现终端服务(远程登录服务)处于开启状态,还原黑客攻击路径,将服务端口号作为 FLAG 提交
nmap -sT -p- 172.16.50.101- 恶意可执行文件:进入管理员桌面目录,查找遗留的恶意可执行文件,将文件全称作为 FLAG 提交
ls -la /root/Desktop/file /root/Desktop/*- 窃取的文本文档:在管理员桌面下查找窃取文本文档,将文件内容作为 FLAG 提交
cat /root/Desktop/*.txt- 窃取的文档内容:在管理员用户的文档目录中查找窃取的文件,将文件内容作为 FLAG 提交
ls -la /root/Documents/cat /root/Documents/*- 后门用户:排查系统中的后门用户,将用户名作为 FLAG 提交
grep -v nologin /etc/passwdawk -F: '$3 == 0 {print $1}' /etc/passwd- 桌面背景:查找服务器场景中的桌面背景文件,将文件全称作为 FLAG 提交
find / -iname "*.jpg" -o -iname "*.png" -o -iname "*.bmp" 2>/dev/null | grep -i wallpaperls -la /usr/share/backgrounds/五、材料汇报(PPT)
以信创适配数据迁移师身份,制作一份政府门户网站迁移方案汇报 PPT,建议结构:
- 项目背景:说明从 Windows Server 迁移至国产信创服务器的必要性;
- 现状分析:现有门户的软硬件架构、数据规模、依赖组件盘点;
- 迁移方案:服务器选型(openEuler)、数据库迁移(MySQL → openGauss)、应用适配方案;
- 实施步骤:分阶段迁移计划、数据迁移与校验、业务切换与回退预案;
- 风险与保障:安全加固、备份策略、应急与回退方案、验收标准。


