系统与软件更新:及时修补漏洞

及时打补丁是成本最低、收益最高的安全措施:学会手动更新、开启自动安全更新、处理内核重启,并在更新前做好备份。

服务器一旦联网,就持续暴露在漏洞扫描之下。绝大多数入侵并非"高级黑客",而是攻击者利用了早已有补丁、但你没打的已知漏洞。及时更新,是投入最小、回报最高的一项安全工作。

为什么要及时更新

  • 修补已知漏洞:公开漏洞(CVE)一旦披露,自动化扫描与攻击工具几天内就会满互联网跑,未打补丁的服务器是首要目标。
  • 稳定与兼容:更新同时修复崩溃、内存泄漏和兼容性问题。
  • 越拖越贵:长期不更新会积累大量变更,某天被迫升级时风险和工作量都成倍增加。

手动更新:先区分发行版

命令因发行版而异,别混用。

Ubuntu / Debian 系(apt):

sudo apt update        # 刷新软件包索引
sudo apt upgrade       # 升级已安装的包
sudo apt full-upgrade  # 允许为升级而增删依赖(原 dist-upgrade)
sudo apt autoremove    # 清理不再需要的旧依赖

RHEL / CentOS / Rocky / AlmaLinux / Fedora 系(dnf):

sudo dnf upgrade                    # 升级全部包(dnf update 是其别名)
sudo dnf upgrade --security         # 只装安全更新
sudo dnf updateinfo list security   # 查看有哪些安全更新

自动安全更新

安全补丁往往等不起。可以让系统自动只安装安全更新,功能更新仍手动控制。

Ubuntu / Debian:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

策略文件在 /etc/apt/apt.conf.d/50unattended-upgrades(可配置是否自动重启、白名单等)。

RHEL 系:

sudo dnf install dnf-automatic
# 编辑 /etc/dnf/automatic.conf,建议 apply_updates = yes、只启用 security
sudo systemctl enable --now dnf-automatic.timer

> 建议:自动安全更新可以放心开;大版本或内核类更新则留给手动、在可控时间窗内执行。

内核更新与重启

多数软件更新后重启对应服务即可,但内核、glibc、systemd 等核心组件更新后必须重启整机才能生效。

Ubuntu / Debian: 安装 needrestart 后,升级时会自动提示哪些服务需要重启,并判断内核是否需要重启:

sudo apt install needrestart
sudo needrestart
# 若存在此文件,说明需要重启
cat /var/run/reboot-required

RHEL 系:

sudo dnf install dnf-utils
needs-restarting -r   # 返回是否需要重启整机
needs-restarting -s   # 列出需要重启的服务

确实需要时,选低峰期 sudo reboot。若追求内核热补丁(不停机),可了解 kpatch(RHEL)/ Ubuntu Livepatch,但仍建议定期彻底重启。

更新前:备份与先行测试

自动化再好,也要留退路。

  • 先快照/备份:更新前对 VPS 做一次快照,或备份关键配置(/etc)与数据。出问题可秒回滚。
  • 生产环境先测试:重要变更先在测试机或预发环境跑通,再上生产。
  • 可回退:apt 的 /var/log/apt/history.log、dnf 的 dnf history 可查看并回退最近一次事务。
  • 分批发布:多台服务器时先更新一小部分,观察无异常再铺开。

订阅安全公告

主动获知比被动挨打好:订阅发行版安全公告(如 Ubuntu Security Notices、Red Hat / Rocky / Debian security 邮件列表),关注所用软件(数据库、Web 服务器、语言运行时)的官方安全渠道,做到高危漏洞第一时间响应。

小结

  • 补丁不是可选项:未打补丁的已知漏洞是入侵的头号入口。
  • 记牢两套命令:apt update && apt upgrade(Debian 系)与 dnf upgrade(RHEL 系),别混用。
  • 开启自动安全更新(unattended-upgrades / dnf-automatic),把补丁窗口压到最短。
  • 内核类更新后用 needrestart / needs-restarting -r 判断,择机重启。
  • 更新前必做快照/备份,重要变更生产前先测试,分批发布。
  • 订阅安全公告,让响应跑在攻击前面。