Linux漏洞修复教程:从零开始彻底更新系统
Linux 服务器一旦出现安全漏洞,轻则被植入挖矿程序,重则导致数据泄露。
很多新手觉得“修漏洞”很高深,其实大部分情况下只需执行几条更新命令就能解决。
本文用最直接的方式,带你把一台漏洞百出的 CentOS 或 Ubuntu 系统修复干净。
为什么首先要做备份和快照
无论你用的是阿里云、腾讯云还是自己装的物理机,在动手更新前一定先做快照或备份。
原因很简单:某些内核或关键库的升级可能导致服务不兼容,回滚时快照就是救命稻草。
如果是云服务器,直接在控制台创建“磁盘快照”;
自建服务器就用 tar 打包重要目录(/etc、/var/lib/mysql 等)。
这一步只花几分钟,但能避免整晚的噩梦。
使用包管理器完成全面更新
Debian/Ubuntu 执行 sudo apt update && sudo apt upgrade -y,CentOS/RHEL 执行 sudo yum update -y(新版用 dnf)。-y 参数会自动确认,省去手动输入 y 的麻烦。更稳妥的做法是先跑不带 -y 的升级预览:sudo apt list --upgradable 或 sudo yum check-update,看看有哪些软件包会变。如果发现内核或 nginx、MySQL 等核心服务在列表中,最好安排在业务低谷操作。
更新完成后用 sudo apt autoremove --purge -y 清理不再需要的旧内核和依赖包,既释放磁盘空间又能避免旧漏洞残留。
更新内核并安全重启
安全漏洞通常也存在于 Linux 内核中,包管理器更新后内核版本会升级。
执行 uname -r 记下当前版本,然后 sudo reboot 重启。
重启后再次 uname -r,如果版本号变了,说明内核已更新。
也可以不立即重启,使用 sudo apt install linux-image-$(uname -r | sed 's/-generic//') 强制安装指定版本来保留旧内核启动项。
脚本操作时注意 GRUB 配置不要出错,因为错误配置会导致系统启动失败。
常见解决方案是保持默认(不要自己改 /etc/default/grub 里的 GRUB_DEFAULT 除非你很清楚)。
验证漏洞是否真正修好
验证不能只看更新命令没报错。
推荐三种方法:
- 查看更新日志:
less /var/log/apt/history.log(Debian系)或/var/log/yum.log(CentOS),搜索 Security 或 CVE 编号确认已安装。 - 使用漏洞扫描工具:安装 lynis 执行
sudo lynis audit system,在输出中找[!]标记的安全项,如果之前有漏洞提示现在没了就算修复。 - 检查关键软件版本:
sshd -V(OpenSSH)、nginx -v、mysql --version,对照官方安全公告确保版本高于受影响范围。
特别提醒:不要只看软件版本号,有些漏洞是配置漏洞,比如弱口令或未授权访问,更新包并不解决这些问题,还需修改配置文件。
避坑和高频问题解答
- 更新后网站无法访问:原因往往是 PHP 或 Nginx 兼容问题。去查看错误日志
/var/log/nginx/error.log或/var/log/php-fpm/error.log,根据提示回滚特定版本或调整配置。 - 更新中断导致系统异常:尝试
sudo dpkg --configure -a(Debian)或sudo yum-complete-transaction(CentOS)修复。 - 如何只修复某个 CVE 漏洞而不更新所有包:Debian/Ubuntu 可以
sudo apt install --only-upgrade,但新手建议直接全量更新,否则依赖冲突很麻烦。=<版本> - 生产服务器要求零宕机:使用 Ksplice(商业)或 livepatch 方案,对内核热补丁;普通软件包用 Ansible 写滚动更新策略,或先更新测试机再上线。
如果你正在处理 Linux 漏洞修复,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
系统安全不是一次性工作,建议每周定时执行更新并检查日志,才能让服务器长期保持稳固。