如何检查空密码?

max*_*zig 5 password login authentication

查看脚本小子的所有 ssh 登录尝试,我假设连接到互联网的系统混乱,并且设置了无密码帐户。

但是如何检查 Linux/Unix 系统的此类帐户(可能由损坏的安装程序脚本、困惑的管理员或类似的东西创建)?

作为第一个近似值,我可以想到以下内容:

$ grep '^[^:]\+::' /etc/passwd /etc/shadow
Run Code Online (Sandbox Code Playgroud)

使用空密码打印所有帐户 - 但也许在具体系统上,此类帐户甚至不是问题,因为没有程序接受空条目 - 参见密码(5):

但是,如果密码字段为空,某些读取 /etc/passwd 文件的应用程序可能会决定根本不允许任何访问。

但是散列字符串作为密码呢(例如crypt(""))呢?

如何检查它们?

以及如何在使用更复杂的帐户数据库(NIS、LDAP 等)时检查帐户?

jof*_*fel 5

查找加密的空密码或弱密码的一种简单方法是使用密码破解程序,例如 开膛手约翰

如果您使用的是 NIS 或 LDAP,您首先需要从数据库中提取密码哈希值 - 一种方法是通过getent,请参阅来自 maxschlepzig答案