在 Oracle® Solaris 11.2 中确保系统和连接设备的安全

退出打印视图

更新时间: 2014 年 9 月
 
 

维护登录控制

您可以通过指定口令和控制登录防止对系统或网络进行未经授权的登录。口令是一种简单的验证机制。系统上的所有帐户都必须有一个口令。如果帐户没有口令,则猜中用户名的入侵者可以访问整个网络。强口令算法可防止强力攻击。

    用户登录到系统时,login 命令会根据名称转换服务 svc:/system/name-service/switch 中的信息检查相应的命名服务或目录服务数据库。要更改命名服务数据库中的值,请使用 SMF 命令。命名服务指明影响登录的数据库的位置:

  • files-指定本地系统上的 /etc 文件

  • ldap-指定 LDAP 服务器上的 LDAP 目录服务

  • nis-指定 NIS 主服务器上的 NIS 数据库

  • dns-指定网络上的域名服务

有关命名服务的说明,请参见 nscd(1M) 手册页。有关命名服务和目录服务的信息,请参见使用 Oracle Solaris 11.2 目录和命名服务:DNS 和 NIS 使用 Oracle Solaris 11.2 目录和命名服务:LDAP

login 命令可验证用户提供的用户名和口令。如果用户名不在口令数据库中,login 命令将拒绝对系统的访问。如果口令对指定的用户名不正确,则 login 命令将拒绝对系统的访问。当用户提供有效的用户名及其对应的口令时,系统将授予该用户访问系统的权限。

成功登录到系统之后,PAM 模块可以简化应用程序登录。有关更多信息,请参见在 Oracle Solaris 11.2 中管理 Kerberos 和其他验证服务 中的第 1  章 使用可插拔验证模块

Oracle Solaris 系统提供了完善的验证和授权机制。有关网络级别的验证和授权机制的介绍,请参见远程访问的验证和授权

管理口令信息

用户登录系统时,必须同时提供用户名和口令。虽然登录名是公开的,但是口令必须保密。口令应该只有相应的用户才知道。用户必须仔细选择他们的口令,且必须经常更改这些口令。

口令最初是在设置用户帐户时创建的。要维护用户帐户的安全性,可以设置口令生命期,以便强制用户定期更改其口令。此外,还可以通过锁定口令来禁用用户帐户。有关口令管理的详细信息,请参见在 Oracle Solaris 11.2 中管理用户帐户和用户环境 中的第 1  章 关于用户帐户和用户环境passwd(1) 手册页。

本地口令

如果网络使用本地文件来验证用户,则口令信息保存在系统的 /etc/passwd/etc/shadow 文件中。用户名和其他信息保存在 /etc/passwd 文件中。加密的口令本身保存在一个单独的影子文件 /etc/shadow 中。这种安全措施可防止用户获取对加密口令的访问权限。虽然任何可以登录到系统的用户都能使用 /etc/passwd 文件,但是只有 root 帐户能够读取 /etc/shadow 文件。可以使用 passwd 命令更改本地系统上用户的口令。

NIS 口令

如果网络使用 NIS 验证用户,口令信息将保存在 NIS 口令列表中。NIS 不支持口令生命期。可以使用 passwd -r nis 命令更改存储在 NIS 口令列表中的用户口令。

LDAP 口令

Oracle Solaris LDAP 命名服务将口令信息和投影信息存储在 LDAP 目录树的 ou=people 容器中。在 Oracle Solaris LDAP 命名服务客户机上,可以使用 passwd -r ldap 命令来更改用户口令。LDAP 命名服务将口令存储在 LDAP 系统信息库中。

在 Oracle Directory Server 企业版上实施口令策略。具体而言,客户机的 pam_ldap 模块遵循在 Oracle Directory Server 企业版上实施的口令策略控制。有关更多信息,请参见使用 Oracle Solaris 11.2 目录和命名服务:LDAP 中的LDAP 命名服务安全模型

口令加密

强口令加密可针对攻击提供一道前期防线。Oracle Solaris 软件提供了六种口令加密算法。Blowfish 和 SHA 算法提供了强大的口令加密。


注 -  要得到 FIPS 140 认可,请使用 SHA 算法。有关信息,请参见Using a FIPS 140 Enabled System in Oracle Solaris 11.2 中的passwd Command as a FIPS 140 Consumer
口令算法标识符

可以在 /etc/security/policy.conf 文件中为您的站点指定算法配置。在 policy.conf 文件中,算法通过其标识符指定,如下表所示。有关标识符-算法映射的信息,请参见 /etc/security/crypt.conf 文件。


注 -  请尽可能使用 FIPS 认可的算法。有关 FIPS 认可的算法列表,请参见Using a FIPS 140 Enabled System in Oracle Solaris 11.2 中的FIPS 140 Algorithm Lists and Certificate References for Oracle Solaris Systems
表 1-1  口令加密算法
标识符
说明
算法手册页
1
与 BSD 和 Linux 系统上的 MD5 算法兼容的 MD5 算法。
2a
与 BSD 系统上的 Blowfish 算法兼容的 Blowfish 算法。

注 -  要提升 FIPS 140 安全性,请从 /etc/security/policy.conf 文件中的 CRYPT_ALGORITHMS_ALLOW=2a,5,6 条目中删除 Blowfish 算法 (2a)。

md5
Sun MD5 算法,一般认为此算法比 BSD 和 Linux 版本的 MD5 更强大。
5
SHA256 算法。SHA 是 Secure Hash Algorithm(安全散列算法)的缩写。此算法属于 SHA-2 系列。SHA256 支持 255 个字符的口令。此算法是缺省值 (CRYPT_DEFAULT)
6
SHA512 算法。
__unix__
已废弃。传统的 UNIX 加密算法。连接到旧系统时,此算法十分有用。

注 -  即使在为用户生成一个新口令之前已经选择其他缺省算法,用于用户的初始口令的算法仍然继续用于为该用户生成新口令。在以下情况下使用此机制:
  • 该算法包含在可以用于口令加密的算法列表中。

  • 标识符不是 _unix_

有关说明如何切换口令加密算法的过程,请参见更改口令加密的缺省算法


policy.conf 文件中的算法配置

policy.conf 文件中的缺省算法配置如下所示:

#
…
# crypt(3c) Algorithms Configuration
#
# CRYPT_ALGORITHMS_ALLOW specifies the algorithms that are allowed
to
# be used for new passwords.  This is enforced only in crypt_gensalt(3c).
#
CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6

# To deprecate use of the traditional unix algorithm, uncomment below
# and change CRYPT_DEFAULT= to another algorithm.  For example,
# CRYPT_DEFAULT=1 for BSD/Linux MD5.
#
#CRYPT_ALGORITHMS_DEPRECATE=__unix__

# The Oracle Solaris default is a SHA256 based algorithm.  To revert to
# the policy present in Solaris releases set CRYPT_DEFAULT=__unix__,
# which is not listed in crypt.conf(4) since it is internal to libc.
#
CRYPT_DEFAULT=5
…

更改 CRYPT_DEFAULT 的值后,将使用与新值关联的算法对新用户的口令进行加密。

现有用户更改其口令之后,其旧口令的加密方式会影响新口令所用的加密算法。例如,假设 CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6CRYPT_DEFAULT=6。下表说明了生成加密口令所使用的算法。口令由标识符=算法构成。

初始口令
更改后的口令
解释
1 =crypt_bsdmd5
使用同一算法
1 标识符在 CRYPT_ALGORITHMS_ALLOW 列表中。继续使用 crypt_bsdmd5 算法对用户口令进行加密。
2a =crypt_bsdbf
使用同一算法
2a 标识符在 CRYPT_ALGORITHMS_ALLOW 列表中。因此,使用 crypt_bsbdf 算法对新口令进行加密。
md5 =crypt_md5
使用同一算法
md5 标识符在 CRYPT_ALGORITHMS_ALLOW 列表中。因此,使用 crypt_md5 算法对新口令进行加密。
5 =crypt_sha256
使用同一算法
5 标识符在 CRYPT_ALGORITHMS_ALLOW 列表中。因此,继续使用 crypt_sha256 算法对新口令进行加密。
6 =crypt_sha512
使用同一算法
6 标识符是 CRYPT_DEFAULT 的值。因此,继续使用 crypt_sha512 算法对新口令进行加密。
__unix__ =crypt_unix
使用 crypt_sha512 算法
__unix__ 标识符不在 CRYPT_ALGORITHMS_ALLOW 列表中。因此,不能使用 crypt_unix 算法。将使用 CRYPT_DEFAULT 算法对新口令进行加密。

有关配置算法选择的更多信息,请参见 policy.conf(4) 手册页。要指定口令加密算法,请参见更改口令加密的缺省算法

特殊系统帐户

root 帐户是多个特殊系统帐户之一。在这些帐户中,只有 root 帐户指定了口令并可登录。nuucp 帐户可登录进行文件传输。其他系统帐户无需使用 root 的全部功能即可保护文件或运行管理进程。


Caution

注意  -  绝对不要更改系统帐户的口令设置。Oracle Solaris 中提供的系统帐户是有安全保障的。不修改或创建 UID 小于等于 101 的系统文件。


下表列出了一些系统帐户及其用途。这些系统帐户执行一些特殊功能。此列表中的每个帐户都有一个小于 100 的 UID。要获得系统文件的完整列表,请使用命令 logins –s

表 1-2  所选系统帐户及其用途
系统帐户
UID
用途
root
0
几乎没有任何限制。可以覆盖其他保护和权限。root 帐户具有访问整个系统的权限。应该非常谨慎地保护 root 帐户口令。root 帐户可以使用大多数 Oracle Solaris 命令。
daemon
1
控制后台处理。
bin
2
有权使用部分 Oracle Solaris 命令。
sys
3
有权访问许多系统文件。
adm
4
有权访问某些管理文件。
lp
71
有权访问打印机的对象数据文件和假脱机数据文件。
uucp
5
有权访问 UUCP(UNIX-to-UNIX copy program,UNIX 对 UNIX 复制程序)的对象数据文件和假脱机数据文件。
nuucp
9
供远程系统用于登录到系统并启动文件传输。

远程登录

远程登录为入侵者提供了可乘之机。Oracle Solaris 提供多个命令用于监视、限制和禁用远程登录。有关过程的信息,请参见Table 3–1

缺省情况下,远程登录无法获取控制或读取特定系统设备(如系统鼠标、键盘、帧缓存器或音频设备)的权限。有关更多信息,请参见 logindevperm(4) 手册页。