在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端口上稍微加紧一点。 任何见解都值得欢迎。

如果您的MySQL实例在同一个实例上运行,并且响应本地连接,则在您的安全组configuration中根本不需要端口3306的任何条目。

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

编辑

你有两条从外面开放访问的路线:

  • bind-address设置回0.0.0.0 ,并将abcd/32添加到您的安全组(无论IP可能是什么),以允许在端口3306上访问。但是,这是以纯文本forms传输的基本方法。
  • 使用SSH端口转发。 用ssh -L33306:127.0.0.1:3306 user@hostlogin到你的shell ssh -L33306:127.0.0.1:3306 user@host会让你启动mysql -h localhost -P 33306在本地机器上通过隧道连接。 在这种情况下,不需要打开-bind-address ,因为mysql连接仍然是本地的(只要-L-P参数匹配,本地端口可以是任何你喜欢的)。 这将为您提供更安全的路由,并且您可以configurationSSH以使用私钥,以增强保护。

硬化是非常重要的。

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