系统管理员职责
系统管理员以及系统中的每个用户必须共同承担保护口令安全的职责。系统管理员执行下列安全任务:
确保所有用户都有自己的口令。
在所有系统文件中应用适当的权限,包括标准的口令文件和组文件,即 /etc/passwd 和 /etc/group。
对于无权再访问系统的用户,应删除其用户 ID 和口令,或者使其用户 ID 和口令无效。
验证是否所有应用程序口令都已加密。
验证为 /var/adm/btmp 和 /var/adm/wtmp 设置的权限是否正确。
对每次 guest 访问使用一次性口令。
告知用户与口令安全性相关的职责。
利用口令时限性强制用户定期更改其口令。
防止重新使用最近的口令。
在 /etc/default/security 文件中配置系统范围的安全属性。有关详细信息,请参阅“定义系统安全属性”,并参考 security(4)。
转换系统以使用影子口令。有关详细信息,请参阅“/etc/shadow 影子口令文件”以及 shadow(4) 和 pwconv(1M)。
用户职责
每个用户必须遵守下列规则:
记住口令,并始终将它秘密保存。
立即更改初始口令,并坚持更改口令。
报告任何状态变更,以及任何值得怀疑的安全违规现象。
确保输入口令时无人监视。
好口令的标准
选择口令时应遵守下列准则并将其传达给用户:
选择的口令至少应有 6 个字符,最多不超过 80 个字符。特殊字符可以包括控制符以及诸如星号和斜杠之类的符号。在标准模式下,只使用前 8 个字符。
不要选择可以在任何语言的字典中找到的单词,即便反过来拼也不可以。有一些软件程序可以找到并匹配您使用的单词。
不要选择容易与用户关联起来的口令,例如家庭成员或宠物的名字,或者是某种业余爱好。
不要使用简单的键盘序列(例如 asdfghjkl)或登录名的重复(例如,如果登录名为 ann,则 annann 便不是好的口令)。
可以考虑使用拼错的单词或两个不相关单词的音节组合来组成适合的口令。另一种常用的方法是使用最喜欢的标题或短语的前几个字符作为口令。
可以考虑使用口令生成器来组合音节以生成可发音的混乱文字。
不要与其他用户共享口令。管理人员必须禁止共享口令。
始终使用口令。不要清除 /etc/passwd 文件中的口令字段。
更改 /etc/passwd 口令文件
标准系统维护一个口令文件:/etc/passwd。
所有口令输入后便立即加密,并存储在口令文件 /etc/passwd 中。在比较过程中仅使用加密的口令。
如果需要更改口令文件,请遵守下列准则:
不允许有任何空的口令字段;否则便是安全违例。空口令字段允许任何用户为该帐户设置口令。
不要直接编辑口令文件。应使用 HP SMH 或者 useradd、userdel 或 usermod 命令来修改口令文件条目。如果必须直接编辑口令文件,请使用 vipw 命令,并使用 pwck 命令进行检查。有关详细信息,请参阅vipw(1M) 和 pwck(1M)。
passwd 命令示例
下面是一些有用的 passwd 命令示例:
重置用户的口令:
# passwd user1
在下次登录时强制更改口令:
# passwd -f user1
锁定或禁用帐户:
# passwd -l user2
启用口令时限性:
# passwd -n 7 -x 28 user1
查看特定用户的口令时限性状态:
# passwd -s user
查看所有用户的口令时限性状态:
# passwd -sa
/etc/passwd 文件格式
/etc/passwd 文件用于在用户登录时验证其身份。对于 HP-UX 系统中的每个帐户,该文件都包含一个相应的条目。每个条目均由冒号分隔的七个字段组成。典型的 /etc/passwd 条目应与下面的示例类似:
robin:ZyxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh
字段包含下列信息(按顺序列出),各信息之间用冒号分隔:
robin - 用户(登录)名,最多由 8 个字符组成。
ZyxGaSvxAXGg - 加密口令字段
102 - 用户 ID,为 0 到 MAXINT-1(等于 2、147、483、646 或 231 -2)之间(含)的整数。
99 - 组 ID,来自 /etc/group,为 0 到 MAXINT-1 之间(含)的整数。
Robin Hood,Rm 3,x9876,408-555-1234 - 注释字段,用于标识诸如用户的全名、位置和电话号码等信息。由于历史原因,该字段也称为 gecos 字段。
/home/robin - 主目录,用户的起始登录目录。
/usr/bin/sh - 登录 shell 路径名,用户登录时执行。
用户可以分别通过调用 passwd、chfn 以及 chsh 来更改口令、注释字段(第五个字段)以及登录程序路径名(第七个字段)。余下的字段由系统管理员设置。用户 ID 必须是唯一的。有关详细信息,chfn(1)、chsh(1)、passwd(1) 和 passwd(4)。
/etc/shadow 影子口令文件
可用于恶意口令解密器的计算能力的不断提高使 /etc/passwd 文件中的非隐藏口令非常容易被解密,
而影子口令将加密的口令隐藏在影子口令文件中,从而增强了系统安全性。可以将先前存储在公共可读文件 /etc/passwd 中的加密口令移动至 /etc/shadow 文件中,只有具有适当权限的用户才可以访问此文件。
使用下列命令可启用、验证和禁用影子口令:
pwconv 命令创建影子口令文件,并将加密的口令从 /etc/passwd 文件复制到 /etc/shadow 文件。
pwck 命令检查文件 /etc/passwd 和 /etc/shadow 中的不一致性。
pwunconv 命令将加密的口令和时限性信息从 /etc/shadow 文件复制到 /etc/passwd 文件中,然后删除 /etc/shadow 文件。
有关详细信息,请参阅 pwconv(1M)、pwck(1M)、pwunconv(1M) 和 shadow(4)。
请注意有关影子口令功能的下列各点。
启用影子口令功能后,如果应用程序直接访问 /etc/passwd 文件的口令字段来获取口令和时限性信息,则这些应用程序会受到影响。此字段现在会包含一个 x,表示此信息位于 /etc/shadow 中。
使用 PAM 接口进行验证的应用程序不会受到影响。
要以编程方式访问 /etc/shadow 文件,请使用 getspent() 调用。这些调用类似于 /etc/passwd 的 getpwent() 调用。有关详细信息,请参阅 getspent(3C) 和 getpwent(3C)。
在 /etc/nsswitchconf 文件中,影子口令受 files、NIS 和 LDAP 名称服务支持,但是其他名称服务器转换后端可能不支持影子口令。要配置系统使其仅使用 files、NIS 和(或) LDAP,请确保 /etc/nsswitchconf 中的 passwd 行仅包含 files、NIS 和(或) LDAP。如果 /etc/nsswitchconf 不存在,或者其中不存在 passwd 行,则缺省值仅是 files。有关详细信息,请参阅 nsswitchconf(4)。
影子口令基于在其他 UNIX 系统中提供的 de facto 标准。
/etc/default/security 中定义的下列属性适用于影子口令。有关详细信息,请参阅“定义系统安全属性”以及 security(4) 联机帮助页。
INACTIVITY_MAXDAYS - 帐户过期前可处于非活动状态的天数。
PASSWORD_MINDAYS - 可以更改口令前的最少使用天数。
PASSWORD_MAXDAYS - 口令的最大有效天数。
PASSWORD_WARNDAYS - 警告用户口令过期之前的天数。
下列产品支持影子口令:
轻量级目录访问协议 (LDAP)
Ignite-UXht 目录访问协议 (LDAP)
Serviceguard
下列软件不支持影子口令:
Process Resource Manager (PRM)
预期口令保存在 /etc/passwd 中的应用程序
有关详细信息,请参阅下列联机帮助页:
passwd(1)、pwck(1M)、pwconv(1M)、pwunconv(1M)、getspent(3C)、putspent(3C)、nsswitchconf(4)、passwd(4)、security(4)、shadow(4)
在 /etc/passwd 中消除伪帐户并保护密钥子系统
传统的 /etc/passwd 文件包含大量的“伪帐户”,即与各个用户无关且没有真正的交互式登录 Shell 的条目。
其中的一些条目(例如 date、who、sync 和 tty)是为方便用户而形成的,它们提供无需登录即可执行的命令。为了加强安全性,在分发的 /etc/passwd 中已将其删除,这样这些程序只能由已登录的用户运行。
其他类似的条目则保留在 /etc/passwd 中,因为它们是文件的属主。具有属主的程序(例如 adm、bin、daemon、hpdb、lp 和 uucp)可作用于整个子系统,并且代表一种特例。由于它们授予对它们所保护或使用的文件的访问权限,因此必须在 /etc/passwd 中列出相应的条目,以便允许这些程序作为伪帐户运行。传统的伪帐户和特殊帐户如示例 3-1 “伪帐户和特殊系统帐户”所示。
示例 3-1 伪帐户和特殊系统帐户
root::0:3::/:/sbin/sh
daemon::1:5::/:/sbin/sh
bin::2:2::/usr/bin:/sbin/sh
sys::3:3::/:
adm::4:4::/var/adm:/sbin/sh
uucp::5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
lp::9:7::/var/spool/lp:/sbin/sh
nuucp::11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
hpdb::27:1:ALLBASE:/:/sbin/sh
nobody::-2:-2::/:
这些子系统特权状态的关键是能够授予对受其管辖的程序的访问权限,而无需授予超级用户访问权限 (uid 0),相反,它们设置可执行文件的 setuid 位,并使进程的有效用户对应于可执行文件的属主。例如,cancel 命令是 lp 子系统的一部分,因此它作为有效用户 lp 运行。
设置 setuid 后,该子系统的安全调停机制会强制将所有程序的安全性局限在子系统范围内,而不是整个系统范围内。因此,子系统中有害于安全性的弱点也仅仅只局限于这些子系统内的文件。违例不能影响到其他子系统下的程序。例如,lp 下的程序不会影响到 daemon 下的程序。
使用 HP-UX Secure Shell 进行安全登录
HP-UX Secure Shell 提供安全的远程登录、文件传输和远程命令执行功能。客户端和服务器之间的所有通信都经过加密。通过网络传输的口令不再以明文形式发送。有关详细信息,请参阅 ssh(1) 和 “使用 HP-UX Secure Shell (SSH) 保护远程会话”。
保护存储在 NIS 中的口令
网络信息服务 (NIS) 是网络文件系统 (NFS) 的一部分。NIS 支持从一个中心位置(即主服务器)对多个主机进行配置管理。不是将主机配置分别存储在各个主机上,而是将信息整合到一个中心位置。/etc/password 文件是存储在 NIS 服务器上的多个配置文件之一。
/etc/shadow 影子口令文件在 NIS 上不受支持。
有关 NIS 的信息,请参阅《NFS Services Administrator's Guide》。
保护存储在 LDAP 目录服务器中的口令
LDAP-UX Client Services 与 PAM 进行交互来验证存储在 LDAP 目录服务器上的口令。PAM_LDAP 库提供验证服务不必重新安装SQL Server。要想重新访问SQL Server,您需要修改SQL Server 2000 和 SQL Server 70决定SQL Server身份验证模式的注册表键值。
在SQL Server 70中,该键为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \MSSQLServer\MSSQLServer\LoginMode
在SQL Server 2000中,该键为:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
MicrosoftSQLServer\\MSSQLServer\LoginMode
“LoginMode”的值为0表示只进行Windows 的身份验证,为1表示验证模式为混合模式。在您把自己关在外面之后,您可以把“LoginMode”改为1,重新启动SQL Server,然后以sa(system administrator)身份登录,输入您知道的sa密码即可。
以下关于SQL Server的角色成员的信息可能会帮助您理解为什么您会把自己关在SQLServer外面。在您安装SQL Server 2000 或 70的时候,安装进程自动地为“BUILTIN\Administrators”创建一个登录帐号,该帐号为“sysadmin”角色成员。“BUILTIN\Administrators”登录帐号代表了Microsoft Windows�0�3 2000 或Microsoft Windows NT�0�3 server 上的系统管理员本地组。 Windows 2000 或 Windows NT的 “Administrator”帐户是系统管理员本地组的成员。此外,如果您的服务器是一个域的成员(包括Windows 2000 的域和Windows NT 40的域),“Domain Admins”全局组也会成为本地系统管理员组的成员。这意味着系统管理员本地组的所有成员都会自动地获得SQL Server上的“sysadmin”权限。
为了加强您的SQL Server的安全性,您可能更愿意创建您自己的组并授予它“sysadmin”权限,然后删除“BUILTIN\Administrators”登录帐号,或者至少从“sysadmin”服务器角色中删除它。使用这种方法,您可以较好地对谁可以访问您的SQL Server进行控制。这种方法也断开了SQL Server 系统管理员和Windows 2000 或 Windows NT 管理员之间的联系, 因为他们通常有不同的任务,并且需要不同的权限。为了加强安全性,您可能想把SQL Server配置成只支持Windows身份验证。但是,必须要记住:这种配置会禁用您的“sa”帐户。(这个方法可能是禁用“sa”帐户的唯一方法,因为您不能删除“sa”帐户。)如果您以错误的顺序实施了这个安全措施,您将不能再以>“sysadmin”的身份登录到SQL Server上,除非按照我上面所说的方法修改注册表键值。正确的顺序是:
创建Windows 2000 或者 Windows NT 用户组并为组分配成员。例如:创建一个叫做“SQLAdmins”的组。
把“SQLAdmins”映射为SQL Server里的一个用Windows身份验证方式验证登录的帐户,并把该帐户分派到“sysadmin”服务器角色。
删除“BUILTIN\Administrators”登录帐户或者把它从“sysadmin”服务器角色中删除。
把SQL Server的身份验证模式改为“仅进行Windows身份验证”。
重新启动SQL Server 以反映身份验证模式的变化。
注意: 如果您以下面的这种错误顺序实施这些步骤:删除“BUILTIN\Administrators”登录帐户,改变SQL Server 的身份验证模式为“仅进行Windows身份验证”,然后重新启动SQL Server,那么“sa” 帐户将被禁用,并且因为没有定义其它Windows身份验证登录帐户而无法进入SQL Server。为了避免这种情况发生,请以正确的顺序实施这些安全措施。
另一方法: 0)停掉你现有的数据库服务。 1)新建一个实例,就是重新安装一次sql server,以下称为new 2)把你旧的数据库实例(以下称为old)的mastermdf , masterldf copy到一个文件夹 3) 在new中,通过attach db的方式把文件夹中的两个文件加为new中的数据库,当然名称和位置在添加的时候都要改的。 4)在new 中,通过语句的方式,把master中的表sysxlogins 中sa的密码更新到你刚添加的数据库(old中的master)的表sysxlogins中对应的sa 的密码字段。 5)把你刚添加的数据库(old中的master)在new中detachdb,然后把文件覆盖掉old中对应文件(覆盖前把文件备份) 6)重新启动old服务器,看是否可行 7)卸载new服务器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)