在Debian系统上做安全审计,最直接有效的工具就是Lynis。它是一款开源的安全审计工具,能对系统内核、网络配置、文件权限、用户账户、软件包等进行全面扫描,最终给出具体的加固建议和评分。安装和使用Lynis并不复杂,核心步骤就是通过apt源安装、执行扫描、解读报告、逐项加固。下面我把整个流程从安装到落地加固全部讲透。

一、Lynis是什么,为什么选它做Debian安全审计

Lynis是一款基于Shell和Python开发的安全审计框架,最初为Unix/Linux系统设计,后来扩展支持macOS。它的工作原理是通过检查系统配置文件、内核参数、已安装软件包、用户权限、网络监听端口等数百项检查点,对照安全基线给出评分和建议。和其他安全工具相比,Lynis的优势在于:不需要额外安装代理、不依赖网络连接(大部分检查是本地完成的)、输出报告清晰可读、支持自定义测试项。对于Debian服务器管理员来说,它几乎是做安全基线核查的首选工具。

二、在Debian上安装Lynis的完整步骤

Debian 11(Bullseye)和Debian 12(Bookworm)的官方源里已经包含了Lynis包,可以直接通过apt安装。但如果你想用最新版本,建议从官方仓库克隆安装。下面两种方式都讲清楚。

方式一:通过apt直接安装(推荐新手)

sudo apt update
sudo apt install lynis -y

这种方式安装的版本可能不是最新的,但对大多数审计场景已经够用。安装完成后,直接运行lynis命令就可以启动审计。

方式二:从官方Git仓库安装最新版

sudo apt install git -y
git clone https://github.com/CISOfy/lynis.git /opt/lynis
cd /opt/lynis
sudo ./lynis update info

克隆到/opt/lynis目录后,你需要设置一个软链接方便调用:

sudo ln -s /opt/lynis/lynis /usr/local/bin/lynis

这样在任何目录下输入lynis就能直接运行。建议用这种方式,因为官方会持续更新检测规则和安全基线。

三、执行安全审计扫描的正确姿势

安装完成后,执行审计需要root权限,因为很多检查项涉及系统级配置和内核参数。直接运行:

sudo lynis audit system

这个命令会启动全面的系统审计,扫描过程根据服务器配置可能需要几分钟到十几分钟。扫描完成后,Lynis会在终端输出摘要,同时生成一份详细的报告文件,默认保存在/var/log/lynis-report.dat。

如果你只想做快速扫描,可以加参数:

sudo lynis audit system --quick

如果你想查看之前的扫描结果,用:

sudo lynis show report

这里有个实用技巧:如果你想把报告导出为文本方便存档或发给团队,可以这样操作:

sudo lynis audit system --check-all --log-file /tmp/lynis-audit.log
cat /tmp/lynis-audit.log

四、如何读懂Lynis审计报告

Lynis的报告按类别分组,每个检查项有三种状态:绿色(通过)、黄色(警告/建议优化)、红色(存在风险)。报告开头会给出一个总体安全评分,满分100分。一般来说,Debian新装系统首次扫描能拿到60-75分,经过加固后可以提升到85分以上。

报告的核心章节包括:

1. Boot and Services(启动和服务):检查启动项、systemd服务、不必要的守护进程。

2. Kernel(内核):检查内核参数、是否启用了ASLR、是否禁用了危险的内核模块。

3. Networking(网络):检查防火墙规则、监听端口、SSH配置、DNS安全。

4. Filesystems and Storage(文件系统):检查文件权限、挂载选项、日志文件保护。

5. Authentication and Accounts(认证和账户):检查密码策略、root登录方式、sudo配置、过期账户。

6. Software and Packages(软件和包):检查已安装软件包的安全性、是否有已知漏洞的软件。

7. Security Frameworks(安全框架):检查AppArmor、SELinux等强制访问控制是否启用。

五、Debian系统常见安全加固建议及具体操作

根据Lynis扫描结果,下面列出Debian系统最高频出现的安全问题和对应的加固方法。

1. 加固SSH服务

Lynis几乎每次都会提示SSH配置需要优化。编辑SSH配置文件:

sudo nano /etc/ssh/sshd_config

建议修改以下参数:

PermitRootLogin no
PasswordAuthentication no
Port 2222
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

改完后重启SSH服务:

sudo systemctl restart sshd

把默认端口22改成非标准端口(如2222)可以有效减少自动化扫描攻击。同时禁用root直接登录和密码认证,强制使用密钥登录。

2. 启用并配置防火墙

Debian默认没有启用防火墙,Lynis会标记这是高风险项。推荐使用ufw(Uncomplicated Firewall):

sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

如果你用的是nftables(Debian 12默认),也可以直接配置nftables规则,原理相同:默认拒绝入站,只开放必要端口。

3. 强化密码策略和账户管理

Lynis会检查/etc/login.defs和PAM配置。建议设置密码最小长度、过期时间和复杂度:

sudo nano /etc/login.defs

修改或确认以下参数:

PASS_MIN_LEN 12
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14

同时检查是否有过期或无用账户:

sudo awk -F: '($2 != "x" && $3 < 1000) {print $1}' /etc/passwd

这个命令会列出UID小于1000的非系统账户,逐一确认是否还在使用,不用的直接锁定或删除。

4. 内核参数加固

编辑sysctl配置文件:

sudo nano /etc/sysctl.d/99-hardening.conf

添加以下内核参数:

net.ipv4.ip_forward=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_source_route=0
kernel.randomize_va_space=2
kernel.kptr_restrict=2
kernel.dmesg_restrict=1

加载新参数:

sudo sysctl --system

这些参数可以有效防止IP欺骗、内核地址泄露和信息收集攻击。

5. 启用AppArmor强制访问控制

Debian默认安装了AppArmor但可能没有完全启用。检查状态:

sudo aa-status

如果显示有进程处于complain模式( complain mode),建议切换到enforce模式:

sudo aa-enforce /etc/apparmor.d/*

AppArmor可以限制程序的文件访问权限,即使程序被攻破也能限制其破坏范围。

6. 定期更新和漏洞管理

Lynis会检查系统更新状态。保持Debian系统及时更新是最基础的安全措施:

sudo apt update && sudo apt full-upgrade -y
sudo apt install debsecan -y
debsecan --suite $(lsb_release -cs) --format detail

debsecan可以列出系统中已知有CVE漏洞的软件包,方便你针对性修补。

六、自动化定期审计的建议

安全不是一次性的事。建议把Lynis扫描加入定时任务,每周自动跑一次并把报告发到指定邮箱:

sudo crontab -e

添加:

0 3 * * 1 /usr/local/bin/lynis audit system --cronjob --quiet --log-file /var/log/lynis/lynis-$(date +\%Y\%m\%d).log

这样每周一凌晨3点自动执行审计,日志按日期归档,方便追溯安全状态变化。

七、Lynis的局限性和补充工具

Lynis是很好的基线检查工具,但它不能替代漏洞扫描器和入侵检测系统。它主要做配置合规性检查,不做实时漏洞探测。如果你需要更全面的安全评估,可以配合使用:OpenVAS做漏洞扫描、Fail2ban做暴力破解防护、AIDE做文件完整性监控。三者结合才能构建比较完整的Debian安全防护体系。

总结一下,在Debian上安装Lynis做安全审计,核心就是:装好工具、跑全量扫描、逐项看报告、按建议加固、定期复扫。这套流程走下来,系统安全评分基本能稳定在85分以上,对于生产环境的服务器来说已经是相当扎实的安全基线了。