Solaris 让我使用前 8 个字符相同的不同密码进入

Solaris 让我使用前 8 个字符相同的不同密码进入

我不知道这是否正常,但问题是,假设我有一个名为格洛阿萨它的密码是密码2获取

我正在使用 PuTTY 登录服务器,我只是输入 192.168.224.100,它会提示窗口询问用户,所以我输入格洛阿萨,然后它要求输入密码,假设我输入密码2geti错误地,并且有效!我在服务器里!

这正常吗?如果我把类似的东西也有效密码2getin2

我的母语不是英语,所以,如果您有什么不明白的地方,请问我

操作系统:Oracle Solaris 10 1/13

答案1

操作系统存储了一个密码的哈希值/etc/shadow(或者,历史上,/etc/passwd;或某些其他 Unix 变体上的不同位置)。从历史上看,第一个广泛传播的密码哈希是基于DES的方案它有一个限制,即它只考虑密码的前 8 个字符。此外,密码散列算法需要很慢;基于 DES 的方案在发明时有点慢,但以今天的标准来看还不够。

从那时起,更好的算法被设计出来。但Solaris 10 默认采用历史上基于DES 的方案。索拉里斯 11默认采用基于迭代 SHA-256 的算法,该算法符合现代标准。

除非您需要与古代系统的历史兼容性,否则请切换到迭代 SHA-256 方案。编辑文件/etc/security/policy.conf并将CRYPT_DEFAULT设置更改为 5,它代表crypt_sha256。您可能还想设置CRYPT_ALGORITHMS_ALLOWCRYPT_ALGORITHMS_DEPRECATE

更改配置后,运行passwd以更改密码。这将使用当前配置的方案更新密码哈希。

答案2

这是预期的,至少在默认的 Solaris 10 及更早的配置上是这样。

您的系统正在使用旧版 Unixcrypt_unix算法,该算法确实将使用的字符数限制为 8 个。

这记录在passwd手册页

密码的构造必须满足以下要求:

  每个密码必须包含 PASSLENGTH 字符,其中 PASSLENGTH 定义于
  /etc/default/passwd 并设置为 6。将 PASSLENGTH 设置为大于 8
  字符需要使用支持的算法配置policy.conf(4)
  大于八个字符

因为这个算法基本上已经过时了。您应该通过设置文件中的和条目来切换到更好的值(crypt.conf手册页中列出的可用值)。CRYPT_ALGORITHMS_DEPRECATECRYPT_DEFAULT/etc/security/policy.conf

http://docs.oracle.com/cd/E19253-01/816-4557/concept-63/index.html

答案3

Oracle 论坛上的此主题

使用默认的“crypt_unix”密码加密方案时,您所描述的行为是预期的。该方案只会加密密码的前八个字符,因此再次输入密码时只需匹配前八个字符。这不是一个“bug”,而是算法的一个已知限制 - 它主要是为了向后兼容而保留的,不幸的是在安装时被设置为 Solaris 系统上的默认值。

要解决此问题,请将操作系统设置为使用 MD5 或 Blowfish 算法而不是 crypt_unix。

这可以在 /etc/security/policy.conf 文件中更改。您可以将加密算法设置为允许,还有一个设置可以弃用(禁止)使用“crypt_unix”算法并将默认值更改为更安全的算法。

有关详细信息,请参阅“Solaris 10 系统管理指南:安全服务”。

也可以看看更改密码算法(任务列表)尤其是如何指定密码加密算法

指定您选择的加密算法的标识符。

...

键入标识符作为 /etc/security/policy.conf 文件中 CRYPT_DEFAULT 变量的值。

...

有关配置算法选择的更多信息,请参阅policy.conf(4)手册页。

答案4

仅供参考,在 7.1 版本之前的 IBM AIX 系统上也会发生这种情况。

这很有趣,因为我使用的这个系统有一个“不能重复使用最近 10 个密码中的任何一个”的策略,考虑整个密码长度,但在登录时仅检查前 8 个字符。因此,您可以为每次强制密码更改设置诸如easypass_%$xZ!01easypass_%&ssY!02、 、 ... 之类的密码,从而有效地保留您的密码多年。easypass_%$33zoi@@easypass

相关内容