diff --git a/8_acl/acl.pdf b/8_acl/acl.pdf index b622e94..a7807e0 100644 Binary files a/8_acl/acl.pdf and b/8_acl/acl.pdf differ diff --git a/8_acl/acl.typ b/8_acl/acl.typ index 35a9dda..58f95ac 100644 --- a/8_acl/acl.typ +++ b/8_acl/acl.typ @@ -1,7 +1,8 @@ #import "labtemplate.typ": * -#show: nudtlabpaper.with(title: "防火墙ACL配置", - author: "程景愉", - id: "202302723005", +#show: nudtlabpaper.with( + title: "防火墙ACL配置", + author: "程景愉", + id: "202302723005", training_type: "无军籍", grade: "2023", major: "网络工程", @@ -13,33 +14,33 @@ header_str: "《网络工程》实验报告", ) #set page(header: [ - #set par(spacing: 6pt) - #align(center)[#text(size: 11pt)[《网络工程》实验报告]] - #v(-0.3em) - #line(length: 100%, stroke: (thickness: 1pt)) -],) + #set par(spacing: 6pt) + #align(center)[#text(size: 11pt)[《网络工程》实验报告]] + #v(-0.3em) + #line(length: 100%, stroke: (thickness: 1pt)) +]) - #show heading: it => box(width: 100%)[ - #v(0.50em) - #set text(font: hei) - #it.body - ] +#show heading: it => box(width: 100%)[ + #v(0.50em) + #set text(font: hei) + #it.body +] -#outline(title: "目录",depth: 3, indent: 1em) +#outline(title: "目录", depth: 3, indent: 1em) #pagebreak() #outline( title: [图目录], target: figure.where(kind: image), ) - #show heading: it => box(width: 100%)[ - #v(0.50em) - #set text(font: hei) - #counter(heading).display() - // #h(0.5em) - #it.body - ] -#set enum(indent: 0.5em,body-indent: 0.5em,) +#show heading: it => box(width: 100%)[ + #v(0.50em) + #set text(font: hei) + #counter(heading).display() + // #h(0.5em) + #it.body +] +#set enum(indent: 0.5em, body-indent: 0.5em) #pagebreak() = 实验目的 @@ -57,241 +58,320 @@ === ACL的作用 #para[ ACL作为一个过滤器,设备通过应用ACL来阻止和允许特定流量的流入和流出,如果没有它,任何流量都会自由流入和流出,使得网络容易受到攻击。 - - 如@figure1 所示,为保证财务数据安全,企业在路由设备上应用ACL可以阻止内网内部研发部门主机对财务服务器的访问,同时允许总裁办公室访问财务服务器。为了保护企业内网的安全,在路由设备上应用ACL可以封堵网络病毒常用的端口,防止Internet上的恶意流量入侵。 - #figure( - image("download1.png",fit:"stretch",width: 55%), - caption: [ACL应用示例] - ) ] +#para[ + 如@figure1 所示,为保证财务数据安全,企业在路由设备上应用ACL可以阻止内网内部研发部门主机对财务服务器的访问,同时允许总裁办公室访问财务服务器。为了保护企业内网的安全,在路由设备上应用ACL可以封堵网络病毒常用的端口,防止Internet上的恶意流量入侵。 +] +#figure( + image("download1.png", fit: "stretch", width: 55%), + caption: [ACL应用示例], +) === ACL的功能 #para[ 借助ACL,可以实现以下功能: - - - 提供安全访问:企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。使用ACL可以指定用户访问特定的服务器、网络与服务,从而避免随意访问的情况。 - - 防止网络攻击:Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。使用ACL可以封堵高危端口,从而达成为外网流量的阻塞。 - - 提高网络带宽利用率:网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。使用ACL实现对网络流量的精确识别和控制,限制部分网络流量从而保障主要业务的质量。 ] +- 提供安全访问:企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。使用ACL可以指定用户访问特定的服务器、网络与服务,从而避免随意访问的情况。 +- 防止网络攻击:Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。使用ACL可以封堵高危端口,从而达成为外网流量的阻塞。 +- 提高网络带宽利用率:网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。使用ACL实现对网络流量的精确识别和控制,限制部分网络流量从而保障主要业务的质量。 === ACL的组成 #para[ ACL的每一条规则都会允许或者阻止特定的流量,在定义一条合理的ACL规则之前,需要了解其基本组成。 - - - ACL标识:使用数字或者名称来标识ACL。 - - 使用数字标识ACL:不同的类型的ACL使用不同的数字进行标识。关于每类ACL编号的详细介绍,请参见 ACL的分类。 - - 使用名称标识ACL:可以使用字符来标识ACL,就像用域名代替IP地址一样,更加方便记忆。 - - 规则:即描述匹配条件的判断语句。 - - 规则编号:用于标识ACL规则,所有规则均按照规则编号从小到大进行排序。 - - 动作:包括permit/deny两种动作,表示设备对所匹配的数据包接受或者丢弃。 - - 匹配项:ACL定义了极其丰富的匹配项。包括生效时间段、IP协议( ICMP、TCP、UDP等)、源/目的地址以及相应的端口号(21、23、80等)。 ] +- ACL标识:使用数字或者名称来标识ACL。 + - 使用数字标识ACL:不同的类型的ACL使用不同的数字进行标识。关于每类ACL编号的详细介绍,请参见 ACL的分类。 + - 使用名称标识ACL:可以使用字符来标识ACL,就像用域名代替IP地址一样,更加方便记忆。 +- 规则:即描述匹配条件的判断语句。 + - 规则编号:用于标识ACL规则,所有规则均按照规则编号从小到大进行排序。 + - 动作:包括permit/deny两种动作,表示设备对所匹配的数据包接受或者丢弃。 + - 匹配项:ACL定义了极其丰富的匹配项。包括生效时间段、IP协议( ICMP、TCP、UDP等)、源/目的地址以及相应的端口号(21、23、80等)。 === ACL的分类 #para[ 随着ACL技术的发展,其种类越来越丰富,根据其不同的规则和使用场景,常用的可分为以下几类: - + 基本ACL:基本ACL规则只包含源IP地址,对设备的CPU消耗较少,可用于简单的部署,但是使用场景有限,不能提供强大的安全保障。 - + 高级ACL:相较于基本ACL,高级ACL提供更高的扩展性,可以对流量进行更精细的匹配。通过配置高级ACL,可以阻止特定主机或者整个网段的源或者目标。除此之外,还可以使用协议信息(IP、 ICMP、TCP、UDP)去过滤相应的流量。 - + 二层ACL:在公司的内部网络中,想对特定的终端进行访问权限控制,这时就需要二层ACL。使用二层ACL,可以根据源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息对流量进行管控。 - + 用户ACL:由于企业内部同部门的工作人员的终端不在同一个网段难以管理,需要将其纳入一个用户组,并对其用户组进行访问权限管理,这时候就需要用户ACL。用户ACL在高级ACL的基础上增加了用户组的配置项,可以实现对不同用户组的流量管控。 - + 时间ACL:在某些特定的时间段内,对特定的流量进行管控,这时就需要时间ACL。时间ACL在高级ACL的基础上增加了时间段的配置项,可以实现对不同时间段的流量管控。 ] ++ 基本ACL:基本ACL规则只包含源IP地址,对设备的CPU消耗较少,可用于简单的部署,但是使用场景有限,不能提供强大的安全保障。 ++ 高级ACL:相较于基本ACL,高级ACL提供更高的扩展性,可以对流量进行更精细的匹配。通过配置高级ACL,可以阻止特定主机或者整个网段的源或者目标。除此之外,还可以使用协议信息(IP、 ICMP、TCP、UDP)去过滤相应的流量。 ++ 二层ACL:在公司的内部网络中,想对特定的终端进行访问权限控制,这时就需要二层ACL。使用二层ACL,可以根据源MAC地址、目的MAC地址、802.1p优先级、二层协议类型等二层信息对流量进行管控。 ++ 用户ACL:由于企业内部同部门的工作人员的终端不在同一个网段难以管理,需要将其纳入一个用户组,并对其用户组进行访问权限管理,这时候就需要用户ACL。用户ACL在高级ACL的基础上增加了用户组的配置项,可以实现对不同用户组的流量管控。 ++ 时间ACL:在某些特定的时间段内,对特定的流量进行管控,这时就需要时间ACL。时间ACL在高级ACL的基础上增加了时间段的配置项,可以实现对不同时间段的流量管控。 === ACL的使用步骤 #para[ ACL的使用分为两个步骤。 - + 设置相应的ACL规则:为ACL设置相关规则的时候,需要了解入口流量与出口流量,如@figure2 所示:入口流量指的是进入设备(以路由器为例)接口的流量(无论来源是外部Internet还是内部网络),同理,出口流量指的是从设备接口流出的流量。#figure( - image("download2.png",fit:"stretch",width: 60%), - caption: [入口流量与出口流量] - ) 当外部Internet访问内部网络时,通过路由器接口2的入口流量,其源IP地址为外部的公网IP;而当内部网络需要访问外部网络时,通过路由器的接口1的入口流量,其源IP地址则为内网的IP。 - + 应用ACL规则:规则设置完成后,需要将ACL应用在设备的接口上才能正常工作。因为所有的路由和转发决策都是由设备的硬件做出的,所以ACL语句可以更快地执行。 ] ++ 设置相应的ACL规则:为ACL设置相关规则的时候,需要了解入口流量与出口流量,如@figure2 所示:入口流量指的是进入设备(以路由器为例)接口的流量(无论来源是外部Internet还是内部网络),同理,出口流量指的是从设备接口流出的流量。#figure( + image("download2.png", fit: "stretch", width: 60%), + caption: [入口流量与出口流量], + ) 当外部Internet访问内部网络时,通过路由器接口2的入口流量,其源IP地址为外部的公网IP;而当内部网络需要访问外部网络时,通过路由器的接口1的入口流量,其源IP地址则为内网的IP。 ++ 应用ACL规则:规则设置完成后,需要将ACL应用在设备的接口上才能正常工作。因为所有的路由和转发决策都是由设备的硬件做出的,所以ACL语句可以更快地执行。 === ACL的匹配机制 #para[ 设备使用ACL的匹配机制如@figure3 所示。 +] - #figure( - image("download3.png",fit:"stretch",width: 70%), - caption: [ACL的匹配机制] - ) +#figure( + image("download3.png", fit: "stretch", width: 70%), + caption: [ACL的匹配机制], +) +#para[ ACL规则的匹配遵循”一旦命中即停止匹配”的机制。当ACL处理数据包时,一旦数据包与某条ACL规则匹配,就会停止匹配,设备根据该条匹配的语句内容决定允许或者拒绝该数据包。如果数据包内容与ACL语句不匹配,那么将依次使用ACL列表中的下一条语句去匹配数据包直到列表的末尾。一般在ACL的列表末尾会有一条隐式的拒绝所有的语句,所以数据包与所有的规则都不匹配的情况下会被直接拒绝。此时设备不会将此数据包流入或流出接口,而是直接将其丢弃。 ] === ACL的应用场景 #para[ ACL的应用场景包括以下几个方面: - - - + 在NAT中使用ACL:通过NAT的端口映射可使得外网访问内部网络。考虑到内部的网络安全,不可能允许所有的外部用户访问内部网络,这时可以设置ACL规则并应用在企业路由器上,使得特定的外网用户可以访问内部网络。 #figure( - image("download4.png",fit:"stretch",width: 60%), - caption: [在NAT中使用ACL] - )如@figure4 所示,当公网主机想建立与内网主机的通信时,其发向内部网络主机的流量经过 NAT 设备时,设备利用ACL对流量进行过滤,阻断了PC4对PC2的访问,同时允许PC3对PC1的访问。 - + 在防火墙中使用ACL:防火墙用在内外网络边缘处,防止外部网络对内部网络的入侵,也可以用来保护网络内部大型服务器和重要的资源(如数据)。由于ACL直接在设备的转发硬件中配置,在防火墙中配置ACL在保护网络安全的同时不会影响服务器的性能。 #figure( - image("download5.png",fit:"stretch",width: 60%), - caption: [在防火墙中使用ACL] - )如@figure5 所示,在防火墙上配置ACL只允许外部特定主机PC A访问内部网络中的数据中心,并禁止其他外部主机的访问。 - + 在QoS中使用ACL限制用户互访:ACL应用在QoS的流策略中,可以实现不同网段用户之间访问权限的限制,从而避免用户之间随意访问形成安全隐患。 #figure( - image("download6.png",fit:"stretch",width: 60%), - caption: [使用ACL限制不同网段用户的互访] - )如@figure6 所示,某公司为财务部和市场部规划了两个网段的IP地址。为了避免两个部门之间相互访问造成公司机密的泄露,可以在两个部门连接Router的接口的入方向上应用绑定了ACL的流策略,从而禁止两个部门的互访。 ] + ++ 在NAT中使用ACL:通过NAT的端口映射可使得外网访问内部网络。考虑到内部的网络安全,不可能允许所有的外部用户访问内部网络,这时可以设置ACL规则并应用在企业路由器上,使得特定的外网用户可以访问内部网络。 #figure( + image("download4.png", fit: "stretch", width: 60%), + caption: [在NAT中使用ACL], + )如@figure4 所示,当公网主机想建立与内网主机的通信时,其发向内部网络主机的流量经过 NAT 设备时,设备利用ACL对流量进行过滤,阻断了PC4对PC2的访问,同时允许PC3对PC1的访问。 ++ 在防火墙中使用ACL:防火墙用在内外网络边缘处,防止外部网络对内部网络的入侵,也可以用来保护网络内部大型服务器和重要的资源(如数据)。由于ACL直接在设备的转发硬件中配置,在防火墙中配置ACL在保护网络安全的同时不会影响服务器的性能。 #figure( + image("download5.png", fit: "stretch", width: 60%), + caption: [在防火墙中使用ACL], + )如@figure5 所示,在防火墙上配置ACL只允许外部特定主机PC A访问内部网络中的数据中心,并禁止其他外部主机的访问。 ++ 在QoS中使用ACL限制用户互访:ACL应用在QoS的流策略中,可以实现不同网段用户之间访问权限的限制,从而避免用户之间随意访问形成安全隐患。 #figure( + image("download6.png", fit: "stretch", width: 60%), + caption: [使用ACL限制不同网段用户的互访], + )如@figure6 所示,某公司为财务部和市场部规划了两个网段的IP地址。为了避免两个部门之间相互访问造成公司机密的泄露,可以在两个部门连接Router的接口的入方向上应用绑定了ACL的流策略,从而禁止两个部门的互访。 + == 防火墙 === 防火墙基本原理 #para[ - 防火墙是一种网络安全设备,用于监控和控制进出网络的流量,基于预定义的安全规则来允许或阻止数据包的传输。它通常部署在网络边界,用于保护内部网络免受外部威胁。 + 防火墙是一种网络安全设备,用于监控和控制进出网络的流量,基于预定义的安全规则来允许或阻止数据包的传输。它通常部署在网络边界,用于保护内部网络免受外部威胁。 ] === 接口工作模式 #para[ - 防火墙的接口可以工作在以下三种模式之一: - + 路由模式:当防火墙位于内部网络和外部网络之间时,可同时为设备与内部网络、外部网络相连的接口分别配置不同网段的 IP 地址。报文在三层区域的接口间进行转发时,根据报文的 IP 地址来查找路由表。此时设备表现为一个路由器。 - + 透明模式:接口无 IP 地址。在网络中像连接交换机一样连接防火墙。此时无需修改任何已有的 IP 配置,防火墙就像一个交换机一样工作,内部网络和外部网络必须处于同一个子网。报文在防火墙当中不仅进行二层的交换,还会对报文进行高层分析处理。 - + 混合模式:如果防火墙既存在工作在路由模式的接口(有的接口具有 IP 地址),又存在工作在透明模式的接口(有的接口无 IP 地址),则防火墙工作在混合模式下。这种工作模式基本上是透明模式和路由模式的混合,目前只用于透明模式下提供双机热备的特殊应用中,别的环境下不建议使用。 + 防火墙的接口可以工作在以下三种模式之一: ] ++ 路由模式:当防火墙位于内部网络和外部网络之间时,可同时为设备与内部网络、外部网络相连的接口分别配置不同网段的 IP 地址。报文在三层区域的接口间进行转发时,根据报文的 IP 地址来查找路由表。此时设备表现为一个路由器。 ++ 透明模式:接口无 IP 地址。在网络中像连接交换机一样连接防火墙。此时无需修改任何已有的 IP 配置,防火墙就像一个交换机一样工作,内部网络和外部网络必须处于同一个子网。报文在防火墙当中不仅进行二层的交换,还会对报文进行高层分析处理。 ++ 混合模式:如果防火墙既存在工作在路由模式的接口(有的接口具有 IP 地址),又存在工作在透明模式的接口(有的接口无 IP 地址),则防火墙工作在混合模式下。这种工作模式基本上是透明模式和路由模式的混合,目前只用于透明模式下提供双机热备的特殊应用中,别的环境下不建议使用。 === 安全区域 #para[ - 安全区域(简称区域)是一个或多个接口的集合。区域是防火墙功能实现的基础,当数据报文在不同的区域之间传递时,将会触发安全策略进行检查。默认区域包括: - + Untrust:外网,不安全网络,安全级别是 5。 - + DMZ:停火区,安全级别是 50。 - + Trust:内网,安全网络,安全级别是 85。 - + Local:管理接口、运行动态路由协议,安全级别是 100。 - 安全级别越大,安全级别越高,不同安全域的级别不能相同。 + 安全区域(简称区域)是一个或多个接口的集合。区域是防火墙功能实现的基础,当数据报文在不同的区域之间传递时,将会触发安全策略进行检查。默认区域包括: ] ++ Untrust:外网,不安全网络,安全级别是 5。 ++ DMZ:停火区,安全级别是 50。 ++ Trust:内网,安全网络,安全级别是 85。 ++ Local:管理接口、运行动态路由协议,安全级别是 100。 +安全级别越大,安全级别越高,不同安全域的级别不能相同。 === 安全策略 #para[ - 安全策略是防火墙的核心功能,用于控制不同区域之间的流量通信。默认情况下,所有区域间不能通信。安全策略的匹配条件和动作包括: - + 策略匹配条件:源安全域,目的安全域,源地址,目的地址,用户,服务,应用,时间段。 - + 策略动作:允许,禁止。 - + 内容安全(可选,策略动作为允许的时候执行):反病毒,攻击防御,URL 过滤,文件过滤,内容过滤,应用行为控制,邮件过滤。 + 安全策略是防火墙的核心功能,用于控制不同区域之间的流量通信。默认情况下,所有区域间不能通信。安全策略的匹配条件和动作包括: ] ++ 策略匹配条件:源安全域,目的安全域,源地址,目的地址,用户,服务,应用,时间段。 ++ 策略动作:允许,禁止。 ++ 内容安全(可选,策略动作为允许的时候执行):反病毒,攻击防御,URL 过滤,文件过滤,内容过滤,应用行为控制,邮件过滤。 #pagebreak() === 安全策略工作流程 #para[ - 安全策略的工作流程如下: - 1. 对收到的流量进行检测,检测出流量的属性,包括:源安全区域、目的安全区域、源地址/地区、目的地址/地区、用户、服务(源端口、目的端口、协议类型)、应用和时间段。 - 2. 如果所有条件(流量属性)都匹配,则此流量成功匹配安全策略。如果其中有一个条件不匹配,则继续匹配下一条安全策略。以此类推,如果所有安全策略都不匹配,则防火墙会执行缺省安全策略的动作(默认为禁止)。 - 3. 如果流量成功匹配一条安全策略,防火墙会执行此安全策略的动作。如果动作为禁止,则防火墙会阻断此流量。如果动作为允许,则防火墙会判断安全策略是否引用了安全配置文件。如果引用了安全配置文件,则继续进行步骤 4 的处理;如果没有引用安全配置文件,则允许此流量通过。 + 安全策略的工作流程如下: ] +1. 对收到的流量进行检测,检测出流量的属性,包括:源安全区域、目的安全区域、源地址/地区、目的地址/地区、用户、服务(源端口、目的端口、协议类型)、应用和时间段。 +2. 如果所有条件(流量属性)都匹配,则此流量成功匹配安全策略。如果其中有一个条件不匹配,则继续匹配下一条安全策略。以此类推,如果所有安全策略都不匹配,则防火墙会执行缺省安全策略的动作(默认为禁止)。 +3. 如果流量成功匹配一条安全策略,防火墙会执行此安全策略的动作。如果动作为禁止,则防火墙会阻断此流量。如果动作为允许,则防火墙会判断安全策略是否引用了安全配置文件。如果引用了安全配置文件,则继续进行步骤 4 的处理;如果没有引用安全配置文件,则允许此流量通过。 = 实验环境 == 实验背景 #para[ - 本实验基于华为USG6303E-AC防火墙,通过配置ACL实现以下需求: - + Trust 区域在工作时间(周一到周五 09:00-21:00)禁止访问 untrust 区域的娱乐类应用。 - + 允许 trust 区域访问 untrust 区域的其余流量。 - + 允许任意区域访问 DMZ 区域的 http、https、ftp 服务(使用服务组)。 - 配置步骤包括: - 1. 给接口设置 IP 地址。 - 2. 将接口加入区域。 - 3. 定义时间段对象、服务对象。 - 4. 设置安全策略。 + 本实验基于华为USG6303E-AC防火墙,通过配置ACL实现以下需求: ] -== 实验设备 ++ Trust 区域在工作时间(周一到周五 09:00-21:00)禁止访问 untrust 区域的娱乐类应用。 ++ 允许 trust 区域访问 untrust 区域的其余流量。 ++ 允许任意区域访问 DMZ 区域的 http、https、ftp 服务(使用服务组)。 #para[ +配置步骤包括: +] +1. 给接口设置 IP 地址。 +2. 将接口加入区域。 +3. 定义时间段对象、服务对象。 +4. 设置安全策略。 +== 实验设备 #align(center)[#table( - columns: (auto, auto,auto), - rows:(2em,2em,3em), + columns: (auto, auto, auto), + rows: (2em, 2em, 3em), inset: 10pt, - align: horizon+center, - table.header( - [*设备名称*], [*设备型号*], [*设备数量*] - ), + align: horizon + center, + table.header([*设备名称*], [*设备型号*], [*设备数量*]), "防火墙", "华为USG6303E-AC", "1", "PC", "联想启天M410 Windows 10", "3", )] +#para[ 另有网线若干。 ] = 实验步骤及结果 == 实验拓扑 #para[ 按实验背景,绘制拓扑图如下: - #figure(image("实验拓扑.png",format: "png",fit:"stretch",width: 80%),caption: "实验拓扑图") ] +#figure(image("实验拓扑.png", format: "png", fit: "stretch", width: 80%), caption: "实验拓扑图") == 按照拓扑图接线 #para[ 按照拓扑图接线。 - #figure(image("机柜正面连线.png",format: "jpg",fit:"stretch",width: 60%),caption: "机柜接线图") ] +#figure(image("机柜正面连线.png", format: "jpg", fit: "stretch", width: 60%, height: 40%), caption: "机柜接线图") == 配置基本网络 === 配置PC +- 配置PC1的IP地址为`192.168.1.1/24`,网关为`192.168.1.2`; +#figure(image("trust区域电脑IP地址配置.jpg", format: "jpg", fit: "stretch", width: 60%), caption: "配置PC1的IP地址") +- 配置PC2(Server)的IP地址为`172.130.80.1/24`,网关为`172.130.80.2`; +#figure(image("PC2-IP.jpg", format: "jpg", fit: "stretch", width: 60%), caption: "配置PC2的IP地址") +- 配置PC3的IP地址为`10.13.1.1/24`,网关为`10.13.1.2`; +#figure(image("PC3-IP.jpg", format: "jpg", fit: "stretch", width: 60%), caption: "配置PC3的IP地址") +- 配置管理PC的IP地址为`192.168.0.2/24`,网关为`192.168.0.1`。 +#figure(image("管理PC.jpg", format: "jpg", fit: "stretch", width: 60%), caption: "配置管理PC的IP地址") #para[ - - 配置PC1的IP地址为`192.168.1.1/24`,网关为`192.168.1.2`; - #figure(image("trust区域电脑IP地址配置.jpg",format: "jpg",fit:"stretch",width: 60%),caption: "配置PC1的IP地址") - - 配置PC2(Server)的IP地址为`172.130.80.1/24`,网关为`172.130.80.2`; - #figure(image("PC2-IP.jpg",format: "jpg",fit:"stretch",width: 60%),caption: "配置PC2的IP地址") - - 配置PC3的IP地址为`10.13.1.1/24`,网关为`10.13.1.2`; - #figure(image("PC3-IP.jpg",format: "jpg",fit:"stretch",width: 60%),caption: "配置PC3的IP地址") - - 配置管理PC的IP地址为`192.168.0.2/24`,网关为`192.168.0.1`。 - #figure(image("管理PC.jpg",format: "jpg",fit:"stretch",width: 60%),caption: "配置管理PC的IP地址") 这样配置之后,PC1、PC2、PC3分别属于`trust`、`dmz`、`untrust`区域;管理PC用于通过MGMT网口管理防火墙。 ] == 配置防火墙 === 配置防火墙接口 #para[ 通过“网络”-“接口”配置防火墙的接口IP地址和区域信息总览: - #figure(image("接口配置前.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "配置防火墙接口前") - - 配置防火墙的GE0/0/1接口IP地址为`192.168.1.2/24`,区域为`trust`; - #figure(image("001接口.jpg",format: "jpg",fit:"stretch",width: 99%),caption: "配置防火墙的GE0/0/1接口") - - 配置防火墙的GE0/0/2接口IP地址为`172.130.80.2/24`,区域为`dmz`; - #figure(image("002接口.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "配置防火墙的GE0/0/2接口") - - 配置防火墙的GE0/0/3接口IP地址为`10.13.1.2/24`,区域为`untrust`。 - #figure(image("003接口.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "配置防火墙的GE0/0/3接口") - 查看配置结果: - #figure(image("接口配置后.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "配置防火墙接口后") ] +#figure(image("接口配置前.jpg", format: "jpg", fit: "stretch", width: 100%), caption: "配置防火墙接口前") +- 配置防火墙的GE0/0/1接口IP地址为`192.168.1.2/24`,区域为`trust`; +#figure(image("001接口.jpg", format: "jpg", fit: "stretch", width: 99%), caption: "配置防火墙的GE0/0/1接口") +- 配置防火墙的GE0/0/2接口IP地址为`172.130.80.2/24`,区域为`dmz`; +#figure(image("002接口.jpg", format: "jpg", fit: "stretch", width: 100%), caption: "配置防火墙的GE0/0/2接口") +- 配置防火墙的GE0/0/3接口IP地址为`10.13.1.2/24`,区域为`untrust`。 +#figure(image("003接口.jpg", format: "jpg", fit: "stretch", width: 100%), caption: "配置防火墙的GE0/0/3接口") +查看配置结果: +#figure(image("接口配置后.jpg", format: "jpg", fit: "stretch", width: 100%), caption: "配置防火墙接口后") === 配置安全策略 #para[ 通过“策略”-“安全策略”配置安全策略: - - 配置`trust`区域到`untrust`区域的安全策略,在工作时间禁止访问`untrust`区域: - #figure(image("安全策略a.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "配置trust区域在工作时间禁止访问untrust区域") - - 配置`trust`区域到`untrust`区域的安全策略,允许访问其余流量: - #figure(image("安全策略b.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "配置trust到untrust的安全策略") - - 创建包含http、https、ftp服务的服务组: - #figure(image("安全策略-服务组.jpg",format: "jpg",fit:"stretch",width: 90%),caption: "创建服务组") - - 使用创建的服务组配置`trust`区域到`dmz`区域的安全策略: - #figure(image("安全策略c.jpg",format: "jpg",fit:"stretch",width: 90%),caption: "配置trust到dmz的安全策略") - - 使用创建的服务组配置`untrust`区域到`dmz`区域的安全策略: - #figure(image("安全策略c1.jpg",format: "jpg",fit:"stretch",width: 90%),caption: "配置untrust到dmz的安全策略") - 配置完成之后,查看总览: - #figure(image("安全策略总览.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "安全策略总览") ] +- 配置`trust`区域到`untrust`区域的安全策略,在工作时间禁止访问`untrust`区域: +#figure( + image("安全策略a.jpg", format: "jpg", fit: "stretch", width: 100%), + caption: "配置trust区域在工作时间禁止访问untrust区域", +) +- 配置`trust`区域到`untrust`区域的安全策略,允许访问其余流量: +#figure(image("安全策略b.jpg", format: "jpg", fit: "stretch", width: 100%), caption: "配置trust到untrust的安全策略") +- 创建包含http、https、ftp服务的服务组: +#figure(image("安全策略-服务组.jpg", format: "jpg", fit: "stretch", width: 90%), caption: "创建服务组") +- 使用创建的服务组配置`trust`区域到`dmz`区域的安全策略: +#figure(image("安全策略c.jpg", format: "jpg", fit: "stretch", width: 90%), caption: "配置trust到dmz的安全策略") +- 使用创建的服务组配置`untrust`区域到`dmz`区域的安全策略: +#figure(image("安全策略c1.jpg", format: "jpg", fit: "stretch", width: 90%), caption: "配置untrust到dmz的安全策略") +#para[ + 配置完成之后,查看总览: +] +#figure(image("安全策略总览.jpg", format: "jpg", fit: "stretch", width: 100%), caption: "安全策略总览") == 验证配置 #para[ 在“系统”-“配置”-“时钟配置”中查看防火墙系统时间: - #figure(image("允许时间段.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "修查看系统时间") +] + #figure(image("允许时间段.jpg", format: "jpg", fit: "stretch", width: 70%), caption: "修查看系统时间") +#para[ 时间为非工作时间(22点),在PC1上ping untrust区域的PC3,可以ping通。 - +] +#para[ 修改系统时间为工作时间: - #figure(image("禁止时间段.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "修改系统时间") +] + #figure(image("禁止时间段.jpg", format: "jpg", fit: "stretch", width: 70%), caption: "修改系统时间") +#para[ 时间为工作时间(10点),在PC1上ping untrust区域的PC3,无法ping通。 - +] + +#para[ 下面是两次ping的结果,trust区域电脑在不同时段内可或不可访问untrust区域: - #figure(image("trust区域电脑在不同时段内可or不可访问untrust区域.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "ping结果") - +] + #figure( + image("trust区域电脑在不同时段内可or不可访问untrust区域.jpg", format: "jpg", fit: "stretch", width: 100%), + caption: "ping结果", + ) +#para[ 下面是防火墙上针对上述策略的命中次数变化,注意最右侧的命中次数变化,可以看到ping发出的4个请求被防火墙拦截: - #figure(table( - columns: (auto), - rows:(auto,auto), - inset: 10pt, - align: horizon+center, - figure(image("不命中.png",format: "png",fit:"stretch",width: 100%),), - figure(image("命中.png",format: "png",fit:"stretch",width: 100%),), - stroke: none, - ),caption: "防火墙命中次数变化",kind: image) +] + #figure( + table( + columns: auto, + rows: (auto, auto), + inset: 10pt, + align: horizon + center, + figure(image("不命中.png", format: "png", fit: "stretch", width: 100%)), + figure(image("命中.png", format: "png", fit: "stretch", width: 100%)), + stroke: none, + ), + caption: "防火墙命中次数变化", + kind: image, + ) +#para[ 即策略配置无误。 ] = 实验总结 == 内容总结 #para[ 本实验基于华为USG6303E-AC防火墩,通过配置ACL实现了以下需求: +] + Trust 区域在工作时间(周一到周五 09:00-21:00)禁止访问 untrust 区域。 + 允许 trust 区域访问 untrust 区域的其余流量。 + 允许任意区域访问 DMZ 区域的 http、https、ftp 服务(使用服务组)。 +#para[ 通过配置ACL,实现了对不同区域之间的流量通信进行了控制,保障了网络的安全。 ] +== 思考题 + +=== 在某防火墙安全规则配置时,已经允许从主机 A 到主机 B 通过 ICMP 协议,但使用 ping 测试时发现从 A 到 B 还是不通,请问是什么原因? + +这是一个非常常见的排错场景。`ping` 命令的成功依赖于一个双向的通信过程,而不仅仅是A到B的单向。 + + 请求 (Request): 主机 A 发送一个 `ICMP Echo Request` 报文给主机 B。 + 回复 (Reply): 主机 B 收到后,必须回复一个 `ICMP Echo Reply` 报文给主机 A。 + +我们在实验中配置的规则 `允许 A -> B` 只保证了第一步(请求)的成功。`ping` 仍然失败,最可能的原因是第二步(回复)的报文被阻断了。 + +以下是几个最可能的原因,按排查优先级排序: + +1. 缺少返回策略 (最常见): + 防火墙是双向检查的。当主机 B 回复报文时,这个报文的流向是 `B -> A`。如果防火墙上没有配置“允许主机 B 到主机 A 的 ICMP 流量”的策略,这个回复报文就会被防火墙丢弃,主机 A 也就永远收不到回复,导致 `ping` 超时。 + 解决方法: + (状态检测):如果防火墙开启了状态检测(Stateful Inspection),它会自动“记住” A 发出的请求,并自动放行 B 的回复。需要检查防火墙是否为 ICMP 开启了状态检测。 + (静态ACL):如果防火墙是无状态的(或ICMP状态检测被关闭),必须额外添加一条反向规则,允许 `ICMP Echo Reply` 从 B 到 A。 + +2. 主机 B 的本地防火墙: + 网络防火墙(如 FW1)可能放行了流量,但是主机 B 自己的防火墙(例如 Windows 防火墙或 Linux 的 iptables)默认配置为“禁止入站 ICMP 请求”。这是 Windows 操作系统出于安全考虑的默认设置。 + 解决方法:登录主机 B,修改其本地防火墙设置,添加入站规则以允许 "文件和打印机共享(回显请求 - ICMPv4-In)"。 + +3. 路由问题: + B 没有到 A 的路由:主机 B 可能不知道如何将回复报文“送回”给主机 A 所在的网段。需要检查主机 B 的路由表或其默认网关的路由表,确保有返回到主机 A 网段的路由。 + A 没有到 B 的路由:虽然的安全策略允许了,但主机 A 或其网关可能根本不知道如何将数据包路由到主机 B。 + +4. NAT (地址转换) 问题: + 如果主机 A 在内网,主机 B 在外网,主机 A 访问 B 时源地址被NAT成了防火墙的公网地址。当 B 回复时,它会回复给防火墙的公网地址。需要检查防火墙上的 NAT 配置和会话表(`display firewall session table`),确认 ICMP 的 NAT 转换和会话是否都正常建立。 + +=== 2)什么是 DMZ,设置 DMZ 有何意义? + +- DMZ 是 "Demilitarized Zone" 的缩写,中文译为“隔离区”或“非军事区”。 + +在网络安全中,DMZ 是一个物理或逻辑上的子网络,它位于公司的内部私有网络 (Trust 区) 和外部公共网络 (Untrust 区 / Internet) 之间。它是一个缓冲区,一个“三不管”地带。 + +- 设置 DMZ 的核心意义是“隔离风险,保护内网”。 + +具体来说,公司里总有一些服务器是必须被外网(互联网)访问的,例如: + 公司官网的 Web 服务器 + Email 服务器 (SMTP) + DNS 服务器 + +这些服务器由于暴露在互联网上,是黑客攻击的主要目标。 + +1. 风险隔离: + 我们不能把这些“高风险”的服务器直接放在内网(Trust 区)。如果 Web 服务器被黑客攻陷了,而它又在内网,那么黑客就能以此为跳板,直接攻击内网的员工电脑、财务数据、核心数据库等,后果不堪设想。 + +2. 保护内网 (核心): + 通过将这些服务器放在 DMZ 区域,我们就建立了一道新的安全屏障。防火墙可以对这三个区域(Trust, Untrust, DMZ)实施精细的访问控制: + 外网 (Untrust) -> DMZ:有限允许。只开放必须的端口(如 Web 服务的 80/443 端口)。 + 内网 (Trust) -> DMZ:有限允许。允许内网管理员去管理 DMZ 的服务器(如 SSH, RDP)。 + DMZ -> 内网 (Trust):绝对禁止。这是最关键的一条策略!禁止任何从 DMZ 发起的、指向内网的连接。 + == 心得感悟 #para[ 通过本次实验,我学会了如何配置ACL,实现了对不同区域之间的流量通信进行了控制,保障了网络的安全。在实验过程中,我对防火墙的接口配置、安全策略配置有了更深入的了解,提高了自己的实际操作能力。 @@ -305,11 +385,11 @@ #it.body ] #pagebreak() -#bibliography("ref.yml",full: true,title: "参考文献",style:"gb-7714-2015-numeric") +#bibliography("ref.yml", full: true, title: "参考文献", style: "gb-7714-2015-numeric") /* -根据这个网站的格式示范https://github.com/typst/hayagriva/blob/main/docs/file-format.md +根据这个网站的格式示范https://github.com/typst/hayagriva/blob/main/docs/file-format.md 为这个网页生成.yml文件 https://blog.csdn.net/jxjdhdnd/article/details/138009187 -*/ \ No newline at end of file +*/ diff --git a/8_acl/拓扑图.png b/8_acl/拓扑图.png new file mode 100644 index 0000000..f7e02f7 Binary files /dev/null and b/8_acl/拓扑图.png differ diff --git a/8_acl/机柜正面连线.png b/8_acl/机柜正面连线.png index 93fe589..c463bb2 100644 Binary files a/8_acl/机柜正面连线.png and b/8_acl/机柜正面连线.png differ