部署新服务器后,对 VPS Linux 进行安全审计至关重要,并应定期重复执行。本指南使用 Lynis——Linux 系统中最受欢迎的开源安全审计工具。
什么是 Lynis?
Lynis 是适用于 Unix/Linux 的开源安全审计工具,可执行 300 余项安全检查,涵盖操作系统加固、文件权限、网络配置、身份验证、日志记录等方面,并提供 0 至 100 分的加固指数(Hardening Index)及可操作的改进建议。
安装 Lynis
第一步:使用包管理器安装(Ubuntu/Debian)
sudo apt-get install lynis -y
第二步:从 GitHub 下载(更新版本)
cd /tmp curl -o lynis.tar.gz https://downloads.cisofy.com/lynis/lynis-3.1.3.tar.gz tar xfz lynis.tar.gz mv lynis /usr/local/lynis
运行安全审计
sudo lynis audit system
Lynis 将在 2 至 5 分钟内扫描整个系统,结果分为三类:
- OK(绿色):检查通过
- Warning(黄色):建议修复
- Suggestion(蓝色):推荐改进
报告最后会显示加固指数,例如 Hardening index: 65——目标是达到 70 分以上。
查看 Lynis 详细结果
sudo cat /var/log/lynis.log | grep "Warning\|Suggestion" | head -30
理解加固指数与评分范围
加固指数反映服务器整体的安全状态。分数越高并不代表零漏洞,但说明你已遵循了常见的安全加固实践。以下是各评分区间的含义:
| 分数范围 | 级别 | 含义 | 建议操作 |
|---|---|---|---|
| 0–49 | 弱 | 服务器刚配置或存在多个严重问题 | 上线前须立即修复 |
| 50–69 | 一般 | 已做部分加固,仍有多条警告 | 逐条处理警告项 |
| 70–84 | 良好 | 遵循大部分最佳实践,适合生产环境 | 定期维护并持续运行审计 |
| 85–100 | 优秀 | 全面加固,适合高安全要求的服务器 | 每3个月审计一次以维持安全水位 |
请记住,高加固指数并不等于完全安全。应用层漏洞和零日攻击超出了 Lynis 的检测范围,因此需要配合其他安全工具共同使用。
常见修复方法
1. SSH 加固
# Edit /etc/ssh/sshd_config PermitRootLogin no PasswordAuthentication no Protocol 2 MaxAuthTries 3
2. 禁用未使用的服务
sudo systemctl disable avahi-daemon sudo systemctl disable cups
3. sysctl 加固
# Add to /etc/sysctl.conf net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1 kernel.dmesg_restrict = 1
Auditd 高级规则:精细化监控
在完成基础的 Auditd 安装后,通过添加审计规则,可以捕获关键配置文件的修改、sudo 使用情况、用户账户变更以及敏感目录的访问等高价值事件,从而建立不可篡改的审计追踪记录,为事后取证提供依据。
# List existing audit rules sudo auditctl -l # Watch /etc/passwd and /etc/shadow for write/attribute changes sudo auditctl -w /etc/passwd -p wa -k passwd_changes sudo auditctl -w /etc/shadow -p wa -k shadow_changes # Track sudo command executions sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -k sudo_commands # Save rules permanently sudo nano /etc/audit/rules.d/hardening.rules
推荐的 hardening.rules 内容:
# Monitor sensitive configuration files -w /etc/passwd -p wa -k passwd_changes -w /etc/shadow -p wa -k shadow_changes -w /etc/sudoers -p wa -k sudoers_changes -w /etc/ssh/sshd_config -p wa -k sshd_config -w /var/log/auth.log -p wa -k auth_log # Track privileged command execution -a always,exit -F arch=b64 -S execve -F euid=0 -k privileged_exec
添加规则后重新加载 Auditd:
sudo systemctl restart auditd # Verify rules are loaded sudo auditctl -l
按关键字搜索审计事件:
# Find passwd change events sudo ausearch -k passwd_changes -i # View daily audit summary report sudo aureport --summary
配合 Lynis 使用的其他安全加固工具
Lynis 能发现问题,但不会自动修复。以下互补工具可帮助您在 VPS 上构建纵深防御体系:
- Fail2Ban:多次登录失败后自动封禁 IP,支持 SSH、Nginx、Apache 等众多服务。
- UFW(简易防火墙):简化 iptables 管理——仅开放必要端口,拒绝其他一切连接。
- rkhunter:扫描系统中安装的 rootkit 和后门程序。
- chkrootkit:另一款 rootkit 扫描器,可与 rkhunter 配合使用。
- AIDE(高级入侵检测环境):通过与已知良好基线比对,检测文件系统的变更。
- ClamAV:Linux 防病毒软件——扫描上传文件或定期执行目录扫描。
安装并运行 rkhunter 进行 rootkit 检测:
sudo apt-get install rkhunter -y sudo rkhunter --update sudo rkhunter --check --sk
注意:rkhunter 的许多 WARNING 是正常系统自定义操作导致的误报。处理结果前请务必结合上下文进行核实。
| 工具 | 类型 | 用途 | 免费 |
|---|---|---|---|
| Lynis | 安全审计 | 全面的系统加固评估 | 是 |
| Auditd | 系统日志 | 实时记录系统调用和文件访问 | 是 |
| Fail2Ban | 入侵防御 | 自动封禁暴力破解 IP | 是 |
| rkhunter | Rootkit 扫描 | 检测 rootkit 和后门程序 | 是 |
| AIDE | 文件完整性 | 检测未经授权的文件系统变更 | 是 |
自动化安全监控与告警
仅靠手动审计对于生产服务器来说远远不够。请设置自动告警,以便及时感知任何变化。最简单的方式是配置每周一次的 cron 任务运行 Lynis 并将结果记录到 syslog,同时将 Auditd 日志转发到集中日志系统。
设置每周 Lynis 扫描任务:
# Open crontab sudo crontab -e # Run Lynis every Sunday at 02:00 and log output 0 2 * * 0 /usr/bin/lynis audit system --quiet 2>&1 | /usr/bin/logger -t lynis-weekly
通过 journal 查看每周日志:
sudo journalctl -t lynis-weekly --since "7 days ago"
对于 Auditd,在 /etc/audit/auditd.conf 中配置日志轮转以保留历史记录:
# /etc/audit/auditd.conf log_format = ENRICHED num_logs = 10 max_log_file = 100 max_log_file_action = ROTATE
除日志记录外,还需制定清晰的安全事件响应计划:当 Lynis 发现新警告或 Auditd 记录到可疑事件时,明确通知对象、服务器隔离方式以及备份存储位置。定期演练可确保团队在真实事故发生时快速响应。
安装 Auditd 进行系统调用日志记录
sudo apt-get install auditd -y sudo systemctl enable auditd && sudo systemctl start auditd
查看审计日志:
sudo ausearch -ts recent -i | head -50
建议:每 1 至 3 个月运行一次 Lynis,或在安装新软件后及时运行。目标加固指数应高于 70,并在警告积累之前逐一处理。