允许在本地主机上使用无密码连接 MySQL 是否存在安全问题?

允许在本地主机上使用无密码连接 MySQL 是否存在安全问题?

在Linux系统的情况下,让具有标准权限的MySQL用户(即非root用户)从localhost无需密码即可连接数据库是否存在安全问题?

我认为,即使对 localhost 强制使用密码也可以增加一层保护,因为如果没有密码,如果 SSH 访问本身受到威胁,数据库访问也会受到威胁。考虑到这一点,允许无密码连接到 MySQL 是否比对 SSH 和 MySQL 使用相同的密码更不安全?

我不知道是否要考虑到这一点,但我们也使用 phpMyAdmin 让用户管理自己的数据库。

我之所以问这个问题,是因为我有点不喜欢将数据库密码以未加密的形式放在应用程序的源文件或配置文件中,因为这些文件很容易被无意泄露。由于我们的服务器配置为以应用程序所属的 Linux 用户身份运行应用程序,因此我考虑在本地主机上不输入密码作为一个简单的解决方案。

那么,这是一个糟糕的想法吗?

答案1

我认为,即使对 localhost 强制使用密码也可以增加一层保护,因为如果没有密码,如果 SSH 访问本身被泄露,数据库访问也会被泄露

“纵深防御”的一般原则会让人极度警惕没有密码的用户帐户。密码是身份验证机制的重要组成部分;设置没有密码的帐户就像没有弹子锁的锁一样。我同意你的观点。

考虑到这一点,允许不使用密码连接 MySQL 是否比 SSH 和 MySQL 使用相同的密码更不安全?

这实际上是一个关于密码重复使用的问题。表面上看,任何密码重复使用都被视为坏事(TM)。该机制之所以有效,是因为密码是只有您自己知道的秘密……您使用秘密的频率越高,它就越不可能保持秘密。然而,在现实世界中,我们必须重复使用密码,要么在多个帐户中重复使用相同的密码,要么使用一个主密码来保护一组唯一的密码。这个问题的答案实际上取决于您的环境和威胁模型。

正如 @boris quiroz 指出的那样,服务器是什么类型的?谁需要访问它?密码可能在哪些其他地方被重复使用(例如,仅用于 SSH 还是也用于核导弹控制面板?前者的密码可能没问题,但后者就不行)。如果密码被盗,你会有什么损失(例如,这个篮子里有多少个鸡蛋)?与无密码帐户相比,隐藏在数据库中的数据的价值是多少?然后记录此过程以及你做出决定的原因。如果将来出现问题,你可以证明你的选择是正确的。

这里没有硬性规定。你只需要考虑威胁模型(我要保护什么以及保护对象是谁),然后决定收益是否大于成本。安全性始终是一种妥协,因此请确保尽可能多地用你放弃的东西(例如管理开销)来购买安全性。

就我个人而言,我倾向于在 SSH 和 MySQL 帐户上使用相同的密码,最好是不同的密码,但我认为,即使在这里重复使用也比没有好。(除非您有很多用户帐户,这是一个完全不同的问题)。

答案2

有时,在安全方面,你必须保持警惕:-)

在这种情况下,我的建议是始终使用密码,即使对于本地用户也是如此,但您必须评估每种情况:

这是哪种服务器?生产?开发?测试?还是只是沙盒?如果是沙盒,并且其中没有关键数据,则不必担心本地用户的密码(假设您已经有 ssh 访问策略)。但是,如果不是您的沙盒,我的建议是每个人都使用密码。

有时简单的解决方案是可行的,但它们可能会危及数据的安全......

答案3

总的来说,我认为这是个坏主意。如果应用程序 A 受到攻击,攻击者可能只能访问该应用程序所属的用户及其文件,但如果您不对数据库使用密码,攻击者也将能够访问应用程序 B 和 C 等的数据库,否则这些操作可能会被阻止。

答案4

有时它能帮你解决一些与外部安全无关的问题。只要能防止简单的、局部的、愚蠢的事故,它就值得了。不过,我会用一个强密码来启用它。

当然,如果应用程序被劫持,那么远程请求数据库进行完整数据库转储就会变得更加困难。“稍微”做出改变。

相关内容