华为交换机封禁高危端口和同时允许例外IP访问,这里有2种方法。
一、使用两个独立的流策略:一个策略封禁高危端口;另一个策略专门允许例外IP。封禁高危端口规则+ 流行为deny;允许例外IP规则+ 流行为permit。
好的,使用两个独立的流策略来实现封禁高危端口同时允许例外IP,是更清晰和可靠的方法。以下是详细的华为交换机配置:
🛠️ 详细配置方案
第一步:创建封禁高危端口的ACL和流策略
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# 创建ACL,只定义要封禁的端口(不包含例外规则) <HUAWEI> system-view [HUAWEI] acl number 3000 [HUAWEI-acl-adv-3000] rule 0 deny tcp destination-port eq 445 [HUAWEI-acl-adv-3000] rule 5 deny udp destination-port eq 445 [HUAWEI-acl-adv-3000] rule 10 deny tcp destination-port eq 3389 [HUAWEI-acl-adv-3000] rule 15 deny udp destination-port eq 3389 [HUAWEI-acl-adv-3000] rule 20 deny tcp destination-port eq 135 [HUAWEI-acl-adv-3000] rule 25 deny udp destination-port eq 135 [HUAWEI-acl-adv-3000] rule 30 deny tcp destination-port eq 137 [HUAWEI-acl-adv-3000] rule 35 deny udp destination-port eq 137 [HUAWEI-acl-adv-3000] rule 40 deny tcp destination-port eq 138 [HUAWEI-acl-adv-3000] rule 45 deny udp destination-port eq 138 [HUAWEI-acl-adv-3000] rule 50 deny tcp destination-port eq 139 [HUAWEI-acl-adv-3000] rule 55 deny udp destination-port eq 139 [HUAWEI-acl-adv-3000] quit # 创建流分类匹配高危端口 [HUAWEI] traffic classifier block-high-risk-port [HUAWEI-classifier-block-high-risk-port] if-match acl 3000 [HUAWEI-classifier-block-high-risk-port] quit # 创建流行为-拒绝 [HUAWEI] traffic behavior deny-action [HUAWEI-behavior-deny-action] deny [HUAWEI-behavior-deny-action] quit # 创建流策略-封禁高危端口 [HUAWEI] traffic policy block-high-risk-port [HUAWEI-trafficpolicy-block-high-risk-port] classifier block-high-risk-port behavior deny-action [HUAWEI-trafficpolicy-block-high-risk-port] quit |
第二步:创建允许例外IP的ACL和流策略
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# 创建ACL,定义要允许的例外IP [HUAWEI] acl number 3001 [HUAWEI-acl-adv-3001] rule 5 permit ip source 192.168.0.0 0.0.255.255 # 测试例子IP段 [HUAWEI-acl-adv-3001] rule 10 permit ip source 192.172.52.16 0 # 测试例子IP [HUAWEI-acl-adv-3001] quit # 创建流分类匹配例外IP [HUAWEI] traffic classifier allow-trusted-ip [HUAWEI-classifier-allow-trusted-ip] if-match acl 3001 [HUAWEI-classifier-allow-trusted-ip] quit # 创建流行为-允许 [HUAWEI] traffic behavior permit-action [HUAWEI-behavior-permit-action] permit [HUAWEI-behavior-permit-action] quit # 创建流策略-允许例外IP [HUAWEI] traffic policy allow-trusted-ip [HUAWEI-trafficpolicy-allow-trusted-ip] classifier allow-trusted-ip behavior permit-action [HUAWEI-trafficpolicy-allow-trusted-ip] quit |
第三步:全局下发两个流策略
|
1 2 3 4 5 6 |
# 先下发允许策略(优先级更高) [HUAWEI] traffic-policy allow-trusted-ip global inbound # 再下发封禁策略 [HUAWEI] traffic-policy block-high-risk-port global inbound |
🎯 执行效果
| 流量类型 | 结果 |
|---|---|
来自测试例子 192.168.0.0/16和192.172.52.16/32 的任何流量 |
✅ 允许通过(匹配允许策略) |
| 其他IP访问TCP和UDP的445、3389、135、137、138、139端口 | ❌ 被拒绝(匹配封禁策略) |
💡 关键优势
- 策略清晰分离:封禁和允许逻辑完全独立
- 优先级明确:先下发的允许策略优先级更高
- 易于维护:修改例外IP或封禁端口时互不影响
- 避免冲突:不会出现单个流策略中动作覆盖的问题
这样配置后,测试例子192.168.0.0/16和192.172.52.16/32 就可以正常访问所有端口,而其他IP访问高危端口会被拒绝。
二、使用一个独立的流策略:同时封禁高危端口和允许例外IP。(封禁高危端口规则在前,允许例外IP规则在后)+ 流行为permit。
🛠️ 详细配置方案(推荐)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# ACL保持不变 <HUAWEI> system-view [HUAWEI] acl number 3000 [HUAWEI-acl-adv-3000] rule 0 deny tcp destination-port eq 445 [HUAWEI-acl-adv-3000] rule 5 deny udp destination-port eq 445 [HUAWEI-acl-adv-3000] rule 10 deny tcp destination-port eq 3389 [HUAWEI-acl-adv-3000] rule 15 deny udp destination-port eq 3389 [HUAWEI-acl-adv-3000] rule 20 deny tcp destination-port eq 135 [HUAWEI-acl-adv-3000] rule 25 deny udp destination-port eq 135 [HUAWEI-acl-adv-3000] rule 30 deny tcp destination-port eq 137 [HUAWEI-acl-adv-3000] rule 35 deny udp destination-port eq 137 [HUAWEI-acl-adv-3000] rule 40 deny tcp destination-port eq 138 [HUAWEI-acl-adv-3000] rule 45 deny udp destination-port eq 138 [HUAWEI-acl-adv-3000] rule 50 deny tcp destination-port eq 139 [HUAWEI-acl-adv-3000] rule 55 deny udp destination-port eq 139 [HUAWEI-acl-adv-3000] rule 60 permit ip source 192.168.0.0 0.0.255.255 # 测试例子IP段 [HUAWEI-acl-adv-3000] rule 65 permit ip source 192.172.52.16 0 # 测试例子IP [HUAWEI-acl-adv-3000] quit # 创建流分类 [HUAWEI] traffic classifier block-high-risk [HUAWEI-classifier-block-high-risk] if-match acl 3000 [HUAWEI-classifier-block-high-risk] quit # 关键修改:流行为使用permit(让ACL的判决生效) [HUAWEI] traffic behavior permit-ip [HUAWEI-behavior-permit-ip] permit # 这个permit是让ACL的deny/permit生效 [HUAWEI-behavior-permit-ip] quit # 创建流策略 [HUAWEI] traffic policy block-high-risk [HUAWEI-trafficpolicy-block-high-risk] classifier block-high-risk behavior permit-ip [HUAWEI-trafficpolicy-block-high-risk] quit # 下发策略 [HUAWEI] traffic-policy block-high-risk global inbound |
🎯 执行效果
执行逻辑:
- 来自测试例子
192.168.0.0/16的流量 → 匹配rule 60→ ACL判决:permit → 流行为执行:permit → 结果:被允许 ✅ - 来自测试例子
192.172.52.16/32的流量 → 匹配rule 65→ ACL判决:permit → 流行为执行:permit → 结果:被允许 ✅ - 其他IP访问445等高危端口端口 → 匹配rule 0、5、10 … 50、55 → ACL判决:deny → 流行为执行:permit → 结果:被拒绝 ✅
效果:正常工作!⭕
维护注意事项:
如果需要再添加一条封禁高危端口指令,根据ACL规则的执行机制,规则按照编号从小到大排序和执行。 因此添加的封禁高危端口指令的rule规则编号一定要小于允许例外IP的最小编号:
本例中,允许例外IP:
|
1 2 3 |
rule 60 permit ip source 192.168.0.0 0.0.255.255 #测试例子IP段 rule 65 permit ip source 192.172.52.16 0 # 测试例子IP |
因此你准备添加的封禁高危端口指令rule 规则编号一定要小于编号60,才能有效果;
同理,如果需要再添加一条允许例外IP指令,则添加的允许例外IP指令规则编号一定要大于封禁高危端口规则的最大的编号。
三、思考经典问题
问题:一种情况先允许特定IP,放在acl 3000最前面,流行为使用deny;另外一种情况,允许特定IP放在acl 3000最后面,流行为使用permit吗?
这是一个很好的问题!这涉及到ACL规则顺序和流行为配合的关键理解。
规则位置与流行为的配合
情况一:允许规则在前 + 流行为deny
|
1 2 3 4 5 6 7 8 9 |
# ACL 3000 rule 5 permit ip source 192.168.89.53 0 # 允许特定IP在前 rule 10 deny tcp destination-port eq 445 # 拒绝规则在后 rule 15 deny tcp destination-port eq 3389 # 流行为 [HUAWEI] traffic behavior deny-high-risk [HUAWEI-behavior-deny-high-risk] deny # 流行为使用deny |
执行逻辑:
- 来自192.168.89.53的流量 → 匹配rule 5 → ACL判决:permit → 流行为执行:deny → 结果:被拒绝
- 其他IP访问445端口 → 匹配rule 10 → ACL判决:deny → 流行为执行:deny → 结果:被拒绝
问题:192.168.89.53的流量也被拒绝了!❌
情况二:允许规则在后 + 流行为permit
|
1 2 3 4 5 6 7 8 9 |
# ACL 3000 rule 5 deny tcp destination-port eq 445 # 拒绝规则在前 rule 10 deny tcp destination-port eq 3389 rule 15 permit ip source 192.168.89.53 0 # 允许规则在后 # 流行为 [HUAWEI] traffic behavior permit-high-risk [HUAWEI-behavior-permit-high-risk] permit # 流行为使用permit |
执行逻辑:
- 来自192.168.89.53的流量 → 匹配rule 15 → ACL判决:permit → 流行为执行:permit → 结果:被允许 ✅
- 其他IP访问445端口 → 匹配rule 5 → ACL判决:deny → 流行为执行:permit → 结果:被拒绝 ✅
效果:正常工作!⭕
正确的组合方式
| ACL规则顺序 | 流行为动作 | 效果 | 推荐度 |
|---|---|---|---|
| 允许规则在前 | deny | 192.168.89.53也被拒绝 | ❌ 不推荐 |
| 允许规则在前 | permit | 所有流量都被允许 | ❌ 危险 |
| 拒绝规则在前 | permit | 正常封禁+例外放行 | ✅ 推荐 |
| 拒绝规则在前 | deny | 所有流量都被拒绝 | ❌ 不推荐 |
总结
正确的配置应该是:
|
1 2 3 4 5 6 7 8 |
# ACL:拒绝规则在前,允许规则在后 rule 5 deny tcp destination-port eq 445 rule 10 deny tcp destination-port eq 3389 rule 15 permit ip source 192.168.89.53 0 # 允许规则放在最后 # 流行为:使用permit [HUAWEI-behavior-high-risk] permit |
这样配置的原因是:流行为的permit作用是”执行ACL的判决结果”,而不是”允许所有流量”。
- ACL判决
permit+ 流行为permit= 允许 - ACL判决
deny+ 流行为permit= 拒绝
所以这是正确的:允许规则放在ACL最后面,流行为使用permit是最佳方案。