4. 保护用户身份验证

许多 Linux 发行版附带的用户身份验证安全性不足。本节讨论一些使系统上的用户身份验证更安全的方法。虽然这样做会使您的系统更安全,但不要天真地认为它们会使您无懈可击。

4.1. 强大的/etc/pam.d/other

所有在/etc/pam.d/中的文件都包含特定服务的配置。此规则的显着例外是/etc/pam.d/other文件。此文件包含任何没有自己配置文件的服务的配置。例如,如果(虚构的)xyz 服务尝试身份验证,PAM 将查找/etc/pam.d/xyz文件。 如果找不到,xyz 的身份验证将由/etc/pam.d/other文件确定。 由于/etc/pam.d/other是 PAM 服务回退到的配置,因此确保其安全性非常重要。我们将讨论/etc/pam.d/other的两种安全配置,一种几乎是偏执狂式的,另一种则较为温和。

4.1.1. 偏执狂式配置

的偏执狂式配置/etc/pam.d/other如下

    auth	required	pam_deny.so
    auth	required	pam_warn.so
    account	required	pam_deny.so
    account	required	pam_warn.so
    password	required	pam_deny.so
    password	required	pam_warn.so
    session	required	pam_deny.so
    session	required	pam_warn.so
    

使用此配置,每当未知服务尝试访问四种配置类型中的任何一种时,PAM 都会拒绝身份验证(通过 pam_deny.so 模块),然后记录 syslog 警告(通过 pam_warn.so 模块)。 除非 PAM 中存在错误,否则此配置非常安全。 这种严酷性的唯一问题是,如果您意外删除了另一个服务的配置,可能会导致问题。 如果您的/etc/pam.d/login被错误地删除,将没有人能够登录!

4.1.2. 较为温和的配置

这是一个不太严厉的配置

    auth	required	pam_unix.so
    auth	required	pam_warn.so
    account	required	pam_unix.so
    account	required	pam_warn.so
    password	required	pam_deny.so
    password	required	pam_warn.so
    session	required	pam_unix.so
    session	required	pam_warn.so
    

此配置将允许未知服务进行身份验证(通过 pam_unix.so 模块),尽管它不允许更改用户的密码。 尽管它允许未知服务进行身份验证,但每当此类服务尝试身份验证时,它都会记录 syslog 警告。

4.1.3. 选择一个/etc/pam.d/other

我强烈建议您实施第一个/etc/pam.d/other配置,除非您有非常充分的理由不这样做。 “默认安全”始终是一个好主意。 如果您确实需要授予新服务身份验证权限,您可以简单地为该服务创建一个 PAM 配置文件。

4.2. 禁用空密码用户的登录

在大多数 Linux 系统上,都有许多“虚拟”用户帐户,用于为某些系统服务(如 ftp、Web 服务器和邮件网关)分配权限。 拥有这些帐户可以使您的系统更安全,因为如果这些服务受到攻击,攻击者只会获得虚拟帐户的有限权限,而不是以 root 身份运行的服务的完整权限。 但是,允许这些虚拟帐户登录权限是一种安全风险,因为它们通常具有空白(空)密码。 启用空密码的配置选项是“nullok”模块参数。 您需要从允许登录的服务的任何“auth”类型的模块中删除此参数。 这通常是登录服务,但也可能包括 rlogin 和 ssh 等服务。 因此,/etc/pam.d/login:

   auth		required	pam_unix.so	nullok
   

中的以下行应更改为

   auth		required	pam_unix.so
   

4.3. 禁用未使用的服务

查看/etc/pam.d/中的文件,您可能会看到许多您不使用的程序甚至一些您从未听说过的程序的配置文件。 尽管允许对这些服务进行身份验证可能不会打开任何巨大的安全漏洞,但最好拒绝它们的身份验证。 禁用这些程序的 PAM 身份验证的最佳方法是重命名这些文件。 如果找不到以请求身份验证的服务命名的文件,PAM 将回退到(希望)非常安全的/etc/pam.d/other。 如果您稍后发现您需要这些程序之一,您可以简单地将文件重命名为其原始名称,一切都将按预期工作。

4.4. 密码破解工具

虽然密码破解工具可能被攻击者用来入侵系统,但系统管理员也可以使用它们作为主动工具来确保系统上密码的强度。 最常用的两种密码破解工具是“crack”和“John the Ripper”。 Crack 可能包含在您最喜欢的发行版中。 John the Ripper 可以从 http://www.false.com/security/john/index.html 获取。 针对您的密码数据库运行这些工具,您可能会对它们的结果感到惊讶。

此外,还有一个 PAM 模块,它利用 crack 库在用户每次更改密码时检查密码的强度。 安装此模块后,用户只能将密码更改为满足最低密码强度的密码。

4.5. Shadow 和 MD5 密码

正如本文档的第一节所讨论的那样,Shadow 和 MD5 密码可以使您的系统更安全。 在安装过程中,大多数现代发行版都会询问您是否要安装 MD5 和/或 Shadow 密码。 除非您有充分的理由不这样做,否则您应该启用这些。 从非 shadow/非 MD5 密码转换是一个复杂的过程,并且超出了本文档的范围。《Shadow Password HOWTO》已过时,但可能有所帮助。