不可不知的NAT网关的防火墙功能
摘要: NAT网关的基于状态的SNAT功能是可以对内部服务器提供安全防护功能的,正确的使用NAT网关可以构筑更安全的云上网络。
防火墙扫盲
之前在没学网络的时候,认为防火墙真的是可以防火的墙。10多年前还有不少人问,防火墙多少钱一个平方。
但现在大家都知道,防火墙是用来防黑客的,是内部网络和外部网络的分界,是用来保护内部服务器和网络的,是一种信息安全防护系统。
图片来源:https://www.tunnelsup.com/what-is-a-firewall/
防火墙有几个最重要的特征:
1. 部署在内部网络和外部网络之间。这个和建筑上的防火墙真的很类似,也是叫Firewall的原因。
2. 提供基于状态的安全防护。这个描述很专业,也最恰当的描述了防火墙的本质。最开始的防火墙是基于路由器的访问控制列表ACL实现的包过滤防火墙,之后逐步发展和演进为基于状态的防火墙。所谓的状态浅显的讲就是说防火墙会维护一个源IP,目的IP,源端口,目的端口,协议的五元组的连接状态,只有在防火墙上建立起来连接会话状态的报文才会会放行,否则一律丢弃。这是一种很强的防御能力。
防火墙一般情况下是一个安全加固的产品,没有防火墙业务也可以跑起来。就像是小区没有门禁和保安其实也不影响小区的正常使用,但也意味着坏人可以随意的进出,安全风险很大。所以一般上一些规模的用户都会考虑部署防火墙。
NAT网关的防火墙功能
在VPC网络中,有一个企业级的产品叫NAT网关,这个NAT网关中有两个重要的功能一个是SNAT,一个是DNAT。SNAT其实就是一个基于状态的安全防护功能,可以当一个简易的防火墙使用。
当部署完NAT网关后,外部设备3如果想主动访问内部服务器1的话,在NAT网关上会把外部设备3的访问请求拒绝掉,把报文丢弃。因为外部设备3的公网IP 3.3.3.3在NAT网关的SNAT状态表中不存在。
但内部服务器1可以主动访问外部设备2,当内部服务器1对外访问的第一个报文到达NAT网关时,NAT网关会记录下会话状态。假设内部服务器1通过80端口访问外部服务器2的80端口,此时NAT会把五元组信息记录下来并保持状态信息。之后如果外部服务器2以80端口,访问内部服务器1的80端口,此时NAT网关会接受访问请求,并将报文转发到内部服务器。但如果外部服务器2以8080端口访问内部服务器1的80端口时,此时这个访问请求也会被丢弃,因为在SNAT状态表中没有对应五元组的状态连接信息。
上面的描述就是典型的基于状态的安全防护功能,不允许外部的用户或设备主动访问内部的服务器。只允许内部服务器主动访问外部服务器后并建立起连接状态后,外部服务器才能和内部服务器通信。
所以NAT网关在使用中是可以当一个功能简单的防火墙使用的,可以把后端的服务器隐藏到NAT网关后面,不会被黑客扫描到,也不会轻易的被黑客攻击。
最佳实践
举个最佳实践的例子,很多部署在云上的在线支付系统都会调用支付宝的支付接口。而在线支付系统的安全性一般要求是特别高的,不能轻易的被黑客扫描到,不能轻易的被黑客攻击。在这种场景下,用户会选择在VPC网络中部署NAT网关。当前在线支付系统有调用支付宝支付接口的需求时,会通过NAT网关出公网。此时NAT网关会记录调用请求的状态信息。NAT会检查收到的IP报文,只有IP报文的源IP,源端口号,目的IP,目的端口号,协议类型这五元组信息和SNAT状态表中的连接信息相匹配时。NAT网关才会将报文转发到内部支付系统,否则接收到的报文一律丢弃。
原文链接:https://yq.aliyun.com/articles/204556?spm=5176.100244.teamhomeleft.37.udfZ2M