服务器基线扫描工具,一键检测安全风险:服务器基线扫描工具

服务器基线扫描的核心目的,是用一套固定标准快速找出账号、端口、权限、补丁这些容易被忽略的风险点。
本文面向零基础运维,用开源工具 Lynis 加一个自写脚本,带你在 Linux 上完成一次可复现的一键检测,并知道结果怎么看、问题怎么修。

扫描前先确认环境和权限

动手之前先明确两点:扫描对象是谁,用什么身份执行。

  • 适用系统:主流 Linux 发行版(CentOS、Ubuntu、Debian 等),以下命令在 root 或具备 sudo 权限的账号下执行。
  • 检查范围:本地系统配置层面,不涉及网络层漏扫(端口外部探测是另一类工具)。
  • 关键原则:基线扫描只读不改,先看清楚现状再决定是否加固,避免误改生产配置。

登录服务器,确认系统版本和包管理器,方便后续安装:

cat /etc/os-release
# Ubuntu/Debian 用 apt,CentOS/RHEL 用 yum 或 dnf

安装 Lynis 并跑第一次扫描

Lynis 是一款成熟的开源主机安全审计工具,能自动检查数百个基线项,适合做日常体检。

Ubuntu/Debian 安装:

sudo apt update
sudo apt install -y lynis

CentOS/RHEL 如果仓库里没有,用官方脚本安装:

# 建议先查看脚本内容再执行
curl -fsSL https://cisofy.com/files/lynis-3.x.tar.gz -o lynis.tar.gz
tar -xzf lynis.tar.gz
cd lynis
sudo ./lynis audit system

扫描结束后,重点看结果文件里的建议条目。扫描不会自动改配置,只输出问题和加固建议,修复与否由你决定。

用脚本补齐你关心的检查项

Lynis 覆盖面广,但有些团队关心的项(比如特定账号、特定端口)需要自己补。
下面这个脚本把常见基线项串成一次执行,保存为 baseline_check.sh

#!/bin/bash
echo "===== 基线扫描开始 $(date) ====="

# 1. UID 为 0 的账号(应为 root 一个)
echo "[1] UID=0 账号:"
awk -F: '$3==0 {print $1}' /etc/passwd

# 2. 空密码账号
echo "[2] 空密码账号:"
awk -F: '$2=="" {print $1}' /etc/shadow 2>/dev/null || echo "需 root 权限读取 /etc/shadow"

# 3. 监听端口
echo "[3] 监听中的端口:"
ss -tulnp 2>/dev/null || netstat -tulnp

# 4. SSH 关键配置
echo "[4] SSH 配置:"
grep -Ei '^(PermitRootLogin|PasswordAuthentication|Port)' /etc/ssh/sshd_config

# 5. 可写权限异常的敏感文件
echo "[5] 全局可写文件(前 20 个):"
find /etc /bin /sbin -type f -perm -0002 2>/dev/null | head -20

echo "===== 扫描结束 ====="

赋权并执行:

chmod +x baseline_check.sh
sudo ./baseline_check.sh > baseline_report.txt 2>&1
cat baseline_report.txt

把输出重定向到文件,方便留档和对比。建议每次加固前后各跑一次,用差异判断修复是否生效。

结果怎么看,哪些优先处理

扫描结果里项目很多,不必全部立刻处理。
按风险高低排优先级:

  • 高危优先:UID 为 0 的多余账号、空密码账号、SSH 允许 root 直接登录且允许密码认证、全局可写的系统目录文件。
  • 中危关注:开放了非必要监听端口、SSH 使用默认 22 端口且暴露公网。
  • 低危记录:日志轮转、审计策略等不影响即时安全但建议补齐的项。

一条可独立判断的结论:只要出现非预期的 UID=0 账号或空密码账号,就应视为高风险,先禁用或删除再继续其他加固。

常见坑和修复示例

几个新手最容易踩的点:

  • 直接改 sshd_config 后没重启服务,以为没生效。改完执行 sshd -t 校验语法,再用 systemctl restart sshd 重启。
  • 关闭密码登录前没确认密钥可用,把自己锁在服务器外。先测试密钥登录成功,再关密码认证。
  • find / 全盘扫描可写文件,耗时且刷屏,应限定 /etc /bin /sbin 等目录。
  • 把扫描脚本输出的账号名直接删除,误删系统账号。处理前用 id 账号名 确认用途。

SSH 加固参考配置:

PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3

改完务必先 sshd -t 验证,再重启服务。

验证加固是否真正生效

修复后再次执行扫描,对比前后结果:

sudo ./baseline_check.sh > baseline_after.txt
# 对比差异
diff baseline_report.txt baseline_after.txt

再看关键项是否已符合预期:

  • awk -F: '$3==0 {print $1}' /etc/passwd 只应输出 root。
  • grep PasswordAuthentication /etc/ssh/sshd_config 应显示 no
  • ss -tulnp 中不应再有计划外的监听端口。

判断标准很直接:同一检查项在加固后的输出里消失或变成预期值,才算真正修复。

几个常见疑问

扫描会不会影响线上业务?
Lynis 和上述脚本都是只读检查,不改配置、不重启服务,正常情况不影响业务;
但扫描期间会产生一定磁盘和 CPU 开销,建议避开业务高峰。

多久扫一次比较合适?
建议至少每月一次,并在每次系统变更、开放新端口或新增账号后补扫一次,便于发现配置漂移。

Lynis 的分数重要吗?
分数可作为趋势参考,不必只盯分数。
更应关注高危项是否清零,以及每次扫描结果的差异。

只有一台服务器也值得做吗?
值得。
基线扫描的价值在于把安全标准固定下来,机器越少越容易漏掉手工检查,脚本化后反而更省心。

安全基线不是一次性任务,把扫描脚本加入定时任务或发布流程,才能持续发现风险。

分享到:
上一篇
开源程序漏洞高发,CMS站点定期扫描方案
下一篇
AI生成网站源码,部署到服务器踩坑记录
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意