linux security sysctl pam selinux apparmor fstab

Linux 内核与安全配置:sysctl、PAM 及访问控制

Linux 内核加固与安全配置的全面指南,涵盖 sysctl、PAM、SELinux、AppArmor 以及安全的 fstab 挂载设置。

2026-04-18

Linux 内核与安全配置:sysctl、PAM 及访问控制

保护 Linux 系统需要多层次的方法,从内核开始,延伸到身份验证系统,再到访问控制和存储挂载。本指南详细介绍了现代 Linux 环境中最重要的安全配置组件。

1. 使用 sysctl 配置内核参数

sysctl 命令和 /etc/sysctl.conf 文件(以及 /etc/sysctl.d/ 中的文件)是在运行时配置 Linux 内核参数的主要工具。其中许多参数具有显著的安全影响。

使用 sysctl 配置生成器

虽然可以手动编辑配置文件,但 sysctl 配置生成器 (sysctl config generator) 可以帮助确保不遗漏关键的加固设置。常见的配置参数包括:

  • 网络加固:禁用 IP 转发 (net.ipv4.ip_forward = 0)、忽略 ICMP 重定向 (net.ipv4.conf.all.accept_redirects = 0) 以及启用 TCP SYN cookie 保护 (net.ipv4.tcp_syncookies = 1)。
  • 内存保护:通过 kernel.randomize_va_space = 2 启用 ASLR(地址空间布局随机化)。
  • 限制信息泄漏:限制对内核日志的访问 (kernel.dmesg_restrict = 1) 以及内核符号表 (kernel.kptr_restrict = 2)。

Linux 内核参数参考表

参数 推荐值 说明
net.ipv4.tcp_syncookies 1 防止 SYN 洪水攻击。
net.ipv4.conf.all.rp_filter 1 启用反向路径过滤,防止 IP 欺骗。
kernel.randomize_va_space 2 完全启用 ASLR,防止缓冲区溢出漏洞。
fs.protected_fifos 2 防止在全局可写目录中对 FIFO 进行未经授权的写入。

2. 可插拔身份验证模块 (PAM)

PAM 提供了一种灵活的方法来管理各种服务的身份验证,而无需修改服务本身。正确配置 PAM 对于强制执行强密码策略和多因素身份验证至关重要。

PAM 配置生成器的注意事项

PAM 配置生成器 (PAM config generator) 通常专注于 /etc/pam.d/ 中的文件。为了安全起见,应包含的关键模块包括:

  • pam_cracklib.so / pam_pwquality.so:强制执行密码复杂度要求(长度、字符类型)。
  • pam_tally2.so / pam_faillock.so:在多次登录失败后锁定帐户,以防止暴力破解攻击。
  • pam_unix.so:根据 /etc/shadow 检查密码的标准模块。

密码质量配置示例:

password requisite pam_pwquality.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root

3. 强制访问控制:SELinux 和 AppArmor

与基于用户和组的标准自主访问控制 (DAC) 不同,强制访问控制 (MAC) 允许管理员为系统上的每个进程和文件定义细粒度的安全策略。

SELinux 策略生成器 vs. AppArmor 配置文件生成器

  • SELinux (Security-Enhanced Linux):对每个对象(进程、文件、端口)使用标签系统。它功能强大,但学习曲线较陡。通常需要 SELinux 策略生成器 (SELinux policy generator)(如 audit2allow)来处理复杂的拒绝情况。
  • AppArmor:使用基于路径的配置文件。通常认为它比 SELinux 更容易配置。AppArmor 配置文件生成器 (AppArmor profile generator)(如 aa-genprof)可以通过监控应用程序行为来帮助创建配置文件。

SELinux vs. AppArmor 对比

特性 SELinux AppArmor
控制类型 基于标签 基于路径
复杂性
默认分发版 RHEL, CentOS, Fedora Ubuntu, Debian, openSUSE
灵活性 极高
学习曲线 陡峭 适中

4. 使用 /etc/fstab 安全挂载存储

/etc/fstab 文件定义了存储设备的挂载方式。使用正确的挂载选项可以防止许多类型的攻击,例如从临时目录执行恶意二进制文件。

/etc/fstab 生成器安全标志

使用 /etc/fstab 生成器 (/etc/fstab generator) 时,请确保为非系统分区(如 /tmp/var 或外部驱动器)包含以下安全标志:

  • nodev:防止在文件系统上解释块或字符特殊设备。
  • nosuid:禁用设置用户标识符或设置组标识符位。
  • noexec : 防止在文件系统上执行二进制文件。

/tmp 的安全条目示例:

UUID=... /tmp tmpfs rw,nosuid,nodev,noexec 0 0

常见问题 FAQ:Linux 安全配置

问:我应该使用 SELinux 还是 AppArmor?

:通常取决于你的发行版。使用原生支持并默认启用的工具(RHEL 系使用 SELinux,Debian 系使用 AppArmor),因为它们拥有最完善的预配置策略。

问:为什么 net.ipv4.ip_forward 默认是禁用的?

:启用 IP 转发会让你的系统充当路由器,如果没有明确意图并正确配置防火墙,这可能会带来安全风险。

问:如果我配置错了 PAM 会怎样?

:配置错误的 PAM 可能会将所有人(包括 root)锁在系统之外。在测试 PAM 更改时,请始终保持一个活动的 root shell,或者制定恢复计划(如通过 Live CD 启动)。

问:如何验证我的 sysctl 设置已生效?

:使用命令 sysctl -a 查看当前所有的内核参数及其值。你也可以检查特定参数,例如 sysctl net.ipv4.tcp_syncookies