MySQL 和 MariaDB 安全的最佳提示

已发表: 2022-01-08

安全是许多人关心的大问题。 这篇文章将为您提供十个关于如何实现 MySQL 和 MariaDB 安全性的提示,以使您的数据库免受黑客攻击。 这些提示包括:备份数据、使用强密码和限制访问权限。


MySQL 和 MariaDB 安全的最佳提示

以下是实现 MySQL 和 MariaDB 安全性的最佳技巧:


删除没有密码的用户

如果您的数据库中有没有密码的用户,最好将其删除。 这将有助于减少有人能够侵入您的数据库的机会。 您可以使用以下查询来删除这些用户:

无论用户是否只能从 localhost 访问,都应该删除它们以停止运行任何负面命令。 此外,弱密码本身就是一种安全风险。

在数据库中创建用户时,您应该始终使用强密码。 弱密码更容易被黑客破解,这可能导致他们访问您的数据库并在他们管理时对其造成严重破坏。 使用自动密码生成器将有助于为您创建更难破解的更强密码。

您还应该考虑为您的用户使用双重身份验证。 这将需要一个额外的代码,通常发送到他们的手机,以便登录数据库。 如果某人只有您的用户名和密码,这会使他们更难获得访问权限。


限制远程访问

如果您不需要远程访问您的数据库,那么最好限制它。 这将有助于减少有人能够从远程位置侵入您的数据库的机会。

幸运的是,除非另有说明,否则最新版本的 MySQL 和 MariaDB 会自动限制对数据库的远程访问。 但是,您仍应检查您的安全设置以确保是这种情况。

确保所有用户仅通过您想要的确切主机连接到 MySQL 也是一个好主意。 例如,这可以通过使用 ([email protected]) 来完成。


删除测试数据库

安装 MySQL 或 MariaDB 时,会自动创建一个测试数据库。 该数据库包含的数据可用于入侵您的真实数据库,如果它落入坏人之手。 最好删除此数据库,以免它被用于恶意目的。

此测试数据库还会对数据库服务器造成不必要的压力。 它仅由数据库测试人员用于测试查询,因此可以在不影响数据库功能的情况下将其删除。


混淆对 MySQL 的访问

如果您不希望人们知道您的数据库存在,那么您可以混淆它的访问权限。 这将使某人更难找到您的数据库并入侵它。

混淆访问权限也使任何监视您的流量的人更难以确定 MySQL 或 MariaDB 正在使用哪些端口。

众所周知,MySQL 在端口 3306 上运行,而“root”是超级用户的名称。 您可以通过编辑 my.cnf 并更改“端口”变量来解决此问题。


保护您的配置文件

与任何应用程序一样,保护 MySQL 或 MariaDB 的配置文件很重要。 这些文件包含敏感信息,例如密码和用户数据。 保护这些文件将有助于防止任何人在访问您的服务器时访问此信息。


网络安全

保护您的网络以及服务器本身也很重要。 这将有助于减少有人从远程位置侵入您的数据库并在其上运行恶意命令的机会。

您应该确保的第一件事是 MySQL 只能通过本地连接访问,而不是网络。 您可以通过 Unix 套接字执行此操作。 在 my.cnf 中输入“skip-networking”。 停止所有 TCP/IP 通信。

您还可以使用防火墙阻止从某些 IP 地址或范围访问 MySQL。 这将有助于减少有人从远程位置侵入您的数据库的机会。


使用审计插件

您还可以使用审计插件来跟踪数据库中发生的事情。 这些将帮助您确定是否有人入侵了您的数据库,或者是否正在发生可疑的事情可能表明这一点。

今天在线提供这些插件的大量免费和付费选项。 如果您的组织已经在使用 MySQL Enterprise,那么 MySQL Enterprise Audit 是一个不错的选择。 MariaDB 也有自己的审计插件。

这些插件在监控数据库中的可疑活动方面都做得很好。 如果检测到任何异常情况,他们甚至可以向您发送警报,这样您就不必每次都手动检查日志。


禁用 LOAD DATA LOCAL INFILE

另一种阻止某人访问您的数据库的方法是禁用 MySQL 和 MariaDB 中的 LOCAL 功能。 此命令允许您从本地文件加载数据文件,但它也会带来安全风险——尤其是在它们未加密的情况下。 要禁用此功能,请在 my.cnf 中设置 local-infile=0。


文件权限

为 MySQL 和 MariaDB 文件设置正确的文件权限也很重要。 这将确保只有授权用户才能访问它们。 您可以通过对这些文件设置适当的权限来做到这一点。

例如,您可以将所有 MySQL 文件的所有者设置为“mysql”,将组设置为“mysql”,而所有其他用户都被拒绝访问。 这将确保只有具有正确权限的用户才能访问您的 MySQL 文件。


SSL 和传输中数据的加密

如果您在启用 SSL 的情况下运行 MySQL 或 MariaDB,那么在您的服务器上安装必要的证书很重要。 如果不这样做,任何人都可以截获在您的数据库与其客户端之间发送的信息。

您还应该加密传输中的所有数据,以增加对使用 SSH 通过公共网络传输的任何敏感数据的保护。

您还可以加密在数据库服务器和其他设备之间传输的数据。 这将确保任何监控您网络上的流量的人都无法访问他们正在传输或接收的任何数据,即使他们已经设法侵入其中一个系统。

SSL 将是 MySQL 用户实现这一目标的好方法,因为它已经内置在协议中。 MariaDB 用户可以使用 stunnel 来实现类似的效果。


静态数据加密

最后,您还应该考虑对静态数据进行加密。 这意味着即使数据没有被传输,数据也会被加密。

这可以通过使用 MySQL Enterprise Encryption 或 MariaDB Column Encryption 等工具来完成。

如果有人设法侵入您的数据库服务器,这两种工具都提供了一种很好的方法来保护您的数据不被访问。 它们也非常易于使用,因此您无需成为加密专家即可利用这些工具。


结论

这里提到的所有选项都将帮助您实现 MySQL 和 MariaDB 的安全性,但它们并非都适合所有情况。 在查看它们时,您应该考虑您的特定需求,以便您可以选择最好的一种。 但是,这些提示应该让您很好地了解如何选择适合您的选项。

希望本文为您提供了一些关于如何在您的组织中实现 MySQL 和 MariaDB 安全性的好主意,这样如果他们设法突破其他防御,任何人都无法侵入您的数据库。