跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
在工作场所中,可以将所有与服务器连接的计算机视为一个大型的多功能系统。您负责此大型系统的安全。您需要保护网络,防止其受到尝试访问此网络的外来者的破坏。您还需要确保网络中计算机上的数据完整性。
在文件级别,Oracle Solaris 提供了可用于保护文件、目录和设备的标准安全功能。在系统和网络级别,安全问题基本相同。第一道安全防线是控制对系统的访问。
您可以执行以下操作来控制和监视系统访问:
要控制对系统的访问,必须维护计算环境的物理安全性。例如,处于登录状态并且无人值守的系统容易受到未经授权的访问。入侵者可以获得操作系统和网络的访问权限。必须为计算机环境和计算机硬件提供物理保护,防止其受到未经授权的访问。
您可以保护 SPARC 系统,防止硬件设置受到未经授权的访问。使用 eeprom 命令要求在访问 PROM 时提供口令。有关更多信息,请参见如何要求提供用于访问硬件的口令。
您还必须防止对系统或网络进行未经授权的登录,这可以通过指定口令和控制登录来实现。系统上的所有帐户都必须有一个口令。口令是一种简单的验证机制。如果帐户没有口令,则猜中用户名的入侵者可以访问整个网络。强口令算法可防止强力攻击。
用户登录系统时,login 命令将根据 /etc/nsswitch.conf 文件中列出的信息检查相应的命名服务或目录服务数据库。此文件包括以下项:
files-指定本地系统上的 /etc 文件
ldap-指定 LDAP 服务器上的 LDAP 目录服务
nis-指定 NIS 主服务器上的 NIS 数据库
nisplus-指定 NIS+ 根服务器上的 NIS+ 数据库
有关 nsswitch.conf 文件的说明,请参见 nsswitch.conf(4) 手册页。有关命名服务和目录服务的信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》或《System Administration Guide: Naming and Directory Services (NIS+)》。
login 命令可验证用户提供的用户名和口令。如果用户名不在口令文件中,login 命令将拒绝对系统的访问。如果口令对指定的用户名不正确,则 login 命令将拒绝对系统的访问。当用户提供有效的用户名及其对应的口令时,系统将授予该用户访问系统的权限。
成功登录到系统之后,PAM 模块可以简化应用程序登录。有关更多信息,请参见第 17 章。
Oracle Solaris 系统提供了完善的验证和授权机制。有关网络级别的验证和授权机制的介绍,请参见远程访问的验证和授权。
用户登录系统时,必须同时提供用户名和口令。虽然登录名是公开的,但是口令必须保密。口令应该只有相应的用户才知道。应该要求用户谨慎选择其口令。用户应该经常更改其口令。
口令最初是在设置用户帐户时创建的。要维护用户帐户的安全性,可以设置口令生命期,以便强制用户定期更改其口令。此外,还可以通过锁定口令来禁用用户帐户。有关口令管理的详细信息,请参见《系统管理指南:基本管理》中的第 4 章 "管理用户帐户和组(概述)"和 passwd(1) 手册页。
如果网络使用本地文件来验证用户,则口令信息保存在系统的 /etc/passwd 和 /etc/shadow 文件中。用户名和其他信息保存在 /etc/passwd 文件中。加密的口令本身保存在单独的阴影文件 /etc/shadow 中。这种安全措施可防止用户获取对加密口令的访问权限。虽然任何可以登录到系统的用户都能使用 /etc/passwd 文件,但是只有超级用户或等效角色才能读取 /etc/shadow 文件。可以使用 passwd 命令更改本地系统上用户的口令。
如果网络使用 NIS 验证用户,口令信息将保存在 NIS 口令列表中。NIS 不支持口令生命期。可以使用 passwd -r nis 命令更改存储在 NIS 口令列表中的用户口令。
如果网络使用 NIS+ 验证用户,口令信息将保存在 NIS+ 数据库中。通过仅允许授权用户访问,可以保护 NIS+ 数据库中的信息。可以使用 passwd -r nisplus 命令更改存储在 NIS+ 数据库中的用户口令。
Oracle Solaris LDAP 命名服务将口令信息和阴影信息存储在 LDAP 目录树的 ou=people 容器中。在 Oracle Solaris LDAP 命名服务客户机上,可以使用 passwd -r ldap 命令来更改用户口令。LDAP 命名服务将口令存储在 LDAP 系统信息库中。
口令策略是在 Oracle Java System Directory Server 上实施的。具体而言,客户机的 pam_ldap 模块遵循在 Oracle Java System Directory Server 上实施的口令策略控制。有关更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的"LDAP 名称服务安全模型"。
强口令加密可针对攻击提供一道前期防线。Oracle Solaris 软件提供了六种口令加密算法。与 UNIX 算法相比,Blowfish、MD5 和 SHA 算法提供的口令加密更加稳健。
可以在 /etc/security/policy.conf 文件中为您的站点指定算法配置。在 policy.conf 文件中,算法通过其标识符指定,如下表所示。有关标识符-算法映射的信息,请参见 /etc/security/crypt.conf 文件。
表 2-1 口令加密算法
|
下面显示了 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 Solaris default is the traditional UNIX algorithm. This is not # listed in crypt.conf(4) since it is internal to libc. The reserved # name __unix__ is used to refer to it. # CRYPT_DEFAULT=__unix__ …
更改 CRYPT_DEFAULT 的值后,将使用与新值关联的算法对新用户的口令进行加密。
现有用户更改其口令之后,其旧口令的加密方式会影响新口令所用的加密算法。例如,假设 CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6,CRYPT_DEFAULT=1。下表说明了生成加密口令所使用的算法。
|
有关配置算法选项的更多信息,请参见 policy.conf(4) 手册页。要指定口令加密算法,请参见更改口令算法(任务列表)。
root 帐户是多个特殊系统帐户之一。在这些帐户中,只有 root 帐户指定了口令并可登录。nuucp 帐户可登录进行文件传输。其他系统帐户无需使用 root 的全部功能即可保护文件或运行管理进程。
注意 - 绝对不能更改系统帐户的口令设置。shadow 文件第二个字段中提供的带 NP 或 *LK*sys 的帐户表示系统帐户。 |
下表列出了一些系统帐户及其用途。这些系统帐户执行一些特殊功能。每个帐户都有一个小于 100 的 UID。
表 2-2 系统帐户及其用途
|
远程登录为入侵者提供了可乘之机。Oracle Solaris 提供多个命令用于监视、限制和禁用远程登录。有关过程,请参见保证登录和口令的安全(任务列表)。
缺省情况下,远程登录无法获取控制或读取特定系统设备(如系统鼠标、键盘、帧缓冲区或音频设备)的权限。有关更多信息,请参见 logindevperm(4) 手册页。
如果能够通过调制解调器或拨号端口访问计算机,就能增加额外的安全层。可以要求通过调制解调器或拨号端口访问系统的用户提供拨号口令。用户必须提供这个额外的口令才能获得系统的访问权限。
只有超级用户才能创建或更改拨号口令。要确保系统的完整性,应该大约每月更改一次该口令。此功能的最大用途就是要求提供拨号口令以获得网关系统的访问权限。要设置拨号口令,请参见如何创建拨号口令。
创建拨号口令涉及 /etc/dialups 和 /etc/d_passwd 这两个文件。dialups 文件包含需要拨号口令的端口的列表。d_passwd 文件包含需要加密口令作为附加拨号口令的 shell 程序的列表。这两个文件中的信息按如下方式处理:
如果用户在 /etc/passwd 中的登录 shell 与 /etc/d_passwd 中的某个项匹配,则用户必须提供拨号口令。
如果在 /etc/d_passwd 中未找到用户在 /etc/passwd 中的登录 shell,则用户必须提供缺省口令。缺省口令是 /usr/bin/sh 的项。
如果 /etc/passwd 中的登录 shell 字段为空,则用户必须提供缺省口令。缺省口令是 /usr/bin/sh 的项。
如果 /etc/d_passwd 没有 /usr/bin/sh 的项,则对于其登录 shell 字段在 /etc/passwd 中为空或者不与 /etc/d_passwd 中的任何项匹配的那些用户,系统不会提示输入拨号口令。