在 EC2 上为公共网站运行典型的 LAMP 堆栈时,端口 3306 的正确防火墙设置是什么?

在 EC2 上为公共网站运行典型的 LAMP 堆栈时,端口 3306 的正确防火墙设置是什么?

我正在检查在 LAMP 上运行公共网站的 EC2 Ubuntu 实例上的安全组。目前我的端口如下:

22 (SSH)    0.0.0.0/0
80 (HTTP)   0.0.0.0/0
443 (HTTPS) 0.0.0.0/0
3306 (MYSQL)    0.0.0.0/0

我认为应该可以稍微收紧 mysql 端口,因为连接仅在本地进行。欢迎任何见解。

答案1

如果你的 MySQL 实例在同一个实例上运行,并且仅有的应答本地连接,那么您根本不需要安全组配置中端口 3306 的任何条目。

此外,为了纵深防御,您应该将bind-addressMySQL 配置指令设置为127.0.0.1(可能是默认值,但值得检查)。

编辑

您可以通过两种途径从外部开放访问:

  • 设置bind-address0.0.0.0,并添加a.b.c.d/32到您的安全组(无论该 IP 是什么)以允许访问端口 3306。但是,这是一种以纯文本传输的基本方法。
  • 使用 SSH 端口转发。使用 登录到 shell 后,ssh -L33306:127.0.0.1:3306 user@host您就可以mysql -h localhost -P 33306在本地计算机上启动以通过隧道进行连接。-bind-address在这种情况下不需要打开,因为 mysql 连接仍然是本地的(只要和-L参数-P匹配,本地端口可以是任何你喜欢的端口)。这将为您提供更安全的路由,并且您可以配置 SSH 以使用私钥,以增加保护。

答案2

强化非常重要。

  1. 对于 MySQL,设置来源,与安全组相同。(例如:如果安全组“default”的 ID 为“sg-1234s3gd”,则指定 sg-1234s3gd 作为端口范围 3306 的源)。
  2. 安装mod_security对于 Apache 并订阅 CoreRulesSet。如果可能的话,限制每个 IP 的请求速率。
  3. 在 SSH 中禁用 RootLogin。仅允许基于密钥的身份验证,如果可能,更改 SSH 监听端口。
  4. 使用以下方式运行安全评估巴士底狱

相关内容