本地安全性

接下来需要注意的是您的系统防止本地用户攻击的安全性。慢着,刚才是说本地用户吗?是的!

获得本地用户访问权限是系统入侵者在得到 root 账户之前首先要作的事情之一。在松懈的本地安全性下,他们接着就可以通过各种缺陷以及没有很好设置的本地服务,从普通用户访问权限"升级"到 root 权限。如果您确定您的本地安全性是牢固的,那入侵者就又有一道栅栏需要跨过了。

本地用户也能够对您的系统造成严重破坏,甚至(尤其)他们确实是他们自称的那个人。把账户提供给您不认识的人或者没有联系方式的人可不妙。

建立新账户

您应该确定为用户账户只提供了他们的最小需要。如果您给您的儿子(10岁)提供了一个账户,您可能只想让他使用字处理器和绘画程序,却不能够删除不属于他的数据。

允许其他人合法访问您的 GNU/Linux 计算机,请遵守以下建议:

  • 只提供他们需要的最小权限;

  • 清楚他们(应该)何时/从何处登录;

  • 确定您删除了不活动的账户,可以通过使用 last 命令及检查日志文件来找出用户的活动;

  • 建议在所有的计算机和网络上使用同一个 userid,这能简化账户管理,及日志数据分析;

  • 将一组 user-ids 组成用户组应该绝对禁止。用户账户提供的簿记功能,用户组不提供。

用来进行安全性攻击的许多本地用户账户在几个月或几年中都不会被使用。既然没有人用他们,他们就给攻击提供了理想的途径。

Root 账户安全性

您计算机上最被追求的的账户是 root (超级用户)账户。它能控制整台计算机,并且可能控制网络上的其他计算机。请记住,仅在非常短暂的、特定的任务中使用 root 账户,平常使用普通用户。登录为 root 后,即使小错误也可能造成大问题。您成为 root 的时间越少越安全。

有几个窍门可以防止您在使用 root 时搞乱您的计算机:

  • 执行某些复杂的命令时,请先尝试使用某种非毁灭性方式运行一遍,尤其是在使用文件通配符的时候。例如,如果您想要执行 rm -f foo*.bak,请先执行 ls foo*.bak 以确定您正在删除您认为您在删除的文件。有时用 echo 替换毁灭性的命令也行。

  • 只在作单个特定的任务时才转为 root。如果您发现自己不知道应该怎么作,退回普通用户 shell 直到您确定应该用 root 来作什么。

  • root 用户的命令搜索路径非常重要。命令搜索路径(即环境变量 PATH)指定 shell 搜索程序的目录。请尽量限制 root 用户的命令搜索路径,而且永远不要在您的 PATH 里包含 . (表示"当前目录")。另外,不要在您的搜索路径中包含可写入的目录,因为这可能允许攻击者在您的搜索路径中修改或加入新的二进制代码来让他们在您下次执行那些命令的时候成为 root

  • 决不作为 root 使用 rlogin/rsh/rexec 工具套件(被称为 "r-utilities (r-工具)")。它们容易遭受许多种攻击,作为 root 运行显然是危险的。决不为 root 建立 .rhosts 文件。

  • /etc/securetty 文件包含一个 root 能够登录的终端列表。默认情况下,这只设为本地虚拟控制台(tty)。对该文件添加任何东西时请千万谨慎。您应该可以以普通用户身份从远程登录,然后再按照需要 su (希望您通过 ssh 或其他加密管道)。因此,没有必要允许从远程直接以 root 身份登录。

  • 在用 root 操作的时候请小心谨慎。您的动作可能会影响许多东西。三思而后行!

如果您实在是需要允许别人以 root 权限访问您的计算机,有许多工具可能会给您提供帮助。sudo 让用户能用他们自己的密码作为 root 来执行一组限定范围的命令。例如,这能够让您允许某个用户能够在您的 GNU/Linux 计算机上弹出及挂载可移动介质,却没有其他 root 权限。sudo 也能够在日志中记录成功以及不成功的 sudo 企图,让您能够追查谁执行了什么命令来作什么。因此,即使在有许多人拥有 root 权限的情况下,sudo 也工作良好。因为它帮助您保留更改的痕迹。

虽然 sudo 能被用来为特定的用户提供执行特定任务的特殊权限,它确实也有一些缺陷。它应该只被用于一组限定范围的任务,例如重启服务器,或是添加新用户。任何提供 shell 转义的程序在通过 sudo 执行的时候都会提供其用户 root 访问权限。这包括大多数编辑器。同时,像 /bin/cat 那样无害的程序也能用来改写文件,这会使得 root 被误用。请考虑将 sudo 作为簿记,并且不要期望它替代 root 用户而仍然安全。