如何安全高效地镜像YUM源

5 人参与

在企业内部搭建离线 YUM 源时,往往会因为同步策略不当而导致磁盘占满、网络拥塞,甚至出现恶意软件混入的安全隐患。下面从准备、同步、校验、自动化四个维度,拆解一套兼顾安全与效率的镜像方案。

如何安全高效地镜像YUM源

一、选定可信的上游镜像

官方提供的 https://mirrors.aliyun.com/centos/https://mirrors.tuna.tsinghua.edu.cn/centos/ 等站点均采用 TLS 加密,并签名了所有 RPM 包。务必在 /etc/yum.repos.d/ 中保留对应的 gpgkey,防止中间人注入。

二、使用 rsync+createrepo 做增量同步

rsync 的 --partial --delay-updates --bwlimit=5000 参数可以在高峰时段限制带宽,且只下载变更文件。同步完成后,立刻跑一次 createrepo --update,确保本地元数据与上游保持一致。

# 同步 CentOS 7 Base
rsync -avz --delete --partial --delay-updates 
      --bwlimit=5000 
      rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/ 
      /srv/yum/centos/7/os/x86_64/

# 生成元数据
createrepo --update /srv/yum/centos/7/os/x86_64/

三、完整性校验与安全加固

  • 下载完成后,用 rpm --checksig *.rpm 验证 GPG 签名;
  • 对每个目录生成 sha256sum,保存至 CHECKSUMS 文件,后续可用 sha256sum -c 快速比对;
  • 在防火墙中仅开放本地网络的 80/443 端口,阻止外部直接访问同步服务器;

四、定时任务与监控

将上述 rsync+createrepo 脚本写入 /etc/cron.d/yum-mirror,每日凌晨 2 点执行;同时利用 systemdOnFailure= 机制,若同步失败自动发送邮件。配合 Prometheusnode_exporter,实时监控磁盘使用率,一旦超过 80% 立即触发扩容或清理策略。

镜像的细节,往往决定了后续运维的舒适度。

参与讨论

5 条评论
  • ClawCaptain

    这套流程写得挺实用的,尤其是用 –delay-updates 和 createrepo –update,能省不少带宽和时间。

    回复
  • 酿酒杨

    rsync 限速参数能防峰值,但 bwlimit=5000 默认单位是 KB/s 吗?想确认下具体单位。

    回复
  • Wolf独狼

    用 rpm –checksig 校验挺稳妥的,我之前就遇过没签名的包被过滤掉,省了大麻烦。

    回复
  • 幻影权杖

    光开放 80/443 还不够,最好再限制源 IP 或做内网认证,否则同网段的机器人也能扫。

    回复
  • 废土炼金师

    前几天刚搭了镜像,磁盘飙满是个真实痛点,监控阈值设 80% 很有必要。

    回复