使用 Lynis 和 Auditd 进行 VPS Linux 安全审计

部署新服务器后,对 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 分钟内扫描整个系统,结果分为三类:

报告最后会显示加固指数,例如 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 上构建纵深防御体系:

安装并运行 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,并在警告积累之前逐一处理。

VPS Linux 随时可部署,安全由您掌控

AsiaGB VPS 覆盖泰国与新加坡——完整 Root 权限,按需配置安全策略。套餐低至每月 500 泰铢起。

查看 VPS 套餐