
简介华为防火墙USG6000V基于IP地址和端口的安全策略实验文档面向网络工程师及防火墙初学者以企业服务器访问控制为场景系统讲解如何限制特定IP地址的PC在固定时段内访问非知名端口服务并说明安全策略的配置顺序与匹配规则。资源为单个PDF文件仅1.18MB从实验要求、拓扑设计、配置思路到详细命令步骤与验证结果一应俱全可对照真实环境快速复现。截至目前已有1581人次浏览与下载适用于HCIP安全方向备考或日常防火墙策略调试。文档特别演示了地址集与自定义服务集的创建及引用方式通过先拒绝特殊PC再放行整个域间流量的策略编排帮助读者理解默认缺省规则的作用避免策略误配从而高效掌握基于IP与端口的安全策略实战技能。1. USG6000V上基于IP地址和端口的安全策略先解决“你到底想放谁去看哪个端口”刚开始做USG6000V实验时我拿着“基于IP地址和端口的安全策略”这句话以为只要把源IP、目的IP、源端口、目的端口写在一条策略里就完事。结果在eNSP里配了三条规则内网还是ping不通服务器最后发现是源安全区域写反了。基于IP地址和端口的安全策略在USG6000V上不是“一条命令里的四个参数”而是一整套拆分动作IP要落到地址对象或源地址字段端口要落到服务对象或协议端口字段再加上接口所属安全区域、策略匹配顺序、会话表状态缺一个都会让规则“看起来放行了、流量却原地消失”。这篇笔记按我的配置习惯把从区域检查、对象定义、策略落地到排错验证的完整链路过一遍。适合刚在eNSP里搭USG6000V的人也适合手里有台USG6000系列设备、需要把业务需求翻译成安全策略的运维。2. 安全策略的匹配模型IP地址和端口在USG6000V里是怎么被拆开的配置之前我建议你先花十分钟搞清楚USG6000V的安全策略是怎么处理报文的否则后面加策略就是撞运气。2.1 一条策略的五个要素地址和端口只是其中两项在USG6000V上一条完整的安全策略至少要包含这五类信息源安全区、目的安全区、源/目的地址、协议与端口、动作。很多人第一次配的时候只盯着IP和端口把source-zone和destination-zone当成“可选项”这是最大的误解。接口必须划入某个安全区域策略里的源/目的区域必须和流量实际进出口一致否则规则连匹配的机会都没有。举例来说内网主机用192.168.1.100访问服务器10.1.1.100内网口在trust区域服务器口在untrust区域策略里就应该写source-zone trust、destination-zone untrust。如果写成untrust到trust这条策略永远不会被命中因为报文根本不会从untrust口进来。再看地址和端口。在命令行里你可以直接在策略下写source-address 192.168.1.0 mask 24也可以先定义地址对象再被引用。端口其实是“服务”的一部分标准说法是“服务对象”必须指定协议类型比如TCP、UDP然后才是端口号。协议不写防火墙不知道你要放行的是TCP还是UDP这也是“端口加上了还不通”的一个常见来源。我一般建议先创建对象再建策略原因有两个一是地址和端口对象可以在多条策略里复用改需求时只改对象二是策略列表里显示的是对象名排错时一眼能看出这条策略在管哪段IP、哪个端口。下面的小节会说对象怎么做这里先记住“IP端口”只是策略的一部分不是全部。2.2 首包建会话后续包查会话表改策略不能“秒生效”USG6000V是状态防火墙处理新连接时首包会去做安全策略匹配匹配通过后生成一条会话表项同一条连接后续的数据包不再重复匹配策略而是直接查会话表转发。这个机制对性能是好事但会带来一个很实际的问题你在防火墙上改了策略已经存在的连接不会立刻按新策略执行它们还走旧会话。我记得有一次在内网测试环境里把一条策略的目的端口从8080改成443改完立刻从客户端发起新连接443是通的但旧的8080连接还在用netstat看依然存在。当时一度以为防火墙策略没有“热更新”后来才想起来是先有会话后有转发旧连接要等老化或手动清会话。所以在配置基于IP和端口的安全策略时我养成了一个习惯每次改动涉及源地址、目的地址、端口、动作或区域测试前先执行reset session清理相关会话或者至少把测试主机对应IP的会话筛出来清掉。这个命令放在排错章节详细说。2.3 默认策略与同区域互访地址端口之外的第三个“隐形规则”你可能会想我只放行了一条“IP端口”的permit规则那其他流量是不是自动被拒绝在USG6000V上不同安全区域之间的报文在没有匹配到任何安全策略时默认是丢弃的所以不需要显式写“拒绝所有”也能达到默认拒绝的效果。但要注意两个边界一个是同区域互访一个是local区域。先说同区域互访。某些USG版本和虚拟系统里同一安全区域内的两台主机默认可能放行也可能不放行取决于系统版本和默认安全策略模板。不要拿“网上说同区域默认通”来赌业务最稳妥的办法是在策略里显式写一条“同区域允许指定IP端口”的规则或者先抓包确认默认行为。再说local区域。防火墙自己产生的流量比如你从内网SSH登录防火墙管理口或者防火墙主动发起连接走的是local区域和对应接口区域的交互普通的安全策略不一定能管到。所以当你发现“管理IP能ping通但管理端口不通”的时候先别急着怀疑IP地址和端口很可能是local区域的策略或接口的service-manage设置没放开。这三块搞明白了再继续配置就不容易翻车。下一步我们把IP和端口变成对象把“地基”打好。3. 地址和端口怎么“变成”对象配置IP与端口服务前的三步准备在配置安全策略之前我一般会按顺序做三件事检查接口IP和区域、创建地址对象、创建服务对象。下面分别讲。3.1 先给USG6000V的接口配上IP确认虚拟网卡和网段在一条船上USG6000V通常在eNSP或VMware里跑。如果你用VMware第一步不是进防火墙敲策略而是确认虚拟网卡的网段和USG6000V的管理口IP在同一子网。比如你在VMware里给USG6000V添加了一块VMnet2网卡网卡subnet是192.168.50.0/24那防火墙GE0/0/0就应该配成192.168.50.x不能在192.168.1.0/24里乱配否则策略再对也没有接收链路。命令行下我一般这样配接口IP# 进入USG6000V接口视图GE0/0/0作为管理口/内网口 interface GigabitEthernet0/0/0 ip address 192.168.50.254 255.255.255.0 service-manage ping permit quit # 查看接口IP和状态确认没有admin down display ip interface brief # 查看接口划在哪个安全区域后面写策略要用到这个区域名 display zone参数说明ip address后面的地址和掩码必须和虚拟机网卡在同一网段否则报文根本过不来service-manage ping permit是允许这台防火墙的接口响应ping这是USG设备上比较特殊的控制项不影响转发的安全策略只影响防火墙自身被ping。display zone输出里能看到GigabitEthernet0/0/0属于哪个zone你在命令行里看到的zone名字就是后面策略里的source-zone或destination-zone。如果是在VMware里还需要检查虚拟机网卡是否改成了“仅主机模式”或“自定义VMnet2”以及宿主机上对应虚拟网卡的IP有没有冲突。你可以用ipconfig或ifconfig查看宿主机本机的IP地址确认192.168.50网段只有一个地址分配来源避免IP地址冲突导致后面策略验证时忽通忽断。这一步是很多实验翻车的起点——IP和端口策略写得很严谨但物理链路压根不在同一网图里。3.2 定义IP地址对象用“对象”代替写上几十条裸IP如果你只有一台服务器和一个固定的网段其实可以直接在策略里写源地址和目的地址但当规则增多、IP要跨多条策略复用时对象才是正路。在USG6000V的Web界面里路径是“对象 地址管理 地址组/地址”新建一个“地址”或“地址组”类型选“IPv4地址”然后把网段填进去。命令行也有对应的地址对象命令需要注意的是不同版本字段差异比较大在设备上输到一半用?看提示最稳。我常见的一种写法是# 创建地址对象名字叫server-net保存两个内网段 ip address-set server-net type object address 0 192.168.10.0 mask 24 address 1 192.168.20.0 mask 24 quit # 查看地址对象内容确认掩码和范围没有写错 display ip address-set name server-net这段命令里的address 0、address 1是序号不是IP的一部分后面的IP和掩码才是真正范围。type object表示这是一个地址对象而不是一个空组名。如果这条命令在你设备上不支持不要硬记直接用Web界面创建对象然后复制对象名去策略里引用。我建议做一次“地址对象体检”重点看掩码。很多人的坑是把255.255.255.0写成24或者把两个连续网段压成一个汇总段导致地址对象比业务实际范围大了一圈最后防火墙放行了一些本不该放行的IP这在安全审计时非常难看。下一小节讲端口对象原则是一样的先定义后引用。3.3 定义端口/服务对象TCP、UDP和源端口别混在一起端口在USG6000V的安全策略里不是单独存在的字段而是“服务对象”的一部分。新建服务对象时核心参数有三个协议类型、目的端口、源端口。绝大多数业务需求只关心“目的端口”比如访问Web就放行TCP 443访问DNS就放行UDP 53。如果你把TCP和UDP搞混或者把目的端口写到源端口里策略就会像没写一样。Web界面里路径是“对象 服务 新建服务”选TCP目的端口写443。可以再建一个UDP 123的服务对象用于NTP。命令行里如果你不想走服务对象直接写在策略规则里也可以下一章会展示。这里有个容易踩的边界防火墙策略里的“端口”通常指目的端口但这不代表源端口没用。比如你限制内网某些主机只能从本机50000端口出去访问外部TCP 443就需要额外配置源端口。不过一般业务不建议限制源端口因为很多客户端端口是随机生成的强行限制会导致连接建立失败。这个区别一定要在服务对象定义时看清尤其是从老防火墙配置迁移过来的人习惯把源端口和目的端口都写上结果在USG6000V上反而成了障碍。做完接口IP、地址对象、服务对象这三步准备你手里就有了“干净的积木”后面写策略就是往规则里拼积木。4. 把规则写进去CLI和Web两种方式落地一条IP端口安全策略现在开始正式配置。我用一个典型场景内网192.168.1.0/24主机要访问服务器10.1.1.100的TCP 443端口防火墙要把这项访问放行其他内网到服务器的访问默认拒绝。这个需求正好是“基于IP地址和端口的安全策略”的最小完整样例。4.1 CLI方式允许内网访问服务器TCP 443的一条规则命令行配置前先确认两件事GE0/0/0在trust区域GE0/0/1在untrust区域服务器IP是10.1.1.100。然后进安全策略视图配置security-policy rule name permit_web source-zone trust destination-zone untrust source-address 192.168.1.0 mask 24 destination-address 10.1.1.100 mask 32 service protocol tcp destination-port 443 action permit quit这条规则的含义是从trust区域进入、从untrust区域出去、源IP属于192.168.1.0/24、目的IP是10.1.1.100、协议是TCP、目的端口是443的流量允许通过。参数说明源地址那里用的是mask 24写网段目的地址是单个IP所以是mask 32。如果服务器有多个IP或者你希望用一个地址对象替代可以把source-address后面换成对象引用。service protocol tcp destination-port 443是这条策略的核心“端口”部分协议不写UDP就表示只匹配TCP 443UDP 443不会被放行。在这个场景下其他未匹配到这条permit规则的流量按前面说的默认动作会被丢弃所以不需要额外再写一条deny all。但为了审计方便有些团队喜欢在最后加一条显式deny规则记录日志。显式deny规则要放在“宽泛规则”之前还是之后USG6000V的策略匹配顺序是先匹配先生效如果你的需求是“除了这个网段其他全都拒绝”可以只保留permit在前面让后面默认deny兜底。如果一定要写deny我一般这样放security-policy rule name deny_other_net source-zone trust destination-zone untrust destination-address 10.1.1.100 mask 32 service protocol tcp destination-port 443 action deny rule name permit_web source-zone trust destination-zone untrust source-address 192.168.1.0 mask 24 destination-address 10.1.1.100 mask 32 service protocol tcp destination-port 443 action permit quit这样把deny放在permit前面是可以工作的但会让策略意图变得难懂。我个人的习惯是“精确放行放前面宽泛拒绝放后面”除非业务上要求“源IP不在名单里的一律拒绝”。不要照搬网上的顺序模板先想清楚你写的策略是“白名单思想”还是“黑名单思想”。4.2 Web方式拖拽地址和端口之后一定要点“提交”如果你面对的是图形化管理的设备Web界面会更直观。进入“策略 安全策略”新建一条规则填写名称。源安全区选trust目的安全区选untrust源地址选之前创建好的地址对象或直接输入192.168.1.0/24目的地址输入10.1.1.100或选择对象服务选择“TCP 443”或你自定义的服务对象动作选允许开启日志开关。配置完成后很多人在eNSP里就只点了一下“确定”然后关闭页面。USG设备较新版本里Web界面修改安全策略后页面上方通常有一个“提交”按钮不提交的话配置只停留在临时变更里运行配置没有更新。我见过不少新手就卡在这个“灵异现象”上策略明明在列表里display却不显示流量也不通。提示Web界面改动安全策略后页面上方出现“提交”按钮时一定要点否则只是修改了草稿没有写进运行配置。在Web界面上改完策略后如果想回到命令行核对可以执行display current-configuration在输出里找security-policy段把实际生效的策略抓出来看。Web界面有时候会把用户输入的裸IP自动转成某种内部对象命令行的显示形式不一定和你输入的一样这是正常现象别看到不一样就以为配错了。4.3 策略顺序与会话参数决定“通不通”和“稳不稳”策略顺序这个问题在只有一两条规则时看不出影响规则超过五条就会成为主坑。USG6000V默认按配置顺序匹配display security-policy rule all里每条规则有一个序列号。后面加的规则排在末尾如果前面有一条宽泛的permit all后面的精确deny永远不会被命中。调整顺序在Web界面是拖拽命令行用rule move例如把permit_web移到deny_other_net前面。调完同样要注意会话问题老连接还是会按旧顺序走。端口相关的稳定性参数里最常碰到的是会话老化时间。数据库连接、websocket长连接这类长时间不交互的连接如果防火墙老化时间设的比业务保活时间短中间会出现“断连”但TCP没有正常结束。USG6000V默认会话老化时间对大部分HTTP业务够用但对长连接要单独调。在Web界面“系统 会话管理”里能找到TCP老化时间一般调到3600秒起具体看业务心跳间隔。命令行调法各版本差异大建议用Web。另外如果服务器上同时部署了多个端口例如443和8443都提供服务别天真地认为放行了443就“顺便”放行8443。防火墙按端口精确匹配每开放一个端口就要对应一条服务对象或一条service配置。这里也能看到先建服务对象的好处把443、8443放进一个服务对象组策略里引用一次后续加端口只改对象。5. 避坑与排查IP地址、端口和安全策略最常翻车的5个现场下面的每一条都是我或认识的人在实际配置里踩过的按“现象 → 原因 → 解决”写可以直接对照排错。5.1 source-zone填错导致策略“没生效”先查display zone现象内网主机访问服务器的443端口不通策略里明明放行了源IP和目的IP抓包看到内网主机发出的SYN包到了防火墙接口但防火墙没有转发到服务器。原因规则里的source-zone和destination-zone与接口实际所属区域对不上。比如内网接口其实划在dmz区域你在策略里写source-zone trust报文从dmz进来去trust区域查策略时根本看不到这条规则于是丢包。这是最常见、最难排查的“策略没生效”因为它不是端口问题也不是IP问题而是区域问题。解决先执行display zone确认哪个接口在哪个区域再display security-policy rule all看现有规则里的区域。把规则里的source-zone改成实际入接口区域destination-zone改成出接口区域重新测试。如果设备启用了虚拟系统还要注意是在哪个虚拟系统里配置的规则。5.2 改了策略不清会话老连接仍然按旧规则转发现象把允许端口从8080改成443后新客户端访问443正常老客户端访问8080还是通或者把某条deny策略加进去已经建立的连接还是能继续跑。原因前面说过USG6000V对已经建立的连接走会话表不会重新匹配策略。你改策略只影响“下一个新连接的首包”不影响已有会话。解决在用户视图执行reset session可以把整张会话表清掉但我建议先按IP筛# 清理指定源IP相关的全部会话让这些主机的下一次访问重新走策略匹配 reset session source-ip 192.168.10.100参数说明source-ip后面写你要测试的主机IP。清完后让客户端重新发起连接再用display firewall session table查看确保新会话已经建立。这个操作对生产环境影响小只影响那台测试主机的连接。5.3 服务对象里的源端口和目的端口搞混端口放行了还是不匹配现象规则里写了TCP 8080客户端从局域网访问服务器8080不通但服务器本机访问8080是通的把策略改成permit all之后立刻能通。原因服务对象创建时端口填在了“源端口”字段而不是“目的端口”。对于外部客户端访问服务器这个方向防火墙匹配的是目的端口如果对象里只有源端口8080入方向的报文目的端口并不是8080策略就匹配不上。还有一种情况是协议选错例如服务器用UDP 8080你配了TCP 8080。解决回到对象管理里检查服务对象定义确认协议类型和“目的端口”字段。如果策略里直接写service protocol tcp destination-port 8080就没有这个歧义因为命令已经指明destination-port。多端口场景建议用服务对象组并保证组里每个服务对象都是“目的端口”语义。如果服务器本地端口被占也会出现“策略放行了但连接不上”的现象这属于应用层问题不要在防火墙上死磕。先用netstat -anp确认端口确实在被监听再回头查防火墙。5.4 地址对象掩码写错部分IP被静默拒绝现象同一网段内一部分主机能访问服务器另一部分不能两者IP看起来都很接近。策略是permit没有deny规则日志里被丢弃的报文也看不到太多信息。原因地址对象在定义时掩码写宽了或写窄了。比如业务网段是192.168.1.128/25你在地址对象里填了192.168.1.0 mask 25覆盖范围变成192.168.1.0-127真正业务网段的后半段128-255不在对象里自然被默认拒绝。反过来如果是安全策略里用了汇总地址可能把不该放行的网段也放进来。解决用display ip address-set name xxx看地址对象实际解析出来的网段范围或者直接在Web界面的地址管理里检查。有些版本还支持display ip address-set all列出所有对象。把掩码改回业务真实网段再配合第5.2条重置相关会话。5.5 local区域的流量不走普通安全策略管理口“不通”的另一层原因现象内网主机能访问业务端口但SSH登录不了防火墙自身的管理口或者Web管理界面打不开。明明在安全策略里放行了管理地址和端口依然不行。原因访问防火墙自身的流量源/目的区域里有一个是local。比如从trust区域SSH到防火墙的GE0/0/0流量是从trust到local普通trust到untrust的策略管不到。另外接口视图下的service-manage设置也会限制防火墙自身响应哪些服务即使安全策略放行了接口没开service-manage一样不通。解决需要单独配置local区域相关策略或者在接口视图开放对应服务。常见做法是# 在接口视图开放HTTP/HTTPS管理并允许ping interface GigabitEthernet0/0/0 service-manage http permit service-manage https permit service-manage ping permit quit # 如果有local区域策略再单独放行trust到local的管理访问 security-policy rule name permit_manage source-zone trust destination-zone local source-address 192.168.1.0 mask 24 service protocol tcp destination-port 22 action permit quit参数说明destination-zone local是关键别写成untrust。22是SSH端口管理界面是443HTTPS或80HTTP按需保留。这样管理口不通的坑就解开了。6. 验证策略生效的两种命令和把“IP端口”策略升级成“时间对象”策略6.1 用会话表核对流量是否真的走了策略配置完以后别只盯着策略列表看要看实际会话。我最常用的验证命令是# 查看某台内网主机的会话确认连接建立、端到端转发正常 display firewall session table source-ip 192.168.1.100 # 核对运行配置里这条策略的存在和参数 display security-policy rule name permit_webdisplay firewall session table能看到这条连接的源/目的IP、端口和状态如果会话表里没有说明包还没到防火墙或者被更早的规则丢弃。display security-policy rule name用来核对规则里的区域、地址、服务、动作有没有写错。命中次数在各版本里不一定都在命令行显示Web界面的策略列表里通常会带一个“命中次数”列排错时先用Web判断“哪条规则在捡流量”。我自己的习惯是先看会话再看策略最后才抓包。因为会话表最能说明“防火墙到底有没有放行这个连接”省去很多猜疑。6.2 给IP端口策略加上时间计划从“通”升级到“可控”把IP和端口固定住以后下一步是做更细的控制。USG6000V支持时间计划在Web里新建一个“工作时间”对象然后在策略里引用。比如允许内网访问服务器443但只在周一到周五9点到18点生效。命令行下需要先配时间计划再在安全策略里绑定。不同版本命令不一样Web操作更简单对象 时间计划 新建选周期方式勾选工作日和时段然后回到安全策略在“时间段”字段里选这个计划。这样原本的“基于IP地址和端口的安全策略”就升级成了“基于IP端口时间的策略”。再往上还可以结合用户认证和应用识别但那些依赖License和更完整的USG功能包硬件型号不同能力差异很大。USG6000V作为虚拟设备主要适合练手和验证配置逻辑不建议拿它跑生产大数据流量。最后说个我自己的教训。前几年给客户迁移防火墙我把一组地址对象从旧设备导入到USG6000V看着IP和端口都没问题但服务器始终不通。折腾了一个多小时最后在会话表里发现流量去了旧服务器的IP原来是策略里目的地址引用了旧地址对象而新服务器IP我临时用裸地址写在另一条规则里两条规则顺序又不对。那一次之后我养成了一个习惯每次改完基于IP和端口的策略先display security-policy rule all看规则顺序再display firewall session table看实际连接目标有怀疑就先重置会话别凭记忆猜。这个习惯帮我省了不少时间。希望帮到你。本文还有配套的精品资源点击获取