当我设置 WiFi 时,我发现教程对我的密码进行哈希处理,使其不会以明文形式存储(我们使用用户名/密码进行 wifi 访问)
network={
ssid="NETWORKNAME"
priority=1
proto=RSN
key_mgmt=WPA-EAP
pairwise=CCMP
auth_alg=OPEN
eap=PEAP
identity="USERNAME"
password=hash:HASH
phase1="peaplabel=0"
phase2="auth=MSCHAPV2"
}
其中 HASH 是
echo -n 'YOUR_REAL_PASSWORD' | iconv -t utf16le | openssl md4
有没有办法对 Windows 网络安装执行类似的操作?我目前使用mount -t cifs -o username=USERNAME,password=PASSWD //192.168.1.88/shares /mnt/share
挂载网络共享,但我想让我的密码远离明文(我知道如何保护明文或使其只能由 root 读取,这不是我想要的)。
我能否以与 WiFi 类似的方式对 cifs 网络共享的密码进行哈希处理?
答案1
不,您不能隐藏密码。您的计算机需要能够向服务器提供密码。这意味着无论您使用什么方法来隐藏密码,您的计算机都必须能够采用该隐藏形式并对其进行解码。如果您的计算机可以做到,那么任何人的计算机都可以做到。
EAP 的情况表面上有所不同,因为对于 EAP,客户端需要提供密码的 NTML 哈希值。但这意味着实际上密码是哈希值,而不是人类可读的输入。所以事实上,即使hash:
在配置文件中,配置文件也确实包含明文的密码。
您阅读的教程非常具有误导性,它暗示对文件中的 EAP 密码进行哈希处理具有显着的安全优势。事实上,如果您不将该密码用于其他任何用途,它根本没有任何好处,因为正如我们在上面看到的,有效密码是哈希值。如果相同的密码也用于其他用途(服务器需要密码而不是哈希值),那么会有一些好处,但它是有限的,因为 MD4 很容易被暴力破解。
如果您不想每次都输入密码,最好的办法是将密码存储在密码管理器中,并确保只有您可以访问密码管理器。确保它在磁盘上加密,以防有人窃取您的计算机(当然这意味着您必须在 bootig 之后的某个时刻解密密码容器)。但是,如果有人访问您的计算机,他们就会获得密码。没有办法阻止这种情况。
如果您可以影响服务器的配置并希望提高安全性,请考虑启用 Kerberos 身份验证,如果配置彻底,您可以使用登录密码访问网络共享。