Kylin V10 SP3系统(源码编译环境)升级及Zabbix、Nginx漏洞修复实战

本文针对银河麒麟V10 SP3操作系统(源码编译环境),提供系统源码升级、Zabbix监控系统漏洞修复、Nginx Web服务漏洞修复的完整实战流程,全程采用源码包编译安装,无yum仓库依赖,包含详细操作步骤、可直接复制的命令及关键注意事项,适配x86_64、arm64架构,适用于生产环境运维人员操作。

核心说明:本文所有操作均基于“源码编译安装”场景,即系统基础组件、Zabbix、Nginx均通过源码包编译部署,未使用系统自带rpm包或第三方yum源,所有源码包均建议从官方渠道下载,确保安全性与兼容性。

一、升级修复前核心准备(必做,规避风险)

1.1 环境检查与信息记录

先确认当前Zabbix、Nginx的安装路径、版本信息,为后续源码卸载、升级提供依据,避免误操作。

# 查看Zabbix安装路径与版本(源码编译默认路径通常为/usr/local/zabbix)

find / -name zabbix_server  # 定位Zabbix服务程序路径

/usr/local/zabbix/sbin/zabbix_server -V  # 查看Zabbix版本,记录版本号(如6.0.10)

# 查看Nginx安装路径与版本(源码编译默认路径通常为/usr/local/nginx)

find / -name nginx  # 定位Nginx程序路径

/usr/local/nginx/sbin/nginx -v  # 查看Nginx版本,记录版本号(如1.23.1)

# 记录当前服务运行状态

systemctl status zabbix-server zabbix-agent nginx  # 确认服务正常运行,便于后续验证

1.2 数据与配置全量备份

源码升级、漏洞修复过程中,需备份关键数据与配置文件,避免升级失败导致数据丢失或服务异常,备份文件建议存储在非系统盘(如/backup目录)。

# 1. 创建备份目录

mkdir -p /backup/{zabbix,nginx}

# 2. 备份Zabbix数据与配置(源码编译环境)

# 备份Zabbix配置文件

tar -zcvf /backup/zabbix/zabbix_config_$(date +%Y%m%d).tar.gz /usr/local/zabbix/etc

# 备份Zabbix数据库(假设使用MySQL,需提前确认数据库账号密码)

mysqldump -uroot -p'数据库密码' zabbix > /backup/zabbix/zabbix_db_$(date +%Y%m%d).sql

# 备份Zabbix日志文件

tar -zcvf /backup/zabbix/zabbix_log_$(date +%Y%m%d).tar.gz /usr/local/zabbix/logs

# 3. 备份Nginx数据与配置(源码编译环境)

# 备份Nginx配置文件

tar -zcvf /backup/nginx/nginx_config_$(date +%Y%m%d).tar.gz /usr/local/nginx/conf

# 备份Nginx网站根目录(根据实际路径调整)

tar -zcvf /backup/nginx/nginx_web_$(date +%Y%m%d).tar.gz /usr/local/nginx/html

# 备份Nginx日志文件

tar -zcvf /backup/nginx/nginx_log_$(date +%Y%m%d).tar.gz /usr/local/nginx/logs

1.3关闭相关服务与依赖准备

升级前需关闭Zabbix、Nginx服务,避免服务运行中占用文件,导致源码编译或替换失败;同时安装源码编译所需的基础依赖(源码包编译需手动安装依赖,确保编译顺利)。

# 1. 关闭Zabbix、Nginx服务

systemctl stop zabbix-server zabbix-agent nginx

systemctl disable zabbix-server zabbix-agent nginx  # 临时禁用,升级完成后重新启用

# 2. 安装源码编译基础依赖(Kylin V10 SP3源码编译必备)

# 若系统未安装gcc、make等工具,需先通过源码安装(此处简化,若需源码安装依赖,可补充)

yum install -y gcc gcc-c++ make cmake autoconf automake libtool pcre-devel zlib-devel openssl-devel mysql-devel libxml2-devel libcurl-devel  # 若yum可用,快速安装依赖;若不可用,需手动下载依赖源码编译安装

# 3. 清理旧编译缓存(避免残留文件影响升级)

rm -rf /tmp/*  # 清理临时目录

find /usr/local -name "*.o" -delete  # 清理编译生成的目标文件

1.4 源码包下载(关键步骤)

所有源码包均从官方渠道下载,确保无篡改、无漏洞,下载后校验文件完整性(通过MD5值对比),避免因源码包损坏导致编译失败。

# 1. 创建源码包存储目录

mkdir -p /usr/local/src/{zabbix,nginx}

cd /usr/local/src

# 2. 下载Zabbix安全版本源码(修复漏洞,选择对应安全版本,如6.0.20)

wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.20.tar.gz

# 校验MD5值(对比官方公布的MD5,确保源码包完整)

md5sum zabbix-6.0.20.tar.gz

# 移动至Zabbix源码目录

mv zabbix-6.0.20.tar.gz /usr/local/src/zabbix/

# 3. 下载Nginx安全版本源码(修复漏洞,选择对应安全版本,如1.25.3)

wget http://nginx.org/download/nginx-1.25.3.tar.gz

# 校验MD5值

md5sum nginx-1.25.3.tar.gz

# 移动至Nginx源码目录

mv nginx-1.25.3.tar.gz /usr/local/src/nginx/


三、Zabbix漏洞修复(源码编译升级)

Zabbix漏洞通过升级至官方安全版本修复,全程采用源码编译,需先卸载旧版本Zabbix,再编译安装新版本,确保配置与数据兼容。

步骤1:卸载旧版本Zabbix(源码编译版本卸载)

# 确认旧版本Zabbix安装路径(之前已记录,默认/usr/local/zabbix)

ZABBIX_PATH=$(find / -name zabbix_server | sed 's/\/sbin\/zabbix_server//')

# 停止旧Zabbix服务(若未停止,再次确认)

systemctl stop zabbix-server zabbix-agent

# 卸载旧版本Zabbix(删除安装目录及相关文件)

rm -rf $ZABBIX_PATH

rm -rf /etc/systemd/system/zabbix-server.service  # 删除服务配置文件

rm -rf /etc/systemd/system/zabbix-agent.service

systemctl daemon-reload  # 重新加载systemd配置

步骤2:解压并编译Zabbix源码

# 进入Zabbix源码目录

cd /usr/local/src/zabbix

# 解压源码包

tar -zxvf zabbix-6.0.20.tar.gz

cd zabbix-6.0.20

# 配置Zabbix编译参数(源码编译核心步骤,根据实际环境调整)

./configure \

--prefix=/usr/local/zabbix \  # 安装路径,与旧版本一致,便于恢复配置

--enable-server \            # 启用Zabbix Server

--enable-agent \              # 启用Zabbix Agent

--with-mysql \                # 关联MySQL数据库(Zabbix数据存储)

--with-libcurl \              # 启用curl支持(监控HTTP等服务)

--with-libxml2 \              # 启用XML支持

--with-openssl                # 启用SSL支持(加密传输)

# 编译Zabbix(根据CPU核心数调整-j参数)

make -j 4

# 安装Zabbix

make install

步骤3:恢复Zabbix配置与数据

# 1. 恢复Zabbix配置文件(从备份中提取)

tar -zxvf /backup/zabbix/zabbix_config_$(date +%Y%m%d).tar.gz -C /

# 确认配置文件路径正确

ls /usr/local/zabbix/etc/zabbix_server.conf  # 确认配置文件存在

# 2. 恢复Zabbix数据库(若数据库未升级,直接导入备份)

mysql -uroot -p'数据库密码' zabbix < /backup/zabbix/zabbix_db_$(date +%Y%m%d).sql

# 若Zabbix版本跨度过大,需执行数据库升级脚本(如从6.0.10升级至6.0.20,无需升级数据库;若跨大版本,需执行sql脚本)

# cd /usr/local/zabbix/share/zabbix/database/mysql

# mysql -uroot -p'数据库密码' zabbix < upgrade.sql

# 3. 调整目录权限(避免Zabbix服务无法访问文件)

chown -R zabbix:zabbix /usr/local/zabbix/

chmod -R 755 /usr/local/zabbix/

步骤4:配置Zabbix服务并启动

# 1. 创建Zabbix用户(若未创建)

useradd -r -s /sbin/nologin zabbix

# 2. 配置Zabbix服务文件(源码编译需手动创建systemd服务)

# 创建Zabbix Server服务文件

cat > /etc/systemd/system/zabbix-server.service << EOF

[Unit]

Description=Zabbix Server

After=network.target mysql.service

[Service]

Type=simple

User=zabbix

Group=zabbix

ExecStart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

# 创建Zabbix Agent服务文件

cat > /etc/systemd/system/zabbix-agent.service << EOF

[Unit]

Description=Zabbix Agent

After=network.target

[Service]

Type=simple

User=zabbix

Group=zabbix

ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

# 3. 重新加载systemd配置,启动并设置开机自启

systemctl daemon-reload

systemctl start zabbix-server zabbix-agent

systemctl enable zabbix-server zabbix-agent

步骤5:验证Zabbix漏洞修复

# 1. 查看Zabbix版本,确认升级成功

/usr/local/zabbix/sbin/zabbix_server -V  # 确认版本为6.0.20(安全版本)

# 2. 检查Zabbix服务状态,确认正常运行

systemctl status zabbix-server zabbix-agent  # 状态为active (running)

# 3. 访问Zabbix Web界面(若部署了Web端),确认正常登录、监控数据正常

# 若未部署Web端,可通过以下命令测试Agent连通性

/usr/local/zabbix/sbin/zabbix_get -s 127.0.0.1 -k "system.uname"  # 能获取到系统信息即正常

# 4. 漏洞验证(可选):通过漏洞扫描工具,扫描Zabbix服务,确认漏洞已消除

四、Nginx漏洞修复(源码编译升级)

Nginx漏洞同样通过源码编译升级至安全版本修复,采用“平滑升级”方式,可避免业务中断(若无需平滑升级,可直接卸载旧版本再安装新版本),全程源码操作。

步骤1:卸载旧版本Nginx(源码编译版本卸载)

# 确认旧版本Nginx安装路径(之前已记录,默认/usr/local/nginx)

NGINX_PATH=$(find / -name nginx | sed 's/\/sbin\/nginx//' | uniq)

# 停止旧Nginx服务(若未停止,再次确认)

systemctl stop nginx

# 卸载旧版本Nginx(删除安装目录及相关文件)

rm -rf $NGINX_PATH

rm -rf /etc/systemd/system/nginx.service  # 删除服务配置文件

systemctl daemon-reload  # 重新加载systemd配置

步骤2:解压并编译Nginx源码(平滑升级可跳过此步骤,直接编译新源码后替换)

# 进入Nginx源码目录

cd /usr/local/src/nginx

# 解压源码包

tar -zxvf nginx-1.25.3.tar.gz

cd nginx-1.25.3

# 配置Nginx编译参数(与旧版本保持一致,确保功能兼容,根据实际需求调整)

./configure \

--prefix=/usr/local/nginx \  # 安装路径,与旧版本一致

--with-http_ssl_module \    # 启用SSL模块(修复SSL相关漏洞)

--with-http_stub_status_module \  # 启用状态监控模块

--with-pcre \                # 启用PCRE正则支持

--with-zlib \                # 启用zlib压缩支持

--user=nginx \              # Nginx运行用户

--group=nginx                # Nginx运行组

# 编译Nginx(根据CPU核心数调整-j参数)

make -j 4

# 安装Nginx(若为平滑升级,无需执行make install,直接替换二进制文件)

make install

步骤5:配置Nginx服务并启动(非平滑升级需执行)

# 创建Nginx systemd服务文件

cat > /etc/systemd/system/nginx.service << EOF

[Unit]

Description=Nginx Web Server

After=network.target

[Service]

Type=forking

PIDFile=/usr/local/nginx/logs/nginx.pid

ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

Restart=on-failure

[Install]

WantedBy=multi-user.target

EOF

# 重新加载systemd配置,启动并设置开机自启

systemctl daemon-reload

systemctl start nginx

systemctl enable nginx

步骤6:验证Nginx漏洞修复

# 1. 查看Nginx版本,确认升级成功

/usr/local/nginx/sbin/nginx -v  # 确认版本为1.25.3(安全版本)

# 2. 检查Nginx服务状态,确认正常运行

systemctl status nginx  # 状态为active (running)

# 3. 验证Nginx功能正常

curl http://服务器IP  # 能访问到网站首页,无报错

curl -I https://服务器IP  # 若启用SSL,确认SSL连接正常

# 4. 漏洞验证(可选):通过漏洞扫描工具,扫描Nginx服务,确认漏洞已消除

五、整体漏洞修复验证与总结

5.1 整体验证

# 1. Zabbix验证

systemctl status zabbix-server zabbix-agent

/usr/local/zabbix/sbin/zabbix_server -V

# 2. Nginx验证

systemctl status nginx

/usr/local/nginx/sbin/nginx -v

# 3. 业务验证:访问Zabbix Web、Nginx网站,确认业务正常运行

# 4. 漏洞验证(可选):通过漏洞扫描工具,扫描Zabbix、Nginx服务,确认无相关漏洞

5.2 注意事项(源码编译环境重点)

•所有源码包必须从官方渠道下载,校验MD5值,避免使用第三方源码包,防止引入新漏洞。

•源码编译前,务必安装所有依赖包(如gcc、pcre-devel等),缺少依赖会导致编译失败,若yum不可用,需手动下载依赖源码编译安装。

•系统内核升级后,必须重启系统才能生效,重启前务必确认所有服务已停止、数据已备份,避免系统无法启动。

•Zabbix、Nginx升级时,安装路径需与旧版本一致,便于恢复配置与数据,避免重新配置业务。

•生产环境建议先在测试机验证整个流程,确认无异常后,再在生产服务器执行,降低风险。

•源码编译过程中,若出现编译错误,可根据错误提示补充依赖或调整编译参数,切勿强行继续编译。

5.3 总结

本文针对Kylin V10 SP3源码编译环境,提供了Zabbix与Nginx漏洞修复的完整源码操作流程,全程无yum仓库依赖,所有步骤均包含详细命令与说明,适配生产环境需求。通过源码编译升级,可彻底修复Zabbix与Nginx应用层已知高危漏洞,同时保留原有业务配置与数据,保障国产化服务器环境安全稳定运行。运维人员可根据实际服务器架构(x86_64/arm64)、软件版本,调整源码包版本与编译参数,直接复制命令执行即可完成操作。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容