对于大多数运行在公有云上的生产服务器,优先使用云厂商提供的内网镜像源进行漏洞修复,能在保证安全补丁及时性的同时,获得更稳定的下载速度和兼容性。
先说结论:在云主机环境下,云厂商镜像源通常是更稳妥的选择,除非你有特殊的合规要求必须直连操作系统官方源。
- 适合:追求更新过程稳定、内网带宽免费且希望减少外部网络依赖的场景。
- 重点看:镜像源同步安全补丁的延迟情况,以及是否包含必要的 security 仓库。
- 别忽略:切换源后必须清理本地缓存,检查 GPG 签名,并确认 yum 安全插件已安装。
- 生产建议:更新前务必创建云盘快照,以便更新失败时快速回滚。
命令速用版
以下命令用于检查当前源配置并执行更新,注意参数不要带反引号,部分功能依赖特定插件。
# 查看当前 apt 源配置 (Debian/Ubuntu)
cat /etc/apt/sources.list
# 查看当前 yum 源配置 (CentOS/RHEL)
ls /etc/yum.repos.d/
# 更新缓存并升级安全补丁 (apt)
apt update && apt upgrade `--only-upgrade`
# 安装安全插件 (CentOS/RHEL 7+, 仅一次)
yum install -y yum-plugin-security
# 更新缓存并升级安全补丁 (yum/dnf)
yum check-update && yum update `--security`主流云厂商源地址参考
不同云厂商和地域的内网源地址不同,以下是常见示例,具体请以控制台文档为准。
- 阿里云 (Aliyun):
- Ubuntu:
deb http://mirrors.cloud.aliyuncs.com/ubuntu/ - CentOS:
baseurl=http://mirrors.cloud.aliyuncs.com/centos/
- Ubuntu:
- 腾讯云 (Tencent):
- Ubuntu:
deb http://mirrors.cloud.tencent.com/ubuntu/ - CentOS:
baseurl=http://mirrors.cloud.tencent.com/centos/
- Ubuntu:
- AWS:
- 通常使用区域特定的 endpoint,如
us-east-1对应的镜像源,建议查阅 AWS Systems Manager 文档。
- 通常使用区域特定的 endpoint,如
分步处理与风险规避
1. 备份现有配置与快照:在修改任何源文件前,先复制一份备份。生产环境强烈建议先创建云盘快照。
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 对于 yum 源目录
cp -r /etc/yum.repos.d/ /etc/yum.repos.d.bak/2. 替换源地址:根据你所处的云环境,将源地址修改为厂商提供的内网域名。确保替换彻底,不要遗留官方外网地址。
3. GPG 密钥验证:切换源后若出现签名错误,需导入厂商提供的 GPG 密钥。不同系统版本命令略有差异,示例如下:
# Ubuntu/Debian 示例 (具体 key 需参考厂商文档)
apt-key adv `--keyserver` keyserver.ubuntu.com `--recv-keys` [KEY_ID]
# CentOS/RHEL 示例
rpm `--import` /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-74. 清理缓存:切换源后,旧的包索引可能残留,需清理避免冲突。
apt clean
yum clean all5. 执行更新:先更新元数据,再执行升级。生产环境建议先在一台测试机上操作,确认业务无异常后再批量推广。
6. 回滚方案:若更新导致业务异常,优先使用云盘快照恢复整机。若仅需回退特定包:
# apt 回退特定版本
apt-get install package_name=version
# yum 回退
downgrade package_name怎么验证是否生效
更新完成后,可以通过以下方式确认:
- 检查是否有可升级的包:运行
apt list `--upgradable`或yum check-update,若无输出或仅显示非安全更新,说明当前源已同步。 - 查看日志:检查
/var/log/apt/history.log或/var/log/yum.log,确认安装包的成功状态。 - 验证漏洞修复:针对具体 CVE 编号,检查对应软件版本号是否已达到修复版本,可使用
apt-cache policy package_name查看候选版本。
常见坑
- 混用源:不要在一个系统中同时启用官方源和多个厂商镜像源,这会导致依赖关系混乱,升级时可能报错。
- 大版本升级:漏洞修复通常指小版本安全更新,不要随意修改配置导致操作系统大版本升级(如 Ubuntu 20.04 升到 22.04),这可能破坏业务环境。
- 持有包问题:如果某些包被设置为 hold 状态,更新命令不会生效,需检查
apt-mark showhold或yum versionlock。 - 插件缺失:CentOS/RHEL 使用
`--security`参数前,必须确保yum-plugin-security已安装,否则命令无效。 - 签名报错:切换源后若报 GPG 签名错误,不要强制跳过验证,应正确导入密钥以确保包完整性。