系统管理指南:安全性服务

控制对计算机系统的访问

在工作场所中,可以将所有与服务器连接的计算机视为一个大型的多功能系统。您要负责此大型系统的安全性。您需要保护网络,防止其受到尝试访问此网络的外来者的破坏,还需要确保网络中各计算机上的数据的完整性。

在文件级别,Solaris OS 提供了可用于保护文件、目录和设备的标准安全功能。在系统和网络级别,安全问题基本相同。第一道安全防线是控制对系统的访问。您可以执行以下操作来控制和监视系统访问:

维护物理安全性

要控制对系统的访问,必须维护计算环境的物理安全性。例如,处于登录状态并且无人值守的系统容易受到未经授权的访问攻击。入侵者可以获取访问操作系统和网络的权限。应该物理保护计算机环境和计算机硬件,防止其受到未经授权的访问攻击。

您可以保护 SPARC 系统,防止硬件设置受到未经授权的访问。使用 eeprom 命令要求在访问 PROM 时提供口令。有关更多信息,请参见如何要求硬件访问口令

维护登录控制

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

用户登录系统时,login 命令会根据 /etc/nsswitch.conf 文件中列出的信息检查相应的名称服务或目录服务数据库。此文件包括以下项:

有关 nsswitch.conf 文件的说明,请参见 nsswitch.conf(4) 手册页。有关名称服务和目录服务的信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》《System Administration Guide: Naming and Directory Services (NIS+)》

login 命令会检验用户提供的用户名和口令。如果用户名不在口令文件中,则 login 命令会拒绝对系统进行访问。如果口令对于指定的用户名而言不正确,则 login 命令会拒绝对系统进行访问。当用户提供有效的用户名及其对应口令时,系统会授予此用户访问系统的权限。

成功登录到系统之后,可使用 PAM 模块简化应用程序登录。有关更多信息,请参见第 16 章,使用 PAM

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

管理口令信息

用户登录系统时,必须提供用户名和口令。尽管登录名是公开的,但是口令必须保密。口令应该只有每个用户才知道。应该要求用户谨慎选择其口令。用户应该经常更改其口令。

口令最初是在设置用户帐户时创建的。要维护用户帐户的安全性,可以设置口令生命期,以便强制用户定期更改其口令。还可以通过锁定口令来禁用用户帐户。有关管理口令的详细信息,请参见《系统管理指南:基本管理》中的第 4  章 “管理用户帐户和组(概述)”以及 passwd(1) 手册页。

本地口令

如果网络使用本地文件来验证用户,则口令信息保存在系统的 /etc/passwd/etc/shadow 文件中。用户名和其他信息保存在口令文件 /etc/passwd 中。加密的口令本身保存在单独的阴影文件 /etc/shadow 中。这种安全措施可防止用户获取访问加密口令的权限。尽管任何可以登录到系统的用户都能使用 /etc/passwd 文件,但是仅有超级用户或等效角色才能读取 /etc/shadow 文件。可以使用 passwd 命令来更改本地系统上的用户口令。

NIS 和 NIS+ 口令

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

如果网络使用 NIS+ 来验证用户,则口令信息保存在 NIS+ 数据库中。可以通过仅允许授权用户进行访问来保护 NIS+ 数据库中的信息。可以使用 passwd -r nisplus 命令来更改存储在 NIS+ 数据库中的用户口令。

LDAP 口令

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

在 Solaris 10 发行版中,口令策略是在 Sun JavaTM System Directory Server 上强制执行的。具体而言,客户机的 pam_ldap 模块遵循在 Sun Java System Directory Server 上强制执行的口令策略控制。有关更多信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》中的“LDAP 名称服务安全模型”

口令加密

强口令加密可提供较早的攻击防线。Solaris 软件提供了四种口令加密算法。与 UNIX 算法相比,其中的两种 MD5 算法和 Blowfish 算法可提供更为强大的口令加密。

口令算法标识符

可以在 /etc/security/policy.conf 文件中指定站点的算法配置。在 policy.conf 文件中,算法以其标识符命名,如下表所示。

表 2–1 口令加密算法

标识符 

说明 

算法手册页 

1

与 BSD 和 Linux 系统上的 MD5 算法兼容的 MD5 算法。

crypt_bsdmd5(5)

2a

与 BSD 系统上的 Blowfish 算法兼容的 Blowfish 算法。

crypt_bsdbf(5)

md5

Sun MD5 算法,此算法被视为比 BSD 和 Linux 版本的 MD5 更为强大。

crypt_sunmd5(5)

__unix__

传统的 UNIX 加密算法。此算法是 policy.conf 文件中的缺省模块。

crypt_unix(5)

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



# 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,md5CRYPT_DEFAULT=1。下表说明了将使用何种算法来生成加密口令。

标识符=口令算法 

说明 

初始口令 

更改后的口令 

1 = crypt_bsdmd5

使用同一算法 

1 标识符也是 CRYPT_DEFAULT 的值。继续使用 crypt_bsdmd5 算法对用户口令进行加密。

2a = crypt_bsdbf

使用同一算法 

2a 标识符位于 CRYPT_ALGORITHMS_ALLOW 列表中。因此,使用 crypt_bsbdf 算法对新口令进行加密。

md5 = crypt_md5

使用同一算法 

md5 标识符位于 CRYPT_ALGORITHMS_ALLOW 列表中。因此,使用 crypt_md5 算法对新口令进行加密。

__unix__ = crypt_unix

使用 crypt_bsdmd5 算法

__unix__ 标识符不在 CRYPT_ALGORITHMS_ALLOW 列表中。因此,不能使用 crypt_unix 算法。将使用 CRYPT_DEFAULT 算法对新口令进行加密。

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

特殊的系统登录

访问系统的两种常用方法是使用普通用户登录或者使用 root 登录。此外,用户还可以使用许多特殊的系统登录来运行管理命令,而无需使用 root 帐户。作为系统管理员,您可以为这些登录帐户指定口令。

下表列出了一些系统登录帐户及其用法。这些系统登录可执行特殊的功能。每种登录都有各自的组标识 (group identification, GID) 号。每种登录都应该具有各自的口令,此口令应该只透露给需要知道的用户。

表 2–2 系统登录帐户及其用法

登录帐户 

GID 

用法  

root

0

几乎没有任何限制。可覆盖所有其他登录、保护和权限。root 帐户具有访问整个系统的权限。应该非常谨慎地保护 root 登录口令。root 帐户(即超级用户)有权使用大多数 Solaris 命令。

daemon

1

控制后台处理。 

bin

2

有权使用部分 Solaris 命令。 

sys

3

有权访问许多系统文件。 

adm

4

有权访问某些管理文件。 

lp

71

有权访问打印机的对象数据文件和假脱机数据文件。 

uucp

5

有权访问 UUCP(UNIX 对 UNIX 复制程序)的对象数据文件和假脱机数据文件。 

nuucp

9

供远程系统用于登录到系统并启动文件传输。 

远程登录

远程登录为入侵者提供了可乘之机。Solaris OS 提供了多个命令来监视、限制和禁用远程登录。有关过程,请参见保证登录和口令的安全(任务列表)

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

拨号登录

如果能够通过调制解调器或拨号端口访问计算机,则可以添加额外的安全层。您可以要求通过调制解调器或拨号端口访问系统的用户提供拨号口令。拨号口令是附加口令,用户必须提供此口令之后才能被授予访问系统的权限。

仅有超级用户或具有等效功能的角色才能创建或更改拨号口令。要确保系统的完整性,应该大约每月更改一次口令。此功能最有效的功用就是要求提供拨号口令来获取访问网关系统的权限。有关如何设置拨号口令的信息,请参见如何创建拨号口令

创建拨号口令涉及两个文件:/etc/dialups /etc/d_passwddialups 文件包含需要拨号口令的端口的列表。d_passwd 文件包含需要加密口令作为附加拨号口令的 shell 程序的列表。这两个文件中的信息按如下方式处理: