介绍
在系统管理和网络安全领域,安全基线(security baseline)是指系统或网络的最低安全配置标准化级别。建立基线是加固系统、减小攻击面以及确保组织内一致安全态势的基础步骤。合规性控制(compliance controls)是用于验证这些基线是否得到满足和维护的机制和程序。
在本实验(lab)中,你将在 Linux 系统上亲身体验这些概念。你将学习如何为新用户账户定义一个简单的安全基线,验证基线是否已正确应用,并配置 Linux Audit Daemon (auditd) 来监控关键配置文件是否发生未经授权的更改。这个过程对于维护系统完整性和满足监管合规性要求至关重要。
通过本实验,你将能够:
- 修改系统范围内的用户默认设置。
- 创建符合已定义安全基线的新用户。
- 使用标准的 Linux 命令验证合规性。
- 配置
auditd来监控关键文件的更改。 - 搜索和审查审计日志(audit logs)以获取安全事件。
为用户默认设置定义简单的 Linux 安全基线
在本步骤中,你将通过为系统中创建的所有新用户设置默认密码策略来定义一个简单的安全基线。我们将编辑 /etc/login.defs 文件,该文件控制这些默认设置。
首先,我们使用具有 sudo 权限的 nano 编辑器打开配置文件,因为这是一个系统级文件。
sudo nano /etc/login.defs
在 nano 编辑器中,向下滚动查找与密码老化相关的以下三个参数,并修改它们的值。你可以在 nano 中使用 Ctrl + W 来搜索文本。
PASS_MAX_DAYS: 密码可使用的最长天数。我们将此值设置为90。PASS_MIN_DAYS: 两次密码更改之间允许的最短天数。我们将此值设置为7。PASS_WARN_AGE: 密码过期前给予警告的天数。我们将此值设置为14。
找到这些行并将它们修改为如下所示:
#
## Password aging controls:
#
## PASS_MAX_DAYS Maximum number of days a password may be used.
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
## PASS_WARN_AGE Number of days warning is given before a password expires.
#
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
进行更改后,按 Ctrl + X,然后按 Y,最后按 Enter 保存文件并退出 nano。
你现在已经为你的系统上的密码策略建立了一个简单的安全基线。从现在开始创建的任何新用户都将继承这些设置。
使用系统命令验证基线合规性
在本步骤中,你将验证在上一步中定义的基线是否已正确应用。最直接的方法是创建一个新用户并检查其账户属性。
首先,我们创建一个名为 compliance_user 的新用户。useradd 命令将自动应用 /etc/login.defs 中的默认设置。-m 标志确保为用户创建主目录。
sudo useradd -m compliance_user
如果命令成功,将不会产生任何输出。现在,我们可以使用 chage(更改年龄)命令和 -l(列表)标志来检查我们新用户的密码老化设置。
sudo chage -l compliance_user
你应该会看到类似以下的输出。请注意,“Maximum number of days between password change”(两次密码更改之间的最长天数)、“Minimum number of days between password change”(两次密码更改之间的最短天数)和“Number of days of warning before password expires”(密码过期前给予警告的天数)这些值与我们在 /etc/login.defs 中设置的基线相匹配。
Last password change : Aug 05, 2025
Password expires : Nov 03, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 14
此输出证实了我们的基线是有效的,并且系统符合我们对新用户的最新策略。
配置 Auditd 以进行系统调用监控
在此步骤中,你将配置 Linux Audit Daemon (auditd) 来监控我们的基线配置文件 /etc/login.defs 的任何更改。这是一个关键的合规性控制,因为它提供了谁何时更改了文件的日志。
auditd 服务使用一组规则来确定要记录哪些事件。我们将添加一条新规则来监视我们文件上的任何写入或属性更改操作。
我们将把规则添加到 /etc/audit/rules.d/audit.rules 文件中。使用 echo 和 tee 是向系统文件追加行的安全方法。
执行以下命令添加 audit 规则:
sudo echo "-w /etc/login.defs -p wa -k login_defs_changes" | sudo tee -a /etc/audit/rules.d/audit.rules
让我们分解一下这条规则:
-w /etc/login.defs: 指定要监视的文件路径。-p wa: 设置要审计的权限。w代表写入访问,a代表属性更改。-k login_defs_changes: 为这些 audit 事件分配一个自定义密钥login_defs_changes,以便以后轻松搜索。
为了使新规则生效,你必须重启 auditd 服务。
sudo systemctl restart auditd
现在,auditd 正在积极监控 /etc/login.defs 的任何修改。
生成并审查审计日志以执行策略
在本步骤中,你将通过触发事件然后审查生成的日志来测试审计规则。这证明了你的合规性控制正在按预期工作。
为了触发审计规则,我们需要修改 /etc/login.defs 文件。一种不更改内容即可完成此操作的简单方法是使用 touch 命令,该命令会更新文件的访问和修改时间戳。此操作将被 auditd 检测为属性更改。
sudo touch /etc/login.defs
此操作应该会在审计日志中创建一条事件。日志存储在 /var/log/audit/audit.log 中,但日志量可能很大。查找特定事件的更好方法是使用 ausearch 命令,并指定我们在上一步中定义的密钥。
让我们搜索所有带有我们的密钥 login_defs_changes 的事件:
sudo ausearch -k login_defs_changes
输出将包含一个或多个与 touch 命令相关的记录。它看起来会像这样(时间戳和 ID 会有所不同):
----
time->Tue Dec 12 08:35:15 2023
type=PROCTITLE msg=audit(1702370115.321:101): proctitle=746F756368002F6574632F6C6F67696E2E64656673
type=PATH msg=audit(1702370115.321:101): item=0 name="/etc/login.defs" inode=131409 dev=00:1e mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1702370115.321:101): cwd="/home/labex/project"
type=SYSCALL msg=audit(1702370115.321:101): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffc62e212d0 a2=90800 a3=0 items=1 ppid=1102 pid=1125 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="touch" exe="/usr/bin/touch" key="login_defs_changes"
在 SYSCALL 记录的末尾查找 key="login_defs_changes"。这证实了 auditd 已成功记录了我们关键配置文件修改事件,证明了我们的监控控制是活跃且有效的。
总结
恭喜你完成了本次实验!你已成功走完了在 Linux 系统上应用安全基线和实施合规性控制的基本流程。
在本次实验中,你学习了如何:
- 通过修改
/etc/login.defs来定义用户密码策略的安全基线。 - 使用
chage命令验证基线是否对新用户正确强制执行。 - 配置 Linux Audit Daemon (
auditd) 来监控关键配置文件是否发生更改。 - 使用
ausearch触发和审查审计日志,以确认你的监控控制正在工作。
这些技能对于任何负责加固系统、维护安全态势以及满足 CIS Benchmarks 或 NIST 指南等合规性标准的系统管理员或安全专业人员来说都是基础。通过建立清晰的基线并持续监控偏差,你可以显著提高 IT 基础设施的安全性和完整性。



