针对networking服务器和数据库的一般防火墙/安全程序

我的Web服务器和数据库服务器是分开的。 我所做的所有保护networking服务器都是使用ufw并且除了端口ufw和443以外都被拒绝。还有什么其他的东西需要做?

在我的数据库服务器上,我只允许从端口22和数据库(mysql)侦听的端口。 这让我想知道。 通常我只是允许所有的stream量。 在数据库的情况下,我通常做严格的“用户”,并说只要软件如“只让用户@ internal_ip_address访问数据库”的东西。 但是,这应该是一个防火墙的东西? 或两者? 似乎如果防火墙只允许从我的networking服务器的内部IP地址到端口22和3306的stream量,这应该是够好的? 你们两个都只是出于“良好做法”吗?

我应该为这些设置什么其他一般的防火墙规则?

这比很多人好多了!

有一些事情要关注,在这一点上:

  1. 应用安全。 SQL注入,跨站点脚本,目录遍历等。取决于你正在运行的是什么,如果它不是你的代码,那么你可能会非常积极主动,但它可能是你最大的表面区域。
  2. 那个MySQL监听器:它真的需要向互联网开放吗? 既然你已经把你的用户限制在特定的地址,你能允许这些吗? 如果你没有允许用户从%login的话,你拥有的是好的,但是阻止这个用户会更好。 一些攻击只需要发送一个精心devise的数据包到一个监听套接字而不需要进行身份验 你可以通过SSH访问来做你需要的pipe理吗? 带我去:
  3. SSH。 如果可能的话,使用公钥authentication。 如果没有,那么在ufw使用limit模式,而不是直接allow以帮助防止蛮力尝试。 对于某些人来说,将听众地址改为高端是一种标准做法,但这种默默无闻的实际安全价值可以忽略不计。

简短的回答:

是。 利用所有可用的保护方法是好的,“深度防御”这个短语描述了多重保护层的重叠。

less简答:

在一般情况下,创build防火墙规则时需要注意以下三点:

  1. 听众
  2. 目的地端口
  3. 协议

我们的意思是,对于MySQL服务器来说,仅仅限制 3306 / tcp端口的传入连接不够的,但是我们必须限制它到MySQL客户端。 理想情况下,每个港口的客户名单将尽可能小,但实际上有时可能会更大。 所以想想每个这些端口,SSH和networking,并确定谁实际上需要访问这些。

如果您的应用程序包含它自己的机制来限制范围,那么也使用它们,请参阅上面的简答。 这将包括在你的问题中提到的对user@internal_ip_addressforms的MySQL的访问限制,以及在你的web服务器上设置htaccess(或类似的)文件。 当然要花时间衡量使用这些额外步骤的安全收益与实施和维护这些额外步骤的pipe理费用。