我不知道这是否正常,但问题是,假设我有一个名为Gloaiza的 Solaris 用户,其密码是password2getin
我正在使用 PuTTY 登录服务器,我只是输入了 192.168.224.100 并且它会提示一个窗口询问用户,所以我输入glaaiza,然后它要求输入密码,假设我错误地输入了password2geti,它起作用了!我在服务器!
这是正常的吗?如果我放一些类似password2getin2 的东西,它也可以工作。
我的母语不是英语,所以,如果你有什么不明白的地方请问我
操作系统:Oracle Solaris 10 1/13
Gil*_*il' 65
操作系统将密码的散列存储在/etc/shadow
(或者,历史上,/etc/passwd
; 或其他一些 Unix 变体上的不同位置)。从历史上看,第一个广泛使用的密码哈希是基于DES 的方案,其局限性在于它只考虑了密码的前 8 个字符。此外,密码散列算法需要很慢;基于 DES 的方案在发明时有点慢,但按照今天的标准是不够的。
从那时起,已经设计了更好的算法。但是 Solaris 10 默认使用基于 DES 的历史方案。Solaris 11默认使用基于迭代 SHA-256 的算法,该算法符合现代标准。
除非您需要与古代系统的历史兼容性,否则请切换到迭代 SHA-256 方案。编辑文件/etc/security/policy.conf
并将CRYPT_DEFAULT
设置更改为 5,代表crypt_sha256
. 您可能还想设置CRYPT_ALGORITHMS_ALLOW
和CRYPT_ALGORITHMS_DEPRECATE
。
更改配置后,运行passwd
以更改密码。这将使用当前配置的方案更新密码哈希。
jll*_*gre 21
这是意料之中的,至少在默认的 Solaris 10 和更早的配置上是这样。
您的系统正在使用传统的 Unixcrypt_unix
算法,该算法确实将使用的字符数限制为 8 个。
必须构造密码以满足以下要求: 每个密码必须有 PASSLENGTH 字符,其中 PASSLENGTH 定义在 /etc/default/passwd 并设置为 6。将 PASSLENGTH 设置为大于 8 字符需要使用支持的算法配置 policy.conf(4) 大于八个字符。
因为这个算法基本上已经过时了。您应该crypt.conf
通过设置CRYPT_ALGORITHMS_DEPRECATE
和CRYPT_DEFAULT
条目/etc/security/policy.conf
文件切换到更好的东西(手册页中列出的可用值)。
请参阅http://docs.oracle.com/cd/E19253-01/816-4557/concept-63/index.html
请参阅Oracle 论坛上的此主题:
使用默认的“crypt_unix”密码加密方案时,您描述的行为是预期的。该方案只会对密码的前八个字符进行加密,因此再次输入密码时只需匹配前八个字符。这不是一个“错误”,而是算法的一个已知限制——它主要是为了向后兼容而保留的,不幸的是,它在安装时被设置为 Solaris 系统上的默认值。
要解决此问题,请将您的操作系统设置为使用 MD5 或 Blowfish 算法而不是 crypt_unix。
这可以在 /etc/security/policy.conf 文件中更改。您可以将 crypt 算法设置为允许,还有一个设置可以弃用(禁止)使用“crypt_unix”算法并将默认值更改为更安全的算法。
有关详细信息,请参见“Solaris 10 系统管理指南:安全服务”。
另请参阅更改密码算法(任务列表),尤其是如何指定密码加密算法:
为您选择的加密算法指定标识符。
...
在 /etc/security/policy.conf 文件中输入标识符作为 CRYPT_DEFAULT 变量的值。
...
有关配置算法选择的更多信息,请参阅
policy.conf(4)
手册页。