口令管理机制的要求
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了口令管理机制的要求相关的知识,希望对你有一定的参考价值。
如题。
参考技术A 口令是最重要的单个用户标识符。通过它,系统可验证一个用户的身份,以便允许该用户访问系统。由于口令在使用、存储或已知的情况下容易泄露,因此必须始终秘密保存。下列各节将进一步讨论口令。系统管理员职责
系统管理员以及系统中的每个用户必须共同承担保护口令安全的职责。系统管理员执行下列安全任务:
确保所有用户都有自己的口令。
在所有系统文件中应用适当的权限,包括标准的口令文件和组文件,即 /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:Z.yxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh
字段包含下列信息(按顺序列出),各信息之间用冒号分隔:
robin - 用户(登录)名,最多由 8 个字符组成。
Z.yxGaSvxAXGg - 加密口令字段
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/nsswitch.conf 文件中,影子口令受 files、NIS 和 LDAP 名称服务支持,但是其他名称服务器转换后端可能不支持影子口令。要配置系统使其仅使用 files、NIS 和(或) LDAP,请确保 /etc/nsswitch.conf 中的 passwd 行仅包含 files、NIS 和(或) LDAP。如果 /etc/nsswitch.conf 不存在,或者其中不存在 passwd 行,则缺省值仅是 files。有关详细信息,请参阅 nsswitch.conf(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)、nsswitch.conf(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 库提供验证服务本回答被提问者采纳
Java web的安全约束--Basic验证
要进行basic验证是用户名/口令机制,当浏览器要访问受保护的资源时,服务器会要求一个用户名和口令,只有输入了合法的用户名和口令。服务器才发送资源。用户名和口令可以存储在安全域中。安全域是标识一个Web应用程序的合法用户名和口令的“数据库”,其中还包含了与用户相关的角色。
例子:使用basic和MemoryRealm登录
1、在tomcat下的/conf/tomcat-users.xml定义了角色和用户,还有一些角色
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<user username="li" password="123456" roles="admin-gui,manager-gui" />
<role rolename="manager"/>
<user username="admin" password="123456" roles="manager"/>
</tomcat-user>
2、在web.xml中定义如下:
<security-constraint>
<web-resource-collection>
<web-resource-name>adminResource</web-resource-name>
<url-pattern>/AccountServlet</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>allManager</description>
<role-name>manager</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>test</realm-name>
</login-config>
<security-role>
<role-name>manager</role-name>
</security-role>
其中<security-constraint>标签设置受保护的资源和可以访问的用户角色;
<login-config>是验证机制,访问受保护的资源,弹出的对话框不同,它的<realm-name>test</realm-name>;是弹出的对话框中显示的安全域的名
<security-role>是用来定义,使用的角色
这样就可对资源进行保护,在访问资源时,在弹出的对话框中输入之前定义的用户,密码就可以访问了
以上是关于口令管理机制的要求的主要内容,如果未能解决你的问题,请参考以下文章