Linux安全防护全解析

📅 2026/7/9 6:00:09
Linux安全防护全解析
Linux 系统安全是一个多层次的防御体系除了 PAM可插拔认证模块这一核心的认证框架外还包含众多其他专注于授权、访问控制、审计和隔离的安全或权限组件。这些组件共同构成了 Linux 系统的纵深防御架构。以下表格系统性地梳理了 Linux 中除 PAM 外的主要安全与权限组件并对比了其核心功能和应用场景组件类别组件名称核心功能与目的典型应用场景与示例与 PAM 的关系/区别强制访问控制SELinux提供基于安全上下文和策略的强制访问控制。所有进程和文件对象都被赋予一个安全标签访问由中央策略强制决定不受用户自主控制。• 限制服务进程如httpd只能访问其 Web 目录即使被攻破也无法读取/etc/shadow。• 在 RHEL、CentOS、Fedora 等发行版中默认启用。互补。PAM 管“你是谁”认证SELinux 管“你能做什么”授权。例如即使用户通过 PAM 认证成功登录其进程能访问的资源仍受 SELinux 策略限制 。强制访问控制AppArmor提供基于路径的强制访问控制。为每个应用程序定义一份策略文件Profile明确规定其可以访问的文件、网络、能力等。• 为 Nginx 定义策略限制其只能读写/var/www/html和/var/log/nginx。• 在 Ubuntu、SUSE 等发行版中默认启用。•Snap 包格式广泛使用 AppArmor 实现沙箱隔离 。互补。与 SELinux 目标相同MAC但实现方式路径 vs 标签和易用性不同。AppArmor 的学习曲线通常更平缓。权限提升与委托sudo允许普通用户以其他用户通常是 root的身份执行命令并提供精细的权限委托和审计。• 允许开发团队成员tom仅能以 root 身份执行systemctl restart nginx命令。• 配置在/etc/sudoers文件中语法严谨。协同工作。用户执行sudo时首先会经过 PAM 认证检查密码、令牌等。PAM 的pam_rootok、pam_wheel等模块常与sudo结合实现诸如“允许 wheel 组成员无需密码使用 sudo”的规则 。特权分离Capabilities将 root 用户的超级权限分解为一系列独立的能力可以赋予给普通进程实现最小特权原则。• 给ping命令赋予CAP_NET_RAW能力使其无需 setuid root 即可创建原始套接字。• 使用setcap命令设置sudo setcap cap_net_rawep /bin/ping。• SELinux/AppArmor 的策略中可以细粒度地控制 capabilities。下层机制。PAM 和 MAC 系统在高层进行访问决策而 capabilities 是内核层面更底层的权限单元。例如一个通过 PAM 认证的进程其具体能执行哪些特权操作可能受其拥有的 capabilities 限制。命名空间与隔离Namespaces为进程提供系统资源的隔离视图如 PID、网络、挂载点、用户等。是容器技术如 Docker的基石。• Docker 容器利用多个 namespace 实现进程、网络、文件系统的隔离使容器内的进程认为自己运行在独立的系统中。不同层面。PAM 管理认证Namespace 提供隔离环境。容器内的进程启动时其认证可能仍会通过容器内的 PAM 模块进行。资源控制与隔离Control Groups限制、记录和隔离进程组所使用的物理资源CPU、内存、磁盘 I/O、网络等。• 防止某个服务如 MySQL耗尽所有内存导致系统崩溃。• 通过systemd或cgcreate、cgset等命令管理。资源管控。与 PAM 的pam_limits模块功能有重叠但更强大。pam_limits主要基于用户/会话来限制资源如打开文件数、进程数而 cgroups 可以基于进程树进行更精细、动态的资源管控 。审计与监控Linux Audit提供详细的系统审计框架能够记录系统调用、文件访问、用户命令等安全相关事件。• 监控谁修改了/etc/passwd文件。• 跟踪特定用户执行的所有命令。• 使用auditd守护进程和ausearch、aureport工具。审计互补。PAM 模块如pam_tty_audit可以配置为通过 Audit 框架记录特定用户的 TTY 输入。两者结合可以提供从认证到命令执行的完整审计线索 。文件系统安全文件访问控制列表扩展了传统的 UGO用户-组-其他权限模型允许为任意用户或组设置文件/目录的权限。• 让用户alice和组developers都能读写一个项目文件而其他用户不可访问。• 使用setfacl和getfacl命令管理。权限基础。PAM 认证通过后用户进程访问文件时内核最终会根据文件的 DAC包括 ACL来判定是否允许访问。这是 Linux 最基础的自主访问控制层。内核安全模块Linux Security Modules一个内核框架允许不同的安全模块如 SELinux, AppArmor, Smack, TOMOYO被加载到内核中以实现强制访问控制。SELinux 和 AppArmor 都是作为 LSM 的实现模块存在的。LSM 提供了统一的钩子hooks接口。基础框架。PAM 是用户空间的认证框架LSM 是内核空间的访问控制框架。它们是系统中两个不同但至关重要的安全层次。网络过滤Netfilter/iptables/nftables内核包过滤框架用于实现防火墙、NAT、包修改等功能控制网络访问。• 只允许外部访问 80 和 443 端口。• 阻止某个 IP 段的所有连接。网络层控制。与 PAM 无直接关系但共同构成主机安全。例如即使攻击者通过弱密码PAM 认证失败策略不当进入系统防火墙仍可限制其对外攻击。沙箱Firejail / Bubblewrap应用层沙箱工具利用 Linux namespaces、seccomp-bpf 和 capabilities 等技术为普通程序创建隔离的运行时环境。• 以沙箱方式运行浏览器firejail firefox限制其对主目录外文件的访问。应用层隔离。可以看作是对 AppArmor/SELinux 的补充或替代方案通常在桌面环境使用。其启动的进程的认证依然会经过 PAM。核心组件深度解析与应用示例1. sudo精细化的权限委托sudo的核心是/etc/sudoers文件其配置语法非常强大。以下是一个配置示例展示了如何实现精细控制# 示例在 /etc/sudoers 或 /etc/sudoers.d/ 下的文件中 # 允许 admin 组的成员无需密码执行任何命令 %admin ALL(ALL) NOPASSWD: ALL # 允许用户 jenkins 以 root 身份重启 nginx 和查看日志 jenkins ALL(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/tail -f /var/log/nginx/access.log # 允许用户 bob 以任何用户身份运行 /usr/local/bin/deploy.sh但禁止传递 -rf 参数 bob ALL(ALL) /usr/local/bin/deploy.sh, !/usr/local/bin/deploy.sh *-rf*最佳实践始终使用visudo命令编辑 sudoers 文件因为它会进行语法检查防止配置错误导致所有 sudo 权限丢失 。2. Capabilities分解 root 权限传统上ping需要 setuid root 以创建原始套接字。使用 capabilities 可以更安全地实现# 查看 ping 命令的权限 ls -l /bin/ping # 可能显示-rwsr-xr-x 1 root root ... (带有 setuid 位) # 移除危险的 setuid 位改为赋予所需的最小能力 sudo setcap cap_net_rawep /bin/ping # 再次查看 getcap /bin/ping # 输出/bin/ping cap_net_rawep现在普通用户运行ping时进程只拥有CAP_NET_RAW这一项特权而不是完整的 root 权限极大降低了风险。3. 综合安全模型一个访问请求的旅程当一个用户尝试执行一个操作时Linux 系统的安全组件会层层校验形成一个典型的“洋葱模型”认证 (Authentication)用户输入密码PAM框架调用pam_unix.so等模块验证密码是否正确 。自主访问控制 (DAC)认证通过后进程以该用户身份运行。当进程尝试打开一个文件时内核首先检查文件的所有者/组/其他 (UGO)权限和ACL。强制访问控制 (MAC)如果系统启用了SELinux或AppArmor内核会在此阶段进行二次检查。即使 DAC 允许例如进程是 root如果 MAC 策略禁止访问也会被拒绝 。内核能力 (Capabilities)对于需要特权的操作如绑定特权端口内核会检查进程的capabilities集合而非简单的“是否是 root”。资源限制进程能创建多少子进程、打开多少文件可能受PAM 的pam_limits源自/etc/security/limits.conf或cgroups的限制。审计 (Audit)如果配置了Audit 规则上述关键访问决策可能会被记录到审计日志中供事后追溯。因此PAM 是这套安全体系中负责“身份验证”的关键入口而其他组件则分别在授权、控制、隔离和审计环节发挥作用共同构建了 Linux 坚固的安全防线。在实际运维中应根据系统角色服务器、桌面、容器主机和威胁模型选择和配置合适的安全组件组合。参考来源Linux-PAM鉴权模块Linux——系统安全及应用账号安全、su命令、PAM认证、sudo命令Linux_PAM安全认证_sudo_安全控制Linux——系统安全及应用账号安全、su命令、PAM认证、sudo命令基于PAM的用户权限分配源码实现Linux系统的PAM模块认证文件含义说明总结