防火墙
什么是防火墙
防火墙是一种用于监控入站和出站网络流量的网络安全设备,可基于一组定义的安全规则来决定是允许还是阻止特定流量。25 年多来,防火墙一直是网络安全的第一道防线。它们在安全、可控的可信任内部网络与不可信任的外部网络(如互联网)之间建立了一道屏障。 防火墙既可以是纯硬件或纯软件,也可以是硬件和软件的组合。
防火墙是在两个网络通讯时执行的一种访问控制尺度,能最大限度阻止网络中的黑客访问你的网络。是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。它是不同网络或网络安全域之间信息的唯一出入口,能根据企业的安全政策控制(允许、拒绝、监测)出入网络的信息流,且本身具有较强的抗攻击能力。它是提供信息安全服务,实现网络和信息安全的基础设施。在逻辑上,防火墙是一个分离器,一个限制器,也是一个分析器,有效地监控了内部网和 Internet 之间的任何活动,保证了内部网络的安全。
防火墙的功能
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
-
网络安全的屏障 一个防火墙(作为阻塞点、控制点)能极大地提高一个内部网络的安全性,并通过过滤不安全的服务而降低风险。由于只有经过精心选择的应用协议才能通过防火墙,所以网络环境变得更安全。如防火墙可以禁止诸如众所周知的不安全的NFS协议进出受保护网络,这样外部的攻击者就不可能利用这些脆弱的协议来攻击内部网络。防火墙同时可以保护网络免受基于路由的攻击,如IP选项中的源路由攻击和ICMP重定向中的重定向路径。防火墙应该可以拒绝所有以上类型攻击的报文并通知防火墙管理员。
-
强化网络安全策略 通过以防火墙为中心的安全方案配置,能将所有安全软件(如口令、加密、身份认证、审计等)配置在防火墙上。与将网络安全问题分散到各个主机上相比,防火墙的集中安全管理更经济。例如在网络访问时,一次一密口令系统和其它的身份认证系统完全可以不必分散在各个主机上,而集中在防火墙一身上。
-
对网络存取和访问进行监控审计 如果所有的访问都经过防火墙,那么,防火墙就能记录下这些访问并作出日志记录,同时也能提供网络使用情况的统计数据。当发生可疑动作时,防火墙能进行适当的报警,并提供网络是否受到监测和攻击的详细信息。另外,收集一个网络的使用和误用情况也是非常重要的。首先的理由是可以清楚防火墙是否能够抵挡攻击者的探测和攻击,并且清楚防火墙的控制是否充足。而网络使用统计对网络需求分析和威胁分析等而言也是非常重要的。
-
防止内部信息的外泄 通过利用防火墙对内部网络的划分,可实现内部网重点网段的隔离,从而限制了局部重点或敏感网络安全问题对全局网络造成的影响。再者,隐私是内部网络非常关心的问题,一个内部网络中不引人注意的细节可能包含了有关安全的线索而引起外部攻击者的兴趣,甚至因此而暴漏了内部网络的某些安全漏洞。使用防火墙就可以隐蔽那些透漏内部细节如Finger,DNS等服务。Finger显示了主机的所有用户的注册名、真名,最后登录时间和使用shell类型等。但是Finger显示的信息非常容易被攻击者所获悉。攻击者可以知道一个系统使用的频繁程度,这个系统是否有用户正在连线上网,这个系统是否在被攻击时引起注意等等。防火墙可以同样阻塞有关内部网络中的DNS信息,这样一台主机的域名和 IP 地址就不会被外界所了解。
除了安全作用,防火墙还支持具有 Internet 服务特性的企业内部网络技术体系 VPN(虚拟专用网)。
防火墙类型
代理防火墙
代理防火墙是一种早期的防火墙设备类型,它针对特定应用充当从一个网络到另一个网络的网关。代理服务器可以通过阻止来自网络外部的直接连接来提供其他功能(例如内容缓存和安全保护)。但是,这可能会影响设备的吞吐量以及它们所能支持的应用。
状态检测防火墙
目前,状态检测防火墙普遍被视为“传统”防火墙,这种防火墙根据状态、端口和协议来允许或阻止流量。它从连接打开时监控所有活动,直到连接关闭。过滤决策以管理员定义的规则以及情景为依据(情景是指以前的连接以及属于该连接的数据包的使用信息)。
统一威胁管理 (UTM) 防火墙
UTM 设备通常以一种松散耦合的方式,将状态检测防火墙的功能与入侵防御和防病毒功能结合到一起。这类防火墙也可能包含其他服务,而且通常会包含云管理功能。UTM 主要侧重于简单性和易用性。
下一代防火墙 (NGFW)
如今,防火墙经过演变,已不再单纯提供数据包过滤和状态检测功能。大多数公司都在部署下一代防火墙,以求阻止高级恶意软件攻击和应用层攻击等现代威胁。 根据 Gartner 公司的定义,下一代防火墙必须包括以下要素:
- 标准的防火墙功能,如状态检测
- 集成入侵防御
- 应用识别和控制,以查看并阻止有风险的应用
- 升级路径以包括将来的信息源
- 可解决不断变化的安全威胁的技术
这些功能已逐渐被大多数公司奉为标准,但实际上,下一代防火墙还可以提供更多功能。
专注于威胁防御的下一代防火墙
这类防火墙不仅包含常规下一代防火墙的所有功能,而且具备高级威胁检测和补救能力。利用专注于威胁的下一代防火墙,我们可以:
- 借助全面的情景感知能力,了解哪些资产面临最高的风险
- 借助能够动态设置策略并加强防御的智能安全自动化功能,快速应对各种攻击
- 通过关联网络时间和终端事件,更好地发现逃避检测的活动或可疑活动
- 借助在初始检测后仍持续监控可疑活动和可疑行为的追溯性安全功能,极大地缩短从发现威胁到清除威胁的时间
- 借助涵盖整个攻击过程的统一策略,实现轻松管理并降低复杂性
部署方式
防火墙是为加强网络安全防护能力在网络中部署的硬件设备,有多种部署方式,常见的有桥模式、网关模式和 NAT 模式等。
-
桥模式 桥模式也可叫作透明模式。最简单的网络由客户端和服务器组成,客户端和服务器处于同一网段。为了安全方面的考虑,在客户端和服务器之间增加了防火墙设备,对经过的流量进行安全控制。正常的客户端请求通过防火墙送达服务器,服务器将响应返回给客户端,用户不会感觉到中间设备的存在。工作在桥模式下的防火墙没有 IP 地址,当对网络进行扩容时无需对网络地址进行重新规划,但牺牲了路由、VPN 等功能。
-
网关模式 网关模式适用于内外网不在同一网段的情况,防火墙设置网关地址实现路由器的功能,为不同网段进行路由转发。网关模式相比桥模式具备更高的安全性,在进行访问控制的同时实现了安全隔离,具备了一定的私密性。
-
NAT 模式 NAT(Network Address Translation)地址翻译技术由防火墙对内部网络的 IP 地址进行地址翻译,使用防火墙的 IP 地址替换内部网络的源地址向外部网络发送数据;当外部网络的响应数据流量返回到防火墙后,防火墙再将目的地址替换为内部网络的源地址。NAT 模式能够实现外部网络不能直接看到内部网络的 IP 地址,进一步增强了对内部网络的安全防护。同时,在 NAT 模式的网络中,内部网络可以使用私网地址,可以解决 IP 地址数量受限的问题。 如果在 NAT 模式的基础上需要实现外部网络访问内部网络服务的需求时,还可以使用地址/端口映射(MAP)技术,在防火墙上进行地址/端口映射配置,当外部网络用户需要访问内部服务时,防火墙将请求映射到内部服务器上;当内部服务器返回相应数据时,防火墙再将数据转发给外部网络。使用地址/端口映射技术实现了外部用户能够访问内部服务,但是外部用户无法看到内部服务器的真实地址,只能看到防火墙的地址,增强了内部服务器的安全性。
-
高可靠性设计 防火墙都部署在网络的出入口,是网络通信的大门,这就要求防火墙的部署必须具备高可靠性。一般 IT 设备的使用寿命被设计为 3 至 5 年,当单点设备发生故障时,要通过冗余技术实现可靠性,可以通过如虚拟路由冗余协议(VRRP)等技术实现主备冗余。到 2019 年为止,主流的网络设备都支持高可靠性设计。
什么是安全区域
防火墙有安全区域(Security Zone ,简称区域)的概念。防火墙的物理接口和逻辑接口会分配到不同的区域中,也就是将防火墙的网段分别划分到不同的区域中。一个网络接口只能属于一个区域。
在同一个区域内,可以自由进行通信,但是跨区域通信,必须符合安全策略才行。当然,防火墙也可以设置安全策略,根据源或目的地址等条件,判断在同一区域内能否允许通信。
-
信任区域(Trust Zone),也叫做内部区域,是指公司内部网络区域,表示可以信赖的区域。通常区域内是可以自由通信。
-
不信任区域(Untrust Zone),也叫做外部区域,是指公司外部网络区域,比如互联网。与信任区域相对,是不可信任的区域,通常只会拦截通信,不允许所有通信。也可以设置安全策略,允许从信任区域到不信任区域的通信。
-
DMZ 区域(DeMilitarized Zone),是对外公开的服务器使用的区域,与信任区域是分开的。为了防止攻击,从外部网络访问内部网络的通信会被防火墙拦截,但是内部网络中有对外公开的服务器,比如 Web 服务器,对于 Web 请求就不能一刀切的拦截。但如果把服务器放在内部网络中,一旦从外部网络恶意入侵,就会导致内网的重要数据泄露。因此,我们把需要对外公开的服务器放在 DMZ 中,这样即使服务器遭到入侵,DMZ 区域也无法直接访问内部网络。
-
自定义区域(Custom Zone),这里说的是上图 Sales Zone,只有销售部门员工才能访问的区域,是人为划分和定义的自定义区域。当然,也能根据具体内容、安全策略描述和管理目的自定义其它区域。
什么是安全策略
防火墙的主要功能是访问控制,也就是判断特定源和特定目的之间是否允许进行特定的通信。访问控制是通过规则来实现,每一条规则都指定了源、目的和通信内容等信息。这些访问控制规则的集合,在路由器中,叫做访问控制列表,而在防火墙中,叫做安全策略或安全规则。
什么是 NAT
私有 IP 地址只能在内部网络通信,如果要访问外部网络(互联网),可以通过路由器或防火墙把私有 IP 地址转换为公网 IP 地址,这个过程叫做 NAT(Network Address Translator)。
NAT 以前是路由器的功能,后来位于网络边界的防火墙也常常使用这个功能。路由器和防火墙等运行 NAT 功能后,也叫做网关(Gateway)。
- 静态 NAT 静态 NAT(Static NAT)是指 NAT 转换前的地址和 NAT 转换后的地址是一对一的对应关系,通常是一个私网地址对应一个公网地址,手动将对应信息配置到网关中。
- 动态 NAT 动态 NAT(Dynamic NAT)是在网关配置一个 IP 地址池(IP address pool),地址池里面包含多个 IP 地址。在 NAT 建立会话时,在地址池内的 IP 地址按顺序分配一个转换后的 IP 地址。由于地址范围能够手动进行设置和更改,因此这种方式应用的比较多。
虽然和静态 NAT 有点类似,私有地址和公网地址是一对一的映射关系,但不是指定的 NAT 转换后地址,而是动态分配的、在 IP 地址池中排序靠前的有效地址。
- 源 NAT 源 NAT(Source NAT)是对发送方的源 IP 地址进行 NAT 转换。在公司内部网络的客户端,要访问互联网的服务器,客户端的私有地址作为发送源,把数据发送到网关时,必须将私有 IP 地址转换成公网 IP 地址才行。
要和互联网上的服务器进行通信,必须使用公网 IP 地址,但是 IPv4 地址有限,无法为每台客户端都分配一个公网地址。大部分情况下,源 NAT 能够通过动态 NAT 方式节约公网地址资源。在网关上设置地址池,或在网关的接口使用 NAPT ,可以实现私有网络访问互联网的功能。
外部网络只能看到公网地址信息,源 NAT 能够隐藏客户端实际使用的 IP 地址,从而降低受到外部网络攻击的风险。
- 目的 NAT 目的 NAT(Destination NAT)是接收到的目的 IP 地址进行 NAT 转换。
互联网的客户端,想要通过网关访问内部网络的服务器时,由于公司内部服务器使用内网地址,无法直接从互联网访问到,需要进行目的 NAT。网关作为内部服务器的代理,把服务器的内网地址映射到公网地址,收到外网客户端访问公网地址时,网关将报文的目的地址转换为内部服务器的私有地址,完成路由和访问。公司内的服务器通常放置在 DMZ 区域中,能够对外部网络屏蔽内部服务器的地址,从而避免内部网络受到攻击。
- NAPT 当有大量的内网客户端要跟外网通信,而公网地址只有一个或者少量时,网关无法完成私有地址和公网地址的一对一的分配。
这时,网关需要结合 TCP 或 UDP 端口号,完成多个私有地址映射成一个公网地址的转换,这种转换方式叫做 NAPT(Network Address Port Translation ,网络地址端口转换)。
pfSense安装与使用
虚拟机网络设置
实验中 pfsense 需要三张网卡,分别设置桥接模式
、仅主机模式
以及新建一个虚拟网卡vmnet3
,因为防火墙需要接管网络从而实现流量管控等操作,所以将会使用 pfsense 来做 DHCP,为了避免与 VMware 自带 DHCP 服务冲突,我们需要关闭 VMware 的 DHCP 服务,这里以 VMware Fushion 为例,打开 mac 终端:
sudo nano /Library/Preferences/VMware\ Fusion/networking
修改answer VNET_1_DHCP yes
为answer VNET_1_DHCP no
,即可关闭仅主机模式
的 DHCP 服务;
修改answer VNET_3_DHCP yes
为answer VNET_3_DHCP no
,即可关闭vmnet3
的 DHCP 服务:
桥接模式网段:192.168.88.0/24
仅主机模式网段:192.168.34.0/24
vmnet3 网段:172.17.17.0/24
拓扑如图:
新建虚拟机
官网下载地址:https://www.pfsense.org/download/
下载选项:Architecture
即系统架构选择AMD64(64-bit)
、Installer
即安装器选项选择DVD Image(ISO)Installer
创建新的虚拟机,选择 pfSense 镜像:
固件类型选择传统 BIOS:
点击自定设置,对虚机性能配置按需进行修改,参考设置:内存 1.5G,磁盘大小 20G:
同时将原有网络适配器设置为桥接模式
,并新增两个网络适配器分别设置为仅主机模式
和vmnet3
。
基本安装过程
开启并进入虚拟机,按1
开始安装或等待 3s 自动进入安装模式:
敲击回车同意许可条款:
选择Install
敲击回车确定进入下一步:
键盘布局选择,保持默认直接敲击回车进入下一步:
分区方式这里选择Auto(UFS)BIOS
并敲击回车来确定选项进入下一步:
等待安装进程结束:
安装进程结束后问是否需要进行手动设置,这里保持默认选项No
直接敲击回车进入下一步:
这里保持默认选项Reboot
即重启,敲击回车等待系统重启即可:
主机端配置
进入系统之后为命令行操作界面:
接下来需要设置 WAN 口和 LAN 的 IP 地址,输入 2 回车进入网卡设置选项,接着需要输入网卡序号来选择设置哪个网卡,先输入1
即选择设置 WAN 口,第一个问题是询问 WAN 口是否通过 DHCP 获取 IPv4 地址,输入y
并回车表示确认通过 DHCP 来获取 IPv4 地址,之后询问是否通过 DHCP 获取 IPv6 地址,选择n
表示不需要,接下来让我们设置静态 IPv6 地址我们留空直接回车,表示不配置 IPv6。
最后询问是否启用 Web 配置页面,这里输入y
并回车表示启用,接下来等待配置程序运行结束:
配置完成会提示Press <ENTER> to continue.
,敲击回车即可回到菜单页,此时发现我们的 WAN 口已经成功获取到 IP:
同样的方式来设置 LAN 口地址,但需要注意的是这里 LAN 口默认为静态地址,所以我们需要设置一个局域网内可用的静态地址,这里我的仅主机模式
下网段为192.168.34.0/24
,所以我将 LAN 口地址设置为192.168.34.200
,在后面的选项中输入y
开启 DHCP 服务并设置 DHCP 范围:
配置完成回到主界面即可看见 WAN 口与 LAN 口 IP:
Web 端配置
访问http://192.168.34.200
即可进入 web 管理页面,默认账号密码为admin/pfsense
。
点击 next 进入到常规信息设置页面,这里可根据自己喜好设置主机名、域名,下方设置主、辅 DNS 服务器:
配置时间服务器,时间服务器主机名保持默认即可,选择时区Asia/Shanghai
:
接下来的 WAN 口与 LAN 口配置暂时不修改,点击Next
按钮进入下一步即可,最后设置新的 admin 账号密码并点击Next
按钮进入下一步:
修改完成后点击Reload
并等待重新载入,最后出现如下页面即配置完成,点击Finish
按钮就会跳转至管理后台主界面。
进到主界面发现页面为英文,点击System
-General Setup
进入常规设置页面中:
向下寻找Localization
设置项,点开Language
选项卡选择Chinese
之后,滑到底部点击Save
按钮即可保存并应用设置:
保存设置后点击左上角pfsense
图标返回首页即可发现页面语言已经改为中文:
接着点击接口
-分配
添加vmnet3
为新接口:
WAN 口配置
点击接口
-WAN
进入 WAN 口详细设置页面:
首先修改为静态 IPv4,在下面的静态IPv4配置类型
中设置静态 IPv4 地址(确保此地址未被占用),并添加新网关
为上游网关,因为 WAN 口是桥接模式
,所以这里的上游网关即为真实路由器地址:
设置好之后点击底部的保存
按钮保存设置,页面会自动刷新并提示应用更改
,点击之后等待应用更改即可:
需要用到一台 kali 模拟外网机器,将其网卡设置为桥接模式
,即与 WAN 口同网段,IP 地址为192.168.88.183
:
LAN 口 DHCP 配置
点击顶栏中的服务
-DHCP 服务
进入 DHCP 服务配置页面:
首先切换到LAN
接口下,在这里我们可以设置 LAN 口上的 DHCP 分配范围(参考范围192.168.34.10
-192.168.34.100
),填写之后点击底部的保存
按钮即可:
接下来需要用到一台 win7 虚拟机,我们将它的网卡设置为仅主机模式
,即接入 LAN 口模拟办公区设备,然后开机查看网络,可以发现此时已经成功通过 LAN 口的 DHCP 服务获取到了 IP 地址192.168.34.13
:
DMZ 口配置
点击接口
-OPT1
进入 OPT1 口详细设置页面:
启用接口并修改接口描述为 DMZ,设置静态 IPv4 地址,因为此接口在 vmnet3 网卡上,所以 IP 段为 172.17.17.0/24
,这里设置防火墙 IP 为172.17.17.200
:
再切换至服务
-DHCP 服务
-DMZ
下,启用 DHCP 服务,然后设置 DMZ 口上的 DHCP 分配范围(参考范围172.17.17.10
-172.17.17.100
),填写之后点击底部的保存
按钮即可:
这里我们用一台 ubuntu16.04 虚机,将网卡设置为此前新建的网卡vmnet3
,模拟 DMZ 区 web 服务器,然后开机查看网络,可以发现此时已经成功通过 DMZ 口的 DHCP 服务获取到了 IP 地址172.17.17.12
:
接着进入到防火墙
-规则策略
-DMZ
为其添加规则,动作为通过
,协议、源、目标均为any
:
检测网络连通性
在首页查看三个接口 IP 地址如下:
接口 | IP |
---|---|
WAN | 192.168.88.200 |
LAN | 192.168.34.200 |
DMZ | 172.17.17.200 |
进入系统诊断
-Ping
功能,依次测试三台主机的 IP:
接着测试能否连通互联网,进入防火墙
-地址转换
-出站
可以看到其默认为自动生成出站 NAT 规则
,此时所有机器都能进入互联网:
首先进入接在 LAN 口的 win7 测试能否出网:
然后进入接在 DMZ 口的 ubuntu 测试能否出网:
设置只允许 LAN 上网
根据网络区域划分,需要设置为只有 LAN 可上网,进入防火墙
-地址转换
-出站
:
点击手动生成出站 NAT 规则
然后点击保存
按钮应用更改:
删除所有规则:
规则清空后可发现 win7、ubuntu 均无法连接互联网:
添加新 NAT 规则,协议为any
,源为 LAN 网段,填写好之后保存即可:
NAT 规则成功添加之后回到 win7 发现可以上网了:
没有给 DMZ 网段配置 NAT 规则所以 ubuntu 仍然无法上网:
设置 DMZ 不可去任何目标
进入防火墙
-规则策略
-DMZ
,将之前添加的规则动作修改为阻止
,源设置为DMZ net
:
设置外网可访问 DMZ
首先修改 WAN 口配置,进入接口
-WAN
,取消保留网络
下方的两个勾选并保存设置:
接着进入防火墙
-虚拟地址
:
添加一个虚拟地址,类型为IP 别名
,地址为192.168.88.100
(注意确保此地址未被占用):
进入防火墙
-地址转换
-端口转发
中添加规则如下,目标选择前面创建好的虚拟地址192.168.88.100
,目标端口范围指定为HTTP
,重定向目标 IP 为 ubuntu 的 IP 地址172.17.17.12
,重定向的目标端口同样为HTTP
:
配置完成后,开启 ubuntu 的 apache 服务,进入 kali 模拟外网机器,打开浏览器访问http://192.168.88.100
,成功加载网页说明配置成功: