如何批量扫描 Linux 服务器漏洞并生成修复报告脚本

文章导读
批量扫描 Linux 漏洞的核心在于“只读扫描”与“集中报告”,而非盲目自动修复。本文提供一套完整的 Shell 脚本方案,支持单机深度扫描与多机批量执行,最终生成可审计的安全报告。
📋 目录
  1. 单机扫描脚本示例
  2. 批量执行与报告收集
  3. 验证与排查
  4. 常见坑与风险
A A

批量扫描 Linux 漏洞的核心在于“只读扫描”与“集中报告”,而非盲目自动修复。本文提供一套完整的 Shell 脚本方案,支持单机深度扫描与多机批量执行,最终生成可审计的安全报告。

先说结论:安全扫描脚本应仅限于信息收集,自动修复风险极高,建议生成报告后人工审核。

如何批量扫描 Linux 服务器漏洞并生成修复报告脚本
  • 先判断:确认服务器业务重要性,避免扫描工具占用资源影响线上服务。
  • 优先做:使用系统自带包管理器检查安全更新,配合轻量级审计工具收集配置信息。
  • 再验证:修复前备份关键配置,修复后检查服务状态和日志确保业务正常。

单机扫描脚本示例

以下脚本兼容 CentOS 与 Ubuntu 系列,自动识别包管理器,将漏洞信息输出到本地文件。

如何批量扫描 Linux 服务器漏洞并生成修复报告脚本
#!/bin/bash
# 安全扫描脚本 scan_security.sh
# 用途:收集安全更新信息与基础配置审计,不执行自动修复

REPORT_DIR="/tmp/security_scan"
mkdir -p $REPORT_DIR
REPORT_FILE="$REPORT_DIR/scan_$(hostname)_$(date +%F).txt"

echo "=== 扫描开始:$(date) ===" > $REPORT_FILE
echo "主机名:$(hostname)" >> $REPORT_FILE
echo "内核版本:$(uname -r)" >> $REPORT_FILE

# 检查 CentOS/RHEL 安全更新
if command -v yum &>/dev/null; then
    echo "--- Yum 安全更新 ---" >> $REPORT_FILE
    yum updateinfo list security >> $REPORT_FILE 2>&1
fi

# 检查 Ubuntu/Debian 安全更新
if command -v apt &>/dev/null; then
    echo "--- Apt 安全更新 ---" >> $REPORT_FILE
    apt list `--upgradable` 2>/dev/null | grep -i security >> $REPORT_FILE
fi

# 可选:Lynis 审计(需提前安装)
if command -v lynis &>/dev/null; then
    echo "--- Lynis 审计摘要 ---" >> $REPORT_FILE
    lynis audit system `--quiet` >> $REPORT_FILE 2>&1
fi

echo "=== 扫描结束 ===" >> $REPORT_FILE
echo "报告生成位置:$REPORT_FILE"

批量执行与报告收集

针对多台服务器,可通过 SSH 循环分发脚本并回收报告。建议建立专门的 reports 目录存储结果。

如何批量扫描 Linux 服务器漏洞并生成修复报告脚本
# 本地创建报告收集目录
mkdir -p ./reports

# 服务器列表
HOSTS="192.168.1.10 192.168.1.11"

for IP in $HOSTS; do
    echo "处理服务器:$IP"
    # 1. 分发脚本
    scp scan_security.sh root@$IP:/tmp/
    
    # 2. 远程执行
    ssh root@$IP "bash /tmp/scan_security.sh"
    
    # 3. 回收报告 (假设报告在 /tmp/security_scan/ 下)
    # 注意:实际路径需根据脚本逻辑调整,此处示例为抓取最新报告
    scp root@$IP:/tmp/security_scan/scan_*.txt ./reports/
done

# 合并所有报告
cat ./reports/*.txt > ./reports/all_servers_scan.txt

验证与排查

扫描完成后,需验证报告有效性及后续修复效果。

  • 验证报告内容:检查生成的 txt 文件是否包含具体的包名和版本信息,避免为空。
  • 验证修复生效:执行更新后,使用 rpm -qadpkg -l 检查关键软件版本号是否变更。
  • 查看日志:检查 /var/log/yum.log/var/log/dpkg.log 确认安装记录。
  • 业务验证:重启相关服务后,通过 curl 或浏览器访问业务端口,确认服务响应正常且无报错。

常见坑与风险

  • 命令语法错误:apt 命令参数不应包含反引号,直接复制脚本时需检查特殊符号。
  • 内网源配置:内网服务器无法连接更新源,需提前配置本地 yum/apt 源,否则扫描结果为空。
  • 内核未重启:内核更新后未重启,导致漏洞修复未生效,需检查 uname -r 版本。
  • 审计工具误报:Lynis 等工具可能产生误报,需结合业务实际情况判断,不要盲目修改所有建议项。
  • 权限控制:批量脚本建议使用只读权限扫描,修复操作由人工执行,避免权限过大导致误操作。