帮助中心

首页 帮助中心常见问题产品相关 正文

产品相关常见问题之:迅达云防火墙设置指导原则和最佳实践

firewall

迅达云的防火墙功能上线啦,相信有不少同学已经尝试过了。为了帮助大家把自己的防火墙设置得更加安全,我们的首席架构师李雨来特地总结了一些指导原则和最佳实践,在此分享给大家。

三条指导原则

1. 保持规则库简单

防火墙设置的关键点,是过滤器指定了特定值的行为,例如阻止端口80,并且采用了条件规则:比如如果port=80,那就拒绝。配置防火墙的方式应该来源于在企业的安全策略中建立的业务规则。如果以支持这些指令为目标,而采用了防火墙配置,这些规则和过滤器就应该可以自我解释。

把过滤器和规则规则结合起来的最好方式,是建立基本的 “拒绝”过滤器,然后设置独立的过滤器或者规则来处理特殊情况。例如,阻止所有端口,允许80端口。这种防火墙规则管理方式不能绝对保证规避互相重叠的规则,但是通过总是把“允许”规则放在“拒绝”过滤器前面,整体的规则设置就安全多了。

2. 记录每一条规则

通过对每一条规则的评论和详细的记录,在做出变更的时候就很容易理解每一条规则背后的含义。还要确保规则或者策略都有有意义的名字,文件名中要包含创建时间和管理员名字首字母。

3. 采用变更控制策略

只在遵循变更控制程序下作变更,正式协调的方法可以保住变更经过测试,并在产生了非故意结果(例如,不安全的配置)发生后可以翻转。很多时候,多个防火墙需要处理网络上的多个入口,保护各种不同的业务应用。但是在网络上设置的防火墙越多,就越难以让它们在整个网络上协调一致工作。在这种情况下,最好的策略是确定每一个防火墙在网络流量中的目都有明确的标和位置。例如,如果有一个防火墙是为了保护数据库,那么它的规则和过滤器就只需要关注控制流入流出数据库的流量,而不关注网络上的其他设备。这样规则设置就简单的多,从而管理也很容易。

最佳实践

有了指导原则,针对迅达云中防火墙的规则设置,下面是一些涉及到具体细节的最佳实践。

对于Linux服务器来说,SSH的22端口是非常重要的一个端口,如果你有一台专用的跳板机(172.16.10.100)来访问你的服务器,那么针对22端口就开放这台跳板机的IP即可:

下行规则:
优先级:1,协议:TCP,端口:22,源IP:172.16.10.100,行为:接受
优先级:50,协议:TCP,端口:22,行为:拒绝

防火墙会根据优先级从小到大的顺序过滤网络请求,如果源IP为172.16.10.100,目标端口号为22,那么可以访问,否则就会执行优先级为50的规则,拒绝访问。

当然,如果有更多的跳板机,那么相应增加接受行为即可。

下行规则:
优先级:1,协议:TCP,端口:22,源IP:172.16.10.100,行为:接受
优先级:2,协议:TCP,端口:22,源IP:172.16.10.101,行为:接受
优先级:50,协议:TCP,端口:22,行为:拒绝

技巧1:针对某一端口只允许固定IP地址访问的话,下行规则的行为为“接受”的规则优先级要高于行为为“拒绝”的规则。

对于数据库服务器来说,遵循TIPS1来配置防火墙规则就非常合适。例如前端有2台Web服务器,后端有2台MySQL服务器,那么MySQL服务器上的防火墙规则就可以进行如下配置:

下行规则:
优先级:1,协议:TCP,端口:3306,源IP:172.16.10.110,行为:接受
优先级:2,协议:TCP,端口:3306,源IP:172.16.10.111,行为:接受
优先级:50,协议:TCP,端口:3306,行为:拒绝

如果你发现你的服务器的某个端口(比如SSH的22端口)总是被某一个IP(172.16.10.250)恶意扫描,那么你可以通过防火墙禁止这个IP对22端口的访问:

下行规则:
优先级:1,协议:TCP,端口:22,源IP:172.16.10.250,行为:拒绝

技巧2:针对某一IP禁止对某端口的访问,那么在下行规则中使用行为为拒绝的规则即可,并且把该规则的优先级调至比较高,使其能优先匹配。

对于两台MySQL服务器做主从来同步数据时,可能只希望Slave(172.16.10.121)服务器与Master(172.16.10.120)服务器的3306端口建立连接,那么防火墙规则为:

上行规则:
优先级:1,协议:TCP,端口:3306,目的IP:172.16.10.120,行为:接受
优先级:50,协议:TCP,端口:3306,行为:拒绝

技巧3:针对服务器只能访问指定服务器的指定端口,那么上行规则中行为为“接受”的规则优先级高于行为为“拒绝”的规则。

另外,推荐行为为“接受”和行为为“拒绝”规则的优先级数字的差别大一些。