华为防火墙安全策略

1初识安全策略

   小伙伴们,我们试想下如果防火墙把所有流量都拒绝了,内部用户将无法畅游网络,外部合法用户将无法访问内部资源。因此我们需要配置防火墙的一个特性,让它更好的实现防火墙的功能,这个特性就是安全策略。平时我们上班乘坐地铁,出差乘坐高铁或飞机,在这三个场所中都会有蓝色的标志“Security Check”,旁边站着一个工作人员“安检员”。他的作用就是检查乘客随身携带的物品是否安全,如安全放行通过,如不安全,拒绝通过。回顾下防火墙的作用是保护特定的网络免受“不信任”的网络的攻击和入侵,但还要允许网络之间进行合法的通信。安全策略的作用类似于“安检员”对通过防火墙的网络流量和抵达自身流量进行安全检查,满足安全策略条件的流量执行允许的动作才能通过防火墙。

2基本概念

华为防火墙安全策略

       上图所示,PC位于Untrust区域,HTTP Server位于Trust区域,假设我们希望PC可以访问HTTP Server,配置的策略应该是允许源区域Untrust,目的区域Trust,源IP地址202.100.1.100,目的IP地址192.168.1.100,源端口Any,目的端口是80,应用协议是TCP。

配置中可以看出防火墙安全策略由两大部分组成:

a.条件:防火墙将报文中携带的信息与条件逐一对比,从而来判断报文是否匹配。

b.动作:允许(permit)和拒绝(deny),一条策略只能有一个动作。

华为防火墙安全策略

      如上图中每条策略中都包含了多个匹配条件,如安全区域、用户、应用等。各个匹配条件之间是“与”的关系,报文的属性与各个条件必须全部匹配,才认为该报文匹配这条规则。也就是说报文中的信息都要满足所有字段才能匹配。一个匹配条件中可以配置多个值,多个值之间是“或”的关系,报文的属性只要匹配任意一个值,就认为报文的属性匹配了这个条件。比如源区域有2个,目的IP有2个,那么这些匹配项之间是“或”的关系,也就是说只要报文的信息满足其中一项,就证明匹配了该条件。

安全策略配置完成后,PC就可以正常访问HTTP Server了,无需放行返回流量的安全策略,防火墙默认是基于状态化进行转发的,所以返回流量匹配会话表就转发了。

 

3匹配顺序

      安全策略之间是存在匹配顺序的,防火墙会按照从上到下的顺序逐条查找相应安全策略。如果报文命中了某一条安全策略,就会执行该策略的动作,不会再继续向下查找;如果报文没有命中某一条安全策略,则会继续向下查找。

     基于安全策略的匹配顺序,建议我们在配置安全策略时,应该遵循“先明细,后粗犷”的原则。比如我们配置两条trust--untrust安全策略,分别为192.168.0.0/24网段报文通过,192.168.1.1报文拒绝通过,防火墙在查找安全策略时,第一条策略192.168.0.0/24网段会匹配允许通过,第二条策略192.168.1.1报文永远也不会匹配到,这样我们实现控制的目的也没有达到。

      如果还没有找到对应的安全策略,则会匹配默认的安全策略,动作为拒绝。默认安全策略的名字叫default,条件为any,动作为拒绝。大部厂商的安全策略都是这样定义的,缺省的为拒绝所有。个人认为如果小伙伴们在排错过程中,快速定位安全策略的问题,可以把默认策略动作配置为允许。如果报文可以通过,证明安全策略配置问题,然后配置正确的安全策略。非常不建议把防火墙安全策略配置为允许所有,因为这样存在极大的安全风险,防火墙也失去了意义

      华为防火墙安全策略控制可分三点:1.控制抵达自身和自身发起的流量,比如从外部网管防火墙,应该是untrust—>local之间的网管流量,如SSH、Telnet、HTTPS等。在比如防火墙要网管其它网络设备,应该是local—>到其它区域之间的网管流量  2.控制区域间的流量,比如untrust—>trust,trust—>dmz  3,控制区域内的流量,比如trust两台PC,我们不希望它们之间进行访问,那就是trust—> trust。

4安全配置案例

华为防火墙安全策略

组网需求:

a.仅要求互联网到Untrust接口ICMP和Telnet流量。

b.除192.168.1.2/32外,允许所有Trust主机可以访问互联网。

c.Untrust用户在周一至周五上班时间可以访问所有DMZ服务器资源。

d.Trust区域内PC1不能访问PC3资源。

 

5实验配置

#进入接口视图,启用管理功能。

[NGFW] int g1/0/1

[NGFW-GigabitEthernet1/0/1]service-manage enable

[NGFW-GigabitEthernet1/0/1]service-manage ping permit

[NGFW-GigabitEthernet1/0/1]service-manage telnet permit

注:对于抵达防火墙自身的流量建议接口开启。

#进入安全策略视图,配置相应策略

[NGFW]security-policy               

[NGFW-policy-security]rulename rule1

[NGFW-policy-security-rule-rule1]source-zone trust   //可以指多个区域

[NGFW-policy-security-rule-rule1]destination-zone untrust   //如果域内策略,目的为相同区域

[NGFW-policy-security-rule-rule1]source-address 192.168.1.1 32

[NGFW-policy-security-rule-rule1]action deny

#创建时间范围,调用到安全策略

[NGFW]time-range worktime

[NGFW-time-range-worktime]period-range 09:00:00 to 17:00:00 working-day

[NGFW-policy-security]rulename rule3

[NGFW-policy-security-rule-rule3]time-range worktime

#其它安全策略同理

  • 测试

需求一、

<Untrust>telnet 202.100.1.10

Loginauthentication

Username:user1

Password:

<NGFW>

<Untrust>ping 202.100.1.10

PING 202.100.1.10:56  data bytes, press CTRL_C to break

Reply from202.100.1.10: bytes=56 Sequence=1 ttl=255 time=20 ms

Reply from 202.100.1.10: bytes=56 Sequence=2 ttl=255 time=20 ms

需求二、

 <PC1>ping 202.100.1.1

PING 202.100.1.1: 56  data bytes, press CTRL_C to break

Request time out

Request time out

Request time out

<PC2>ping 202.100.1.1

PING 202.100.1.1: 56  data bytes, press CTRL_C to break

 Reply from 202.100.1.1: bytes=56 Sequence=1ttl=254 time=40 ms

 Reply from 202.100.1.1: bytes=56 Sequence=2ttl=254 time=20 ms

 Reply from 202.100.1.1: bytes=56 Sequence=3ttl=254 time=20 ms

 Reply from 202.100.1.1: bytes=56 Sequence=4ttl=254 time=10 ms

需求三、

<Untrust>ping 172.16.1.1

PING 172.16.1.1: 56  data bytes, press CTRL_C to break

Reply from 172.16.1.1: bytes=56Sequence=1 ttl=254 time=30 ms

Reply from 172.16.1.1: bytes=56 Sequence=2ttl=254 time=20 ms

Reply from 172.16.1.1: bytes=56Sequence=3 ttl=254 time=20 ms

Reply from 172.16.1.1: bytes=56Sequence=4 ttl=254 time=10 ms

Reply from 172.16.1.1: bytes=56 Sequence=5ttl=254 time=20 ms

 <NGFW>display clock

2017-06-0618:01:30

Tuesday

<Untrust>ping 172.16.1.1

 PING 172.16.1.1: 56  data bytes, press CTRL_C to break

 Request time out

 Request time out

 Request time out

 Request time out

 需求四、

 <PC3>ping192.168.2.1

PING 192.168.2.1: 56  data bytes, press CTRL_C to break

 Request time out

 Request time out

 Request time out

Request time out

<PC3>ping192.168.1.1

PING 192.168.1.1:56  data bytes, press CTRL_C to break

Reply from 192.168.1.1: bytes=56 Sequence=1ttl=255 time=1 ms 

Reply from 192.168.1.1: bytes=56 Sequence=1ttl=255 time=1 ms

Reply from 192.168.1.1: bytes=56 Sequence=1ttl=255 time=1 ms

注:默认域内的安全策略是允许的。

上一篇:Python中and和or的特殊用法


下一篇:Leetcode 剑指 Offer 56 - I / 56 - II