你们好,我的网工朋友。
今天想和你聊聊防火墙。防火墙是啥?表意自然是防止火灾发生时,火势烧到其它区域,使用由防火材料砌的墙。
后来这个词语引入到了网络中,把从外向内的网络入侵行为看做是火灾,防止这种入侵的策略叫做防火墙。
后来,防火墙不但用于防范外网,例如:对企业内网的 DoS 攻击或非法访问等,也开始防范从内部网络向互联网泄露信息、把内部网络作为攻击跳板等行为。
想更透彻地理解防火墙的知识,建议你读下今天的文章,把基础知识先学明白。
今日文章阅读福利:《 思科防火墙白皮书 》
私信我,发送暗号“防火墙”,即可获取该份高清优质电子书资源。
切入正题前,再浅聊一下防火墙是怎么一回事儿。
防火墙是可信和不可信网络之间的一道屏障,通常用在LAN和WAN之间。
它通常放置在转发路径中,目的是让所有数据包都必须由防火墙检查,然后根据策略来决定是丢弃或允许这些数据包通过。
例如:
如上图,LAN有一台主机和一台交换机SW1。在右侧,有一台路由器R1连接到运营商的路由器ISP1。
防火墙位于两者之间,这样就可以保证LAN的安全。
路由器是可选的,主要是取决于所连的WAN。例如,如果你的 ISP 提供电缆,那么你可能有一个带有以太网连接的电缆调制解调器,也可以直接连接到你的防火墙。
当它是无线连接时,你可能需要那里的路由器进行连接。如果你需要配置(高级)路由,如 BGP,你就需要路由器。
大多数防火墙支持一些基本路由选项:静态路由、默认路由,有时还支持 RIP、OSPF 或 EIGRP 等路由协议。
我们在这里谈论硬件防火墙。还有软件防火墙,例如 Microsoft Windows 预装的防火墙。它具有与我们的硬件防火墙类似的功能。
01 状态过滤
防火墙,如路由器,可以使用访问控制列表来检查源、目地址/端口号。
然而,大多数路由器不会在过滤上花太多时间……当它们收到数据包时,就检查数据包的源目信息是否与访问控制列表中的条目匹配,如果匹配,它们会允许或丢弃该数据包。
无论他们收到一个数据包还是数千个数据包,每个数据包都会单独处理,不进行跟踪之前是否检查过的数据包,这称为无状态过滤。
与之相反的就是,有状态过滤。防火墙会跟踪所有入向和出向的连接。
例如:
- 局域网里有台电脑,作为邮箱客户端,通过互联网去访问邮箱服务器,邮箱客户端起初会进行TCP三次握手,经过防火墙,就知道它们的源目信息,防火墙会跟踪这些信息,当邮箱服务器要进行响应客户端的请求时,防火墙就会自动允许这部分的流量通过防火墙,最终到达客户端。
- 一个 Web 服务器位于防火墙后面,它是一个繁忙的服务器,平均每秒从不同的 IP 地址接受 20 个新的 TCP 连接。防火墙会跟踪所有连接,一旦发现每秒请求超过 10 个新 TCP 连接的源 IP 地址,它将丢弃来自该源 IP 地址的所有流量,防止 DoS(拒绝服务)。
02 数据包检测
大多数防火墙支持进行数据包(深度)检查。简单的访问控制列表仅能检查源、目标地址/端口,即 OSI 模型的第 3 层和第 4 层。
数据包深度检查意味着防火墙可以检查 OSI 模型的第 7 层。这就意味着防火墙查看应用程序数据甚至负载:
上面你看到网络(IP)和传输层(TCP)被标记为红色,应用层被标记为绿色。这个示例是来自捕获web浏览器请求页面的数据包。
03 安全区
默认情况下,Cisco 路由器将允许并转发它们收到的所有数据包,前提是需要匹配它们的路由表中的路由。
如果你想进行限制,你必须配置一些ACL。
如果设备有很多接口或很多条ACL需要配置,这会成为网工的噩梦。
这是一个例子:
上面的路由器有两个入站方向ACL来阻止来自主机的一些流量。
此外,还有两个ACL,来防止来自 Internet 的流量进入我们的网络。
我们还可以复用一些ACL,但记得将ACL应用到四个接口。
接下来有个更好的解决方案,防火墙可以结合安全区域来工作。
这是一个例子:
上面我们有两个安全区域:
- inside:这是LAN区域。
- outside:这是WAN区域 接口已分配到正确的安全区域。这些区域有两个简单的规则:
- 允许从“高”安全级域到“低”安全级别的流量。
- 拒绝从“低”安全级别到“高”安全级别的流量。
LAN是我们信任的网络,所以具有很高的安全级别。WAN 不受信任,因此它的安全级别较低。这意味着来自从LAN去往WAN的流量将被允许。
从 WAN 到 LAN 的流量将被拒绝。由于防火墙是有状态的,它会跟踪传出连接并允许其返回的流量。
如果你想例外,也可以允许从 WAN 到 LAN 的流量,这就需要通过访问控制列表来完成了。
大多数公司将拥有一台或多台服务器,这些服务器大部分是需要从 Internet来访问。如邮件服务器。
为了安全,我们没有将它们放在内部(LAN),而是放在称为DMZ(非军事区)的第三个区域。看看下面的图片:
DMZ 安全区域的安全级别介于 INSIDE 和 OUTSIDE 之间。这意味着:
- 允许从 INSIDE 到 OUTSIDE 的流量。
- 允许从 INSIDE 到 DMZ 的流量。
- 允许从 DMZ 到 OUTSIDE 的流量。
- 从 DMZ 到 INSIDE 的流量被拒绝。
- 从外部到 DMZ 的流量被拒绝。
- 从外部到内部的流量被拒绝。
为确保来自 OUTSIDE 的流量能够到达 DMZ 中的服务器,我们将使用一个访问列表,该列表只允许流量流向 DMZ 中服务器使用的 IP 地址(和端口号)。
此设置非常安全,如果你在 DMZ 中的其中一台服务器遭到黑客攻击,你的 INSIDE 网络仍然是安全的。
04 总结
防火墙的基础知识差不多就是这些了,你消化得咋样?给你总结一波。
防火墙使用状态过滤来跟踪所有入站和出站连接。
他们还能够(主要看防火墙型号)检查 OSI 模型的第 7 层、应用程序的有效负载。
防火墙还使用安全区域,允许来自高安全级别的流量进入较低安全级别。
从低安全级别到高安全级别的流量将被拒绝,可以使用访问控制列表进行特例处理。
整理:老杨丨10年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部