防火墙介绍
1. 实验介绍
1.1 实验内容
随着大众对网络安全问题的关注度日益加深,所以希望通过本实验的学习能让大家了解到防火墙的重要性和它的大体结构与发展。在学习防火墙之前最好有学习过网络基础,对网络层次,应用协议有一定的认识与了解。
1.2 实验知识点
- 防火墙介绍
- 防火墙实现
- 防火墙比较
2. 防火墙介绍
2.1 概述
防火墙,是指一个由软件和硬件设备组合而成,在内部网和外部网之间,专用网与公共网之间的界面上构造的保护屏障。主要在网络之间建立起一个安全网关,从而保护内部网络免受非法用户的入侵。
此图来自百度百科
2.2 分类
- 按软、硬件来分
- 软件防火墙
- 硬件防火墙
- 按防火墙技术来分
- 包过滤型(Packet filtering)
- 应用代理型(Application Proxy)
- 按防火墙结构来分
- 单一主机防火墙
- 路由器集成式
- 分布式防火墙
- 按应用部署来分
- 个人防火墙
- 边界防火墙
- 混合防火墙
2.3 特性
- 内部网络和外部网络之间的所有网络数据流都必须经过防火墙。
- 只有符合安全策略的数据流才能通过防火墙。
- 防火墙自身应具有非常强的抗攻击免疫力。
- 应用层防火墙具备更细致的防护能力。
- 数据库防火墙针对数据库恶意攻击的阻断能力。
以上 5 点基本特性的知识点引用自百度百科
关于防火墙的功能还体现在以下五个方面:
- 可以定义关键点来防止外来恶意入侵。
- 在异常情况下,可以监控网络的安全会给出报警提示。
- 可以提供网络地址转换(NAT)等功能。
- 可以查询或登记网络的使用情况。
- 可以配置相应的服务,使网络用户只访问此类服务,而禁止对保护网络的其他系统的访问。
3. 防火墙实现
3.1 防火墙的演变
演变过程:
图片来源于:http://www.myshared.ru
- 第一代防火墙:主要是基于包过滤(Packet filter)技术,称为:packet filtering firewalls,在 1988 年 DEC 的工程师开发的过滤系统被称为数据包过滤防火墙,主要工作在于单独的分析每个数据包,且只是报头。在早期路由器中使用的便是 ACL(Access Control List),这样简单的访问控制。
图片来源于:http://www.myshared.ru
- 第二代防火墙:主要是基于状态检测(stateful filter)技术,称为:stateful inspection firewalls,开始是 1989-1990 年在贝尔实验室由三位同事开发出来的,又称为电路级网关(circuit-level gateways),虽然第二代的防火墙在第一代中执行,但是第二代防火墙相对于第一代更深入一些,主要是服务于 OSI 参考模型的第四层传输层,通过保留足够的数据包来监控 TCP/IP 层次的连接状态并出判断,到 1992 年,USC 信息科学院的 BobBraden 开发出了基于动态包过滤(Dynamic packet filter)技术,从而被人们所熟知。
图片来源于:http://slideplayer.com
- 第三代防火墙:主要是基于应用层(application layer)实现的,称为:proxy firewalls,90 年代初 Marcus Ranum, Wei Xu, and Peter Churchyard 开发的防火墙工具集(firewall toolkit,简称为 FWTK),在 94 年 Wei Xu 对内核中的 ip 过滤以及 socket transparent 的增强来扩展 FWTK ,同年在 Trusted Information Systems 上发布了基于这种技术的商业化产品 Gauntlet firewall,这时候应用防火墙开始被人们熟知。
图片来源于:http://slideplayer.com
- 第四代防火墙:主要是具有安全操作系统的防火墙。具有安全操作系统的防火墙本身就是一个操作系统,因而在安全性上得到提高。
3.2 防火墙的工作原理
在 Linux 中,防火墙的基本原理主要是对数据包的控制,通常用到的是 Linux 下的 Netfilter/iptables,它们是 Linux 内核集成的 IP 信息包过滤系统。在这个过滤系统中,Netfileter 作为一个通用架构,运行在内核空间,由内核的模块进行实现。而 iptables 是一个管理内核包过滤的工具,运行在用户空间。
在对数据包的控制中,我们主要关注的是数据报的流向问题,而防火墙中数据报的流向也就是后面我们会着重讲到的 iptables 的两种工作模式:一是作为 NAT 路由器,二是作为主机防火墙。
这里我们先简单了解一下 iptables 的数据包流入流出的流程:
在后续的课程中会详细讲解 iptables 的具体用法,这里先简单了解下它在防火墙中的作用。
- 首先,数据包进入到网卡时,会先进到 PREROUTING (路由前)链,进行路由判断将数据包发往何处。
- 如果目标地址是本机,那么数据包会进入到 INPUT 链,到达之后,任何进程都会接收到该数据包。然后由本机程序发送出数据包,经过 OUTPUT 链,最后到达 POSTROUTING 链 进行输出。
- 如果目标地址非本机,则需要通过转发,且需要内核允许转发,然后数据包前往 FORWARD 链,最后到达 POSTROUTING 链输出。
3.3 防火墙的工作模式
防火墙主要能够在以下三种模式下进行工作:
- 路由模式
传统的防火墙一般工作于路由模式,防火墙主要位于内部网络和外部网络之间,需要将防火墙和内部网络、外部网络 三个区域相连的接口分别配置成不同网段的 IP 地址,重新规划原有的网络拓扑,此时相当于一台路由器。 如图所示:
- 透明模式
透明模式避免了路由模式需要改变网络拓扑的麻烦,此时的防火墙对于子网用户和路由器来说是完全透明的。而采用透明模式时,只需要像网络中放置网桥一样放入防火墙,无需其它配置。需要注意的是内部网络和外部网络是处于同一个子网的。网络拓扑图如下:
- 混合模式
混合模式主要用于透明模式做双机备份的情况,需要启动 VVRP(Virtual Router Redundancy Protocl,虚拟路由冗余协议)功能的接口来配置 IP 地址,而其他接口不用配置。如图所示:
4. 防火墙的比较
4.1 第一代和第二代防火墙的对比
第一代防火墙:只是静态的数据包过滤,在过滤过程中只检查数据包的报头,攻击者可以通过一些指示响应(indicating reply)来越过防火墙获取一些蕴含在报头中的信息。
第二代防火墙:可以分析到 OSI 第四层中 TCP/IP 的连接状态,甚至深入到应用层。能够过滤掉静态数据包不能过滤的一些 session 信息(如 IP 地址、端口等),这种过滤属于更为严格、安全且灵活的动态数据包过滤。
4.2 第二代和第三代防火墙的对比
第三代防火墙拦截了所有连接,并且执行深入的应用层分析。第二代防火墙作为一个纯软件产品在维护以及用户技术上都有较高的技术要求,且在安全性和处理速度上有所局限。而第三代防火墙既有纯软件实现又有硬件方式实现,因此弥补了第二代的一些不足。
4.3 VPN 和防火墙的区别
VPN(虚拟专用网络):是建立一个安全交互的隧道。VPN 设置合理可以通过防火墙。
防火墙:通过设置边界关卡。
DMZ(Demilitarized Zone):隔离区,是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区,添加的一个额外的安全层。wiki DMZ)
5. Linux 环境中防火墙的主要形式
5.1 Netfilter 数据包过滤机制
Netfilter 机制主要是分析进入主机的数据包,將包的报头信息提取出来再进行分析,然后決定该链接是应该放行还是阻挡下来。
这种方式可以直接分析数据报头的信息,同时 Netfilter 还提供了 iptables 来作为防火墙封包过滤的指令。
图片来源于维基百科:https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg
5.2 TCP Wrappers 应用级防火墙
TCP Wrappers 主要是分析 TCP 的报头信息,并与 /etc/hosts.allow 和 /etc/hosts.deny 中的规则进行匹配,从而决定哪些主机可以访问系统服务或资源。它的功能并没有 Netfilter 强大,但是他的配置相对于 Netfilter 的 iptables 要简单许多。
TCP Wrappers 的访问控制主要是通过:/etc/hosts.allow 和 /etc/hosts.deny 两个文件来实现的,可以简单了解以下它的访问控制判断顺序的流程图:
5.3 Proxy 代码服务器
代理服务器相对于 Netfilter 更安全一些,主要在 OSI 模型的会话层,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行而非直接的连接,从而起到防火墙的作用。
此图来源于:http://www.networkworld.com/article/2255950/lan-wan/chapter-1--types-of-firewalls.html
代理服务器中的所有连接,所有的数据包都需要中转过一层,也就多了一个环境,所以需要多消耗一些时间,效率便降低了,高带宽也会到达瓶颈。同时,在通过代理服务器的转发就需要修改表头中的信息,地址转换,这样的话对 VPN 的使用也会增加一定的难度。所以相对来说 Netfilter 比代理服务器式的防火墙应用更加广泛。
6. 总结
通过本节实验的学习,我们能够对防火墙有一个大概的了解。学习到防火墙的作用,防火墙是如何发展起来的,以及防火墙有哪些类别,并且服务于网络的哪一层,他们的优劣势比较,为以后的学习有更好的根据。