Linux 系统的漏洞扫描与修复
下面给你一套**零基础、可直接照着做**的 Linux 漏洞扫描与修复完整流程(含工具、命令、风险分级、修复步骤与加固建议)。 --- ## 一、漏洞扫描:怎么发现问题 ### 1)轻量本地扫描(首选:lynis) **特点:开源、无依赖、5分钟跑完、新手友好** ```bash # Ubuntu/Debian 安装 sudo apt update sudo apt install -y lynis # CentOS/RHEL sudo yum install -y epel-release sudo yum install -y lynis # 执行扫描(必须root) sudo lynis audit system ``` - 报告位置:`/var/log/lynis.log` - 重点看:`WARNING`(高危)、`SUGGESTION`(中危)、`OK`(安全) - 常见问题:SSH弱配置、端口开放过多、密码策略弱、未打安全补丁 ### 2)查看系统可更新的安全补丁(最实用) ```bash # Ubuntu/Debian apt list --upgradable | grep -E "security|CVE" # CentOS/RHEL yum updateinfo list security # 或 dnf list updates | grep -E "security|CVE" ``` 带 `security/CVE` 的都是**安全补丁**,优先修复。 ### 3)网络端口与服务扫描(nmap) ```bash # 安装 sudo apt install -y nmap # 扫描本机开放端口与服务版本 sudo nmap -sV -A 127.0.0.1 ``` 重点关注:**21(FTP)、23(Telnet)、3389(RDP)、开放不明端口、老旧服务(如 Apache 2.2)** ### 4)企业级深度扫描(OpenVAS,可选) - 开源、类似 Nessus,支持 CVE 库、漏洞评级、导出报告 - 适合:公网服务器、等保合规、多服务器批量扫描 - 部署建议:用 Docker 快速搭建,避免污染主机 --- ## 二、漏洞分级(按 CVSS 评分) - **严重 9.0–10.0**:远程代码执行、提权、root 权限 → **立即修复(24h内)** - **高危 7.0–8.9**:远程利用、信息泄露 → **48h内修复** - **中危 5.0–6.9**:本地权限、配置错误 → **一周内修复** - **低危 0.1–4.9**:弱提示、优化建议 → **例行维护** --- ## 三、漏洞修复:标准流程(生产环境必看) ### 1)修复前:备份+快照(可回退) ```bash # 关键配置备份(示例) sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo cp -a /etc/sysctl.conf /etc/sysctl.conf.bak # 云服务器:打系统快照/镜像(必须) ``` ### 2)一键更新所有安全补丁(最常用) ```bash # Ubuntu/Debian sudo apt update sudo apt upgrade -y # 安全专用(无人值守) sudo apt install -y unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades # CentOS/RHEL 7 sudo yum update -y # CentOS/RHEL 8/9 sudo dnf update -y ``` ### 3)内核漏洞修复(高危重点) ```bash # 查看当前内核 uname -r # Ubuntu/Debian 升级内核 sudo apt install -y linux-image-$(uname -r | cut -d'-' -f1)-latest # CentOS/RHEL 升级内核 sudo yum update kernel -y # 新版内核(ELRepo) sudo yum --enablerepo=elrepo-kernel install kernel-ml -y # 重启生效 sudo reboot ``` ### 4)常见高危漏洞修复示例 #### ① sudo 提权漏洞(CVE-2021-3156) ```bash sudo apt update && sudo apt install sudo -y # 验证 sudo sudo --version ``` #### ② OpenSSL 漏洞(心脏出血等) ```bash sudo apt update && sudo apt install openssl -y ``` #### ③ SSH 弱配置(暴力破解风险) ```bash # 编辑配置 sudo vi /etc/ssh/sshd_config # 关键加固项 PermitRootLogin no # 禁止root直接登录 PasswordAuthentication no # 关闭密码登录(改用密钥) MaxAuthTries 3 # 最大尝试次数 AllowUsers admin # 只允许指定用户 # 重启生效 sudo systemctl restart sshd ``` --- ## 四、无补丁时的临时缓解(应急) - **禁用非特权用户命名空间**(缓解部分内核提权) ```bash # Ubuntu/Debian echo "kernel.unprivileged_userns_clone=0" | sudo tee /etc/sysctl.d/99-disable-unpriv-userns.conf sudo sysctl -p # CentOS/RHEL echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf sudo sysctl -p ``` - **黑名单问题内核模块**(如 nf_tables 漏洞) ```bash echo "blacklist nf_tables" | sudo tee /etc/modprobe.d/nf_tables-blacklist.conf sudo reboot ``` --- ## 五、修复后验证 1. **版本核对**:确认内核/软件包已升级到安全版本 ```bash uname -r dpkg -l | grep openssl ``` 2. **专项复扫**:lynis 或 OpenVAS 重新扫描,原高危漏洞消失 3. **业务验证**:重启相关服务,确认网站/数据库/SSH 正常 4. **日志审计**:检查 `/var/log/auth.log`、`/var/log/syslog` 无报错 --- ## 六、日常安全基线(长期防护) 1. **定期更新**:每周一次安全补丁,内核更新后重启 2. **关闭无用服务**:Telnet、FTP、不必要的端口 ```bash sudo systemctl disable telnet sudo systemctl stop telnet ``` 3. **防火墙放行**:只开放必要端口(如 22、80、443) 4. **密码策略**:强密码、定期更换、禁用弱口令 5. **日志监控**:开启 SSH 登录日志,定期审计 --- ## 七、极简总结 - **扫描**:先用 lynis 本地审计,再用 apt/yum 查安全补丁,nmap 扫端口 - **修复**:备份 → 升级补丁/内核 → 重启 → 验证 - **应急**:无补丁时用 sysctl/模块黑名单缓解 - **长期**:定期更新、最小化开放端口、强化 SSH 配置 --- 要不要我给你一份可直接复制的 **Linux漏洞修复检查清单**(含备份命令、补丁更新、SSH加固、重启验证),你照着逐项执行即可?



