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
注:默认域内的安全策略是允许的。