国内服务器防火墙误拦截的常见原因与排查思路
本文未附完整的测试环境、工具版本与原始结果,内容作为故障排查或选型资料参考,不标记为实测报告。
如果国内服务器上运行的应用出现了连接异常的情况的话,那么防火墙误拦截就成为了主要怀疑的对象了。该类问题虽然不像硬件故障那么显眼,但是也会使服务停止运转,因此要弄清楚造成该问题的原因所对应的解决办法就显得非常重要了。
防火墙的主要功能就是根据事先设定好的规则来决定是否允许或者拒绝网络流量。所谓“误拦截”的情况一般并不是因为防火墙本身出了问题,而是在于规则和实际情况之间存在不一致的地方。该种偏见来源于多方面的因素。最直接的原因是规则配置过于严格或未能及时更新。比如一个应用程序更新之后用了新的通信端口,但是防火墙规则仍然只允许原来的端口通过,那么流量就会被阻拦。另一种常见情况是规则设置有逻辑冲突,比如先设置了一条禁止某IP段访问的规则,后面又设置了一条允许其中特定IP通过的规则,规则的生效顺序就至关重要。
从网络的角度来看,国内服务器所在的网络结构也有可能会增加一些难度。如果服务器位于云平台,除了操作系统自带的防火墙,云服务商提供的安全组或网络ACL同样起着关键作用。这两套甚至多套防护体系如果规则不一致,就容易产生意料之外的拦截。另外,在服务器受到网络攻击的情况下,安全系统会自动开启紧急防护措施,暂时封锁一些可疑的IP地址或者流量模式,这样就会把正常的访问也一起阻断了。
对于有可能出现误拦截的情况,我们可以通过简单的步骤来解决这个问题。第一步是确认问题现象的具体表现,是全部用户无法访问,还是特定地区或操作的用户出现问题。这能帮助初步判断是全局规则问题还是针对性的限制。要检查一下服务器本地端口的防火墙设置是否正确。另外要登陆到云服务提供商的安全管理控制台上,并且认真查看安全组或者网络ACL中关于入站和出站规则的规定,以保证没有漏掉任何一个层次的安全防护措施。
在服务器日志里查找信息是比较有效的做法。系统安全的日志、防火墙的日志以及自身所存在的错误的日志中经常会出现关于连接尝试被拒绝的具体内容,其中包括了来源IP地址、端口号以及使用的协议类型等信息,这些都是判断规则是否存在问题的重要依据。在保证网络安全的情况下,可以考虑把受到影响的IP地址加入到防火墙的允许列表里去,或者暂时关闭某个被怀疑存在的规则来进行检验,看看问题能不能得到解决。这是一种重要的验证手段,但切记测试后要及时恢复或调整规则,避免留下安全漏洞。
为了避免未来频繁遭遇误拦截,在最初部署服务器和应用程序时,就应具备清晰的防护规划。明确应用需要开放哪些端口、协议,以及预期的访问来源。规则要遵守最小权限的原则,即只允许必要的端口被访问,并不是全开大门。对于防火墙规则的修改,无论是对系统的防火墙还是云的安全组,都应该详细的记载下变更的内容以及时间以及原因,在排查问题的时候会省去很多的时间。对于业务比较复杂的大系统,在做全局规则修改之前,可以在几个小测试服务器上先做一下测试。
总之,在国内服务器防火墙错误地阻断了大量真实的流量时,主要是由于规则和实际情况不符造成的。通过对本地和云端的规则进行系统的审核以及对各种日志进行分析,并且建立起一套规范化的规则管理制度来,就可以有效地避免和防止这样的问题了,在保证网络安全的前提下使服务能够顺利运转。