“古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。”读书是一件苦中作乐的事儿,一件面目一新的事儿,一件好事儿。
上文链接:Tony Tse,:麦瑞大课堂网络基础知识之七:网络功能与安全组件1/2
防火墙
防火墙是技术性控制措施,可以是硬件或软件。防火墙与密码系统是当前最基础的、应用最广泛的信息安全控制措施。防火墙是网络的咽喉,所有通信都从此经过。它的基本作用是限制从另一个网络对特定网络的访问。
大多数实体使用防火墙来限制外网(例如互联网)对内网的访问。或者限制内网的一个网段对另一个网段的访问(当然还有其他方法,比如VLAN)。防火墙可基于服务、IP地址、端口甚至包状态和内容来限制流量。防火墙监视流进和流出网络的数据包,过滤掉不满足安全策略要求的包——防火墙根据配置和策略,能丢弃这些包、重新打包、或重定向数据包。防火墙的分类防火墙根据工作方式分为下面几种类型。包过滤防火墙
包过滤防火墙也称为无状态检查防火墙,是最基本的防火墙类型。它基于网络级协议包头做出访问决策,通过是否允许特定网络流量类型流入流出的访问控制列表ACL来做出决策。
包过滤审核网络层和传输层的协议包头
包过滤防火墙
包过滤防火墙可基于以下要素来对每个数据包头执行允许或阻止操作:
(1)源IP;
(2)目标IP;
(3)源端口号;
(4)目标端口号;
(5)协议类型;
(6)进出的流量方向。
通常情况下不必专门购置包过滤防火墙,许多路由器和交换机集成了包过滤。每个路由器都具有多个独立的接口,每个接口都有唯一的地址,包过滤防火墙在这些进出网络的接口处配置。例如路由器可以配置以下ACL规则:permit tcp host 192.168.1.1 host 168.16.1.1 eq telnet,即允许telnet流量从192.168.1.1主机发送到168.16.1.1主机。
🎈数据包到达防火墙时,防火墙会把数据包的特征与每个规则进行对比,直到找到一个匹配的允许或拒绝的规则,如果直到ACL的末尾都没匹配上,则应该拒绝(隐式拒绝)。
包过滤设备能阻断网络协议级的许多种攻击。但是它不检查数据,不检查上下文,无法过滤含恶意内容的数据包(例如用于探测并利用缓冲区溢出漏洞的数据包),所以无法处理针对于特定的应用程序的脆弱性。
包过滤的优点:
(1)可在边界阻止明显无用的流量;
(2)规则简单(只分析包头),快速高效(简单总是意味着高性能);
(3)可扩展,不依赖应用程序。
包过滤的缺点:
(1)不能防止利用针对应用程序的脆弱性或功能的攻击(此场景需要应用级代理防火墙);
(2)日志功能有限,也就是审计功能不足;
(3)大多数不支持高级的用户身份验证方案;
(4)无法检测伪造地址;
(5)不能检测数据包分片攻击(片段攻击)。
状态检测防火墙
状态检测防火墙会使用状态表持续记录计算机之间的连接状态。
状态检测使用状态表来存储信息
当两个主机开始连接时,防火墙检查数据包的所有内容(包头、有效载荷、尾部),将连接的所有必要信息都存储到状态表中(源IP、目标IP、源端口、目标端口、协议类型、包头标志、序列号、时间戳等)。一旦这个初始数据包通过了这个深入检查,且这个数据包被认为安全的,那么剩下的会话防火墙只复查网络层和传输层数据包头。防火墙将每个数据包的包头值都与当前状态表中的值作对比(上下文检测),同时更新状态表会以反映通信进程的进展情况。
TCP包状态检测:TCP是连接型协议,各个步骤及协议工作的状态都被明确定义。连接过程经历一系列的状态,包括LISTEN、SYN-SEND、SYN-RECEIVED、ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、CLOSE-WAIT、CLOSING、LAST-ACK、TIME-WAIT和虚构状态CLOSED。状态检查防火墙记录经过的每个数据包的每个状态,以及相应的确认号和序列号。如果确认号和(或)序列号违反了规则,意味着可能发生了重放攻击,防火墙会丢弃此包并记录日志。
🎈注意FTP有所不同,它会建立两个TCP会话。UDP包状态检测:UDP是无连接协议,不承载任何状态,状态检测防火墙只记录和跟踪源地址和目标地址、UDP包头值和一些ACL规则。UDP没有特定的取消阶段,防火墙会在没有活动发生的一段时间内清除这个连接,从状态表中删除与此连接有关的数据——UDP包头没有窗口值,接收端需要发送一个ICMP包给发送端,状态检测防火墙必须记录且允许带有特定UDP连接的相关的ICMP数据包,如果防火墙拒绝ICMP数据包到达发送系统,那么接收系统就会崩溃。
状态检测防火墙的特征:
(1)维护一个状态表,以跟踪每个通信会话;
(2)提供较高的安全性,通常不存在性能问题;
(3)可扩展,对用户透明;
(4)为跟踪连接协议(如UDP和ICMP)提供数据;
(5)存储和更新包内数据的状态和上下文。
🎈状态防火墙需要记住包状态既是优点也是它的弱点,因为这让它成为多种DoS攻击的受害者。攻击者会利用伪造的信息造成状态表的泛洪。
代理防火墙
代理防火墙设在可信网络和不可信网络之间,代表连接发起方建立连接,它代表连接方与目标设备重启会话和建立连接,当目标回复时,也是由代理检查是否安全,如果是,代理启动一个对内部系统的新会话。代理防火墙区分电路级代理和应用级代理。
电路级代理:工作在会话层,不执行深层次数据包检查,即不检查包的应用层数据,独立于应用程序,基于协议包头和会话信息做出访问决策。电路级代理防火墙的工作方式类似于包过滤,基于地址、端口和协议类型包头值来做访问决策,所以相对应用级代理,电路级代理为更广泛围的协议提供安全性。
电路级代理
应用级代理:工作在应用层,应用级代理网关,每个被监控的协议配备一个代理。它检查通过应用层的数据包。根据数据包的整体内容做出访问决策。应用级代理理解不同的服务和协议及其使用的命令。例如它理解FTP GET/FTP PUT的区别,并可根据这个粒度做出访问决策。电路级代理只能把整个FTP允许或拒绝。
不是说每个服务都需要配备一个代理防火墙,而是说应用级代理防火墙产品的某一个部分专门理解特定协议的工作方式以及如何适当地过滤该协议的可疑数据——如果应用级代理不理解某种协议,它就无法保护这种通信。
应用级代理
应用级代理优点:
(1)能检查整个包,不仅仅地址和端口,拥有强大的日志功能;
(2)应用级代理防火墙能直接对用户进行身份验证;
(3)应用级代理网关防火墙不仅仅是第三层设备,因此能抵御欺骗攻击和其他复杂的攻击。
应用级代理缺点:
(1)不适合高带宽或实时应用;
(2)支持新网络应用和协议的能力有限;
(3)明显存在性能问题(必要的逐包处理)。
🎈SOCKS是电路级代理网关(SOCKS防火墙)的一个示例,它在两台计算机之间提供了一个安全通道,它能屏蔽、过滤、审核、记录与控制流进和流出受保护网络的数据流,许多应用程序和协议都配置为与SOCKS一起工作,以减少管理员方面的配置工作量。而且许多防火墙产品都集成了SOCKS软件,以提供基于电路的保护。
动态包过滤防火墙
TCP或UDP消息的首部信息中包含源IP地址、目标IP地址还有源端口、目标端口,这些要素组成一个套接字。动态包过滤防火墙的动态表现在它会为发送端口临时创建一个允许通过的ACL,允许被访问的外部实体通过这个端口与内部系统通信。
举例说明:假设内部某系统选择端口号22222作为源端口,用于给外部系统发送消息。动态包过滤防火墙会创建一个ACL规则,允许外部系统通过22222与内部系统的IP进行通信。当目标计算机发送响应时,防火墙就允许其进入。因为这些ACL是动态的,一旦连接结束(一方接收到FIN或RST包,或超时),就会从列表中删除该ACL。而对于UDP等无连接协议,连接超时则删除ACL。
动态包过滤防火墙的优点:
(1)允许选择任何类型的流量流出,并且只允许响应流量流入;
(2)安全性优于静态包过滤防火墙;
(3)如果采用SMP技术,那么对网络性能的影响很小。
内核代理防火墙
内核代理防火墙,也被称为第五代防火墙。与之前的防火墙的区别是,内核代理防火墙会为检查包而建立动态的和定制的网络栈。
内核代理防火墙的工作方式:内核代理防火墙会为到达的数据包创建一个新的虚拟网络栈,并只加载必要的协议代理。假设这是SMTP包,虚拟网络栈就只加载SMTP代理。数据包的每一层都会被仔细审查,这意味着数据链路层包头、网络层包头、传输层包头、会话层信息以及应用层都会被评估,如果在任何层发现不安全信息,此包即被丢弃。
特点:①检查都在内核中进行,不必将包上传至操作系统中的较高层软件,所以内核代理防火墙比应用级代理防火墙更快。②内核代理防火墙仍然是基于代理的防火墙,并可在完成代理防火墙的同时通过改变源地址来执行NAT功能。
下一代防火墙(NGFW)
NGFW整合了之前所有防火墙的最好特性,且增加了重要的改进。最重要的是它采用了基于特征的IPS引擎,即它通过特定指标在看似正常的流量中寻找攻击流量。有些还能通过云服务分享攻击特征,就是说一旦新攻击被某台NGFW检测到,那么同一厂商的防火墙都可获得新的攻击特征,从而增加安全性。
NGFW具备连接到外部数据源(如Active Directory)、白名单、黑名单和策略服务器的能力,此功能允许控制规则在一个地方定义以后推送到网络中的每个NGFW,从而减少了在大型网络中存在的各种防火墙设置不一致的可能性。
NGFW示意
堡垒主机
堡垒主机指位于DMZ的公网一侧,或与不被信任的网络直接相连的系统。堡垒主机应该禁用不必要的服务、禁用不必要的账户、关闭不必要的端口、删除不需要的应用程序、删除不用的子系统和管理工具等,即尽可能减少系统的攻击面和潜在的漏洞。堡垒主机不一定是防火墙,仅仅表示系统与不被信任的环境和攻击威胁的位置关系。各种系统由于放置在网络外围,都可认为是堡垒主机(邮件服务器、Web、DNS…)
双宿防火墙(Dual-homed)/多宿防火墙(Multi-homed)
双宿就有两个NIC接口,一个接外部网,一个接内网。如果是防火墙软件安装在双宿设备上(通常都是如此),那么底层操作系统应当关闭包转发和路由功能,因为操作系统将转发流量而不是将流量上传至防火墙。
网络设备基本上是多宿的,用于连接不同的网络。多宿设备常用于安装防火墙软件,因为防火墙的工作就是控制网络之间的传送的流量。
多宿防火墙允许公司配置若干个DMZ。使用不同的DMZ的原因是控制不同的流量类型(例如确保HTTP流量只进入Web服务器,同时确保DNS请求进入DNS服务器)。
🎈不能只是依赖一个多宿防火墙,防火墙没有冗余时应该设置网络冗余。另外应该设置纵深防御,不能只依靠一个防火墙,因为被攻破的话,攻击者就能直接面对公司的网络资源。
被屏蔽主机
指直接与边缘路由器和内部网络通信的防火墙。有时称为单层配置。
被屏蔽主机是直接从路由器接收数据流的唯一设备。
被屏蔽子网
指由两个防火墙创建的DMZ,有时称为双层配置,DMZ中通常会放置组织的某些服务器(WWW、SMTP、DNS......)。
虚拟防火墙
虚拟防火墙提供桥接功能使虚拟机之间的每个流量链路都得到监控。虚拟防火墙通常集成在虚拟管理程序中。
防火墙应用原则:
(1)防火墙应该默认隐式拒绝任何未被显示允许通过的数据包;
(2)防火墙应该识别伪装或欺骗,拒绝来自外网的带有内网源IP地址的包(因为数据包只能到达边界路由器或防火墙,由它们转发到内部源计算机,发送者不应该有内网IP);
(3)防火墙应该控制出口流量,任何没有内部源地址的包都不允许离开网络,因为这意味着内部人或程序在往外发送欺骗流量,这是DDoS僵尸机的工作原理。防火墙应该拒绝这些包,安全专家需要进一步调查。
(4)不可包含优先级高于专门配置的规则的隐含规则,如果隐含规则与配置规则产生冲突就会否决配置规则。
(5)防止分片攻击。防火墙在将分片的包(发送网络不支持接收方的窗口值,所以要分片发送,反之亦然)发送至目标主机前应当首先重新组装它们。为避免收到的恶意分片,某些防火墙在组装之后可根据整个包做出访问决策,缺点是会导致流量延迟。
常见防火墙规则
① 沉默规则:放弃和不记录嘈杂的流量,不响应不重要的数据包,减少日志规模;
② 隐形规则:不允许未经授权的系统访问防火墙软件;
③ 清理规则:规则库中的“最后一条”规则,放弃并记录任何不符合前面规则的流量(隐性拒绝);
④ 否定规则:用来替代广泛允许的“任何规则”。指规定什么系统能被访问和如何被访问,对许可权限严格控制。
防火墙不足
① 大多数情况下,需要使用分布式方法来控制所有网络的接入点,这是仅使用一个防火墙所无法完成的工作;
② 防火墙是潜在的流量瓶颈和单点故障威胁;
③ 多数防火墙不能防止恶意软件的侵害,会被更复杂的攻击类型所欺骗;
④ 防火墙并不能阻止内部网络嗅探和恶意的无线接入点,对内部攻击提供的保护很少,需要考虑其他控制策略(例如考虑DLP、NDLP等)。
代理服务器
代理服务器不是代理防火墙。
代理服务器类似于多层C/S架构的中间件,介于想访问某些服务的客户端和提供这些服务的服务器之间。代理服务器的作用是提供集中式的访问控制和性能优化。最常见的代理服务器是Web代理服务器。
最佳行业实践:内部Web浏览器应该被配置为首先向Web代理服务器发送他们的Web请求。如果代理服务器验证该请求是安全的,就会向网站发送一个代表用户的请求。代理服务器可以缓存服务器对先前客户端访问请求的响应数据,当其他客户端有同样的请求时,代理服务器不再请求连接实际的Web服务器,所请求的数据直接由代理服务器提供,大大减少了访问资源的延迟。
Web代理服务器通常用于进行内容过滤,确保Internet的使用符合组织的使用要求和管理策略:阻止不允许的网络流量进入,提供有关特定用户访问网站详细信息的日志,监控带宽使用统计情况,阻止受限网络的访问,针对特定关键字过滤流量(机密、个人隐私数据...…)。
代理服务器可提供某些特定服务
(1)转发代理服务器。这是一种需要客户端指定代理服务器地址的代理(开放代理就是一种,一个匿名的开放代理服务器允许用户在浏览网站等时隐藏自己的IP);
(2)反向代理服务器。在客户端看来就是普通的Web服务器,实际上反向代理服务器将请求转发给实际服务器;
(3)转发和反向不同之处在于转发通常在内部网络上控制离开内部网络的流量,而反向代理是在外网上满足客户请求,并处理进入内网的流量,反向代理可实现负载均衡、加密加速、安全和缓存等。
代理服务器可配置为缓冲服务器,可保存哪些经常要用到的资源的本地副本,使组织提高性能,明显降低带宽和使用成本。
🎈代理服务器也能被攻击者利用,确保人们无法从他们的攻击活动追踪到其本地系统。