保护一个保存 MySQL 数据库的简单 Linux 服务器?

2024-05-04

这是一个初学者问题,但我浏览了该网站上的许多问题,但没有找到简单直接的答案:

我正在设置一个运行 Ubuntu 的 Linux 服务器来存储 MySQL 数据库。

该服务器尽可能安全非常重要,据我所知,我主要担心的是传入的 DoS/DDoS 攻击和对服务器本身的未经授权的访问。

数据库服务器仅在端口 3000 上接收来自一个特定 IP (101.432.XX.XX) 的传入数据。我只希望该服务器能够接收来自该 IP 的传入请求,并阻止服务器发出任何传出请求。

我想知道:

  1. 阻止我的数据库服务器仅从 101.432.XX.XX 发出传出请求和接收传入请求的最佳方法是什么?将关闭所有端口。 3000对实现这个目标有帮助吗?

  2. Linux 环境中是否还有其他可以提高安全性的附加功能? 我已经采取了非常基本的步骤来保护我的 phpmyadmin 门户(链接到 MySQL 数据库),例如限制仅访问我的个人 IP 地址。

要访问数据库服务器需要 SSH 密钥(其本身受密码保护)。


一位名人曾说过“安全是一个过程,而不是一个产品 https://www.schneier.com/crypto-gram/archives/2000/0515.html."

因此,您有一个数据库服务器,它应该只侦听另一台服务器的数据库连接,并且您拥有该另一台服务器的特定 IP。您可以设置多层限制来实现此目的

1)防火墙

如果您的 MySQL 服务器足够幸运,位于防火墙后面,则您应该能够默认阻止所有连接,并仅允许某些端口上的某些连接。我不确定您如何设置数据库服务器,或者是否other想要访问它的服务器是否在同一个 LAN 上,或者两台机器是否只是虚拟机。这完全取决于您的服务器运行的位置以及您拥有哪种防火墙(如果有)。

我经常在 Amazon Web Services 上设置服务器。他们提供安全组,允许您默认阻止所有端口,然后允许访问特定端口 from 特定IP块使用 CIDR 表示法。即,您以端口/IP 组合对的形式授予访问权限。为了让您的一台服务器通过,您可以允许端口 3000 访问 IP 地址 101.432.xx.xx。

详细信息将根据您的架构和服务提供商而有所不同。

2) IP表

Linux 机器可以运行称为 iptables 的本地防火墙(即在每台服务器本身上运行的进程)。这是一些强大的东西,很容易把你自己锁在外面。有一个简短的帖子这里就这样 https://stackoverflow.com/questions/22309726/restricting-mysql-3306-port-with-iptables但你必须小心。使用 IPtables 可以轻松地将自己锁定在服务器之外。请记住,您需要允许所有服务器访问端口 22,以便可以登录到它们。如果您无法连接端口 22,您将永远无法再次使用 ssh 登录。在修改 iptables 之前,我总是尝试拍摄机器的快照,以免永久锁定自己。

有一点信息here https://www.a2hosting.com/kb/developer-corner/mysql/restricting-mysql-port-access也有关于 iptables 和 MySQL 的。

3)MySQL cnf文件

MySQL 有一些配置选项可以将任何数据库连接限制为仅限本地主机 - 即,您可以阻止任何远程计算机连接。我暂时不知道这些选项是否可以通过 IP 地址限制远程计算机,但值得一看。

4)MySQL通过GRANT等进行访问控制。

MySQL 允许您非常细粒度的控制 http://dev.mysql.com/doc/refman/5.7/en/connection-access.html谁可以访问您系统中的内容。理想情况下,您仅在需要了解的基础上授予对信息或功能的访问权限。实际上,这可能会很麻烦,但如果您想要安全性,您就会付出更多努力。

回答您的问题:

1) 是的,您绝对应该尝试限制对数据库服务器的 MySQL 端口 3000 以及用于通过 SSH 连接的端口 22 的访问。

2) 除了上面提到的之外,您将 PHPMyAdmin 限制为仅您的 IP 地址听起来非常聪明 --但请确保您不会意外地将自己锁在门外。我还强烈建议您禁用 ssh 连接的密码访问,强制使用密钥对。您可以找到谷歌上有很多例子 https://www.google.com/#q=ssh+turn+off+password+auth%2C+force+key+pairs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保护一个保存 MySQL 数据库的简单 Linux 服务器? 的相关文章

随机推荐