网站搜索

如何保护 CentOS/RHEL 7 中的硬链接和符号链接


在Linux中,硬链接和软链接是对文件的引用,它们非常重要,如果保护得不好,其中的任何漏洞都可能被恶意系统用户或攻击者利用。

一个常见的漏洞是符号链接竞争。这是软件中的一个安全漏洞,当程序不安全地创建文件(尤其是临时文件)时就会出现这种漏洞,恶意系统用户可以创建指向此类文件的符号(软)链接。

另请阅读:如何在 Linux 中创建硬链接和符号链接

这实际上是发生过的;程序检查临时文件是否存在,如果不存在,则会创建该文件。但在检查文件和创建文件之间的短时间内,攻击者可能会创建指向文件的符号链接,并且不允许他或她访问。

因此,当程序以有效权限运行时,会创建与攻击者创建的文件同名的文件,实际上,它会创建攻击者想要访问的目标(链接到)文件。因此,这可能为攻击者提供了从根帐户窃取敏感信息或在系统上执行恶意程序的途径。

因此,在本文中,我们将向您展示如何在 CentOS/RHEL 7 发行版中保护硬链接和符号链接免受恶意用户或黑客的攻击。

CentOS/RHEL 7 上存在一项重要的安全功能,仅当满足下述某些条件时,才允许程序创建或跟踪链接。

对于硬链接

系统用户要创建链接,必须满足以下条件之一。

  • 用户只能链接到他或她拥有的文件。
  • 用户必须首先拥有对他或她想要链接到的文件的读写访问权限。

对于符号链接

进程只允许遵循具有粘性位的全局可写(允许其他用户写入)目录之外的链接,或者必须满足以下条件之一。

  • 符号链接后面的进程是符号链接的所有者。
  • 目录的所有者也是符号链接的所有者。

启用或禁用对硬链接和符号链接的保护

重要的是,默认情况下,使用文件 /usr/lib/sysctl.d/50-default.conf 中的内核参数启用此功能(1 值表示启用)。

fs.protected_hardlinks = 1
fs.protected_symlinks = 1

但是,由于某种原因,如果您想禁用此安全功能;使用下面的这些内核选项创建一个名为 /etc/sysctl.d/51-no-protect-links.conf 的文件(0 值表示禁用)。

请注意文件名 (51-no-protect-links.conf) 中的 51,必须在默认文件之后读取它才能覆盖默认设置。

fs.protected_hardlinks = 0
fs.protected_symlinks = 0

保存并关闭文件。然后使用下面的命令来实现上述更改(该命令实际上从每个系统配置文件加载设置)。

sysctl --system
OR
sysctl -p  #on older systems

您可能还想阅读以下文章。

  1. 如何在 Linux 中用密码保护 Vim 文件
  2. 在 Linux 中使重要文件不可变(不可更改)的 5 个“chattr”命令

就这样!您可以通过下面的反馈表发布您的疑问或分享与此主题相关的任何想法。