接下来要查看的是您的系统针对本地用户攻击的安全性。我们刚才说了本地用户?是的!
获得本地用户帐户的访问权限是系统入侵者在试图利用 root 帐户时尝试的首要事情之一。如果本地安全松懈,他们可以使用各种漏洞和配置不当的本地服务,将他们的普通用户访问权限“升级”为 root 访问权限。如果您确保本地安全严密,那么入侵者将需要跨越另一个障碍。
本地用户也可能对您的系统造成严重破坏,即使(特别是)他们真的是他们所说的那个人。为你不认识或没有联系方式的人提供帐户是非常糟糕的主意。
您应该确保为用户帐户提供他们完成任务所需的最低限度的权限。如果您为您的儿子(10 岁)提供一个帐户,您可能希望他只能访问文字处理器或绘图程序,但不能删除不属于他的数据。
当允许其他人合法访问您的 Linux 机器时,有几个好的经验法则
给予他们完成任务所需的最低权限。
注意他们从哪里/何时登录,或者应该从哪里登录。
确保删除不活动的帐户,您可以使用 'last' 命令和/或检查日志文件以确定用户是否有任何活动。
在所有计算机和网络上使用相同的 userid 是明智的,以简化帐户维护,并方便日志数据的分析。
绝对禁止创建组用户 ID。用户帐户还提供可追溯性,而组帐户无法做到这一点。
许多在安全漏洞中使用的本地用户帐户已经数月或数年未使用。由于没有人使用它们,它们提供了理想的攻击载体。
您的机器上最受追捧的帐户是 root(超级用户)帐户。此帐户对整个机器拥有权限,其中可能还包括对网络上其他机器的权限。请记住,您应该只将 root 帐户用于非常短的特定任务,并且大部分时间应该以普通用户身份运行。即使以 root 用户身份登录时犯下的小错误也可能导致问题。您拥有 root 权限的时间越少,您就越安全。
避免以 root 身份搞砸您自己机器的几个技巧
当执行一些复杂的命令时,首先尝试以非破坏性的方式运行它……特别是使用通配符的命令:例如,如果您想执行rm foo*.bak,首先执行ls foo*.bak并确保您要删除的文件是您认为要删除的文件。使用echo代替破坏性命令有时也有效。
为您的用户提供rm命令的默认别名,以请求确认删除文件。
仅在执行单个特定任务时才成为 root 用户。如果您发现自己试图弄清楚如何做某事,请回到普通用户 shell,直到您确定需要 root 用户执行什么操作。
root 用户的命令路径非常重要。命令路径(即PATH环境变量)指定 shell 搜索程序的目录。尽量限制 root 用户的命令路径,并且永远不要在您的 PATH 中包含.。(这意味着“当前目录”)。此外,永远不要在您的搜索路径中包含可写目录,因为这可能允许攻击者修改或在您的搜索路径中放置新的二进制文件,从而允许他们在您下次运行该命令时以 root 身份运行。
永远不要以 root 身份使用 rlogin/rsh/rexec 工具套件(称为 r-utilities)。它们容易受到多种攻击,并且以 root 身份运行时非常危险。永远不要为 root 用户创建.rhosts文件。
/etc/securetty文件包含 root 用户可以从中登录的终端列表。默认情况下(在 Red Hat Linux 上),这设置为仅本地虚拟控制台 (vty)。非常小心地向此文件中添加任何其他内容。您应该能够以您的常规用户帐户远程登录,然后su如果您需要(最好通过 第 6.4 节 或其他加密通道),那么没有必要能够直接以 root 身份登录。
以 root 身份运行时始终要缓慢而谨慎。您的操作可能会影响很多事情。三思而后行!
如果您绝对肯定需要允许某人(希望是非常信任的人)拥有您机器的 root 访问权限,则有一些工具可以提供帮助。sudo允许用户使用他们的密码以 root 身份访问有限的命令集。例如,这将允许用户能够弹出和挂载您 Linux 机器上的可移动媒体,但没有其他 root 权限。sudo还保留所有成功和不成功的 sudo 尝试的日志,允许您跟踪谁使用了什么命令做了什么。因此,即使在许多人拥有 root 访问权限的地方,sudo也能很好地工作,因为它有助于您跟踪所做的更改。
虽然sudo可以用于为特定用户提供特定任务的特定权限,但它确实存在一些缺点。它应该仅用于有限的任务集,例如重启服务器或添加新用户。任何提供 shell 转义的程序都将为通过sudo调用它的用户提供 root 访问权限。这包括大多数编辑器,例如。此外,像/bin/cat这样无害的程序也可以用于覆盖文件,这可能会导致 root 帐户被利用。将sudo视为一种问责制手段,并且不要期望它取代 root 用户并且仍然安全。