1.3.5 服务和服务组
服务是一个或多个应用协议的集合,由协议类型、源端口、目的端口等信息来指定。服务组是服务的集合,服务组的成员可以是服务,也可以是服务组。
防火墙可以根据服务和服务组识别常用的应用协议。如果数据流量的协议类型和端口号符合服务的条件,就会被认为是指定应用协议的流量。在安全策略中,指定服务或服务组是非常常见和必要的。
1. 自定义服务
防火墙默认提供了常见的服务,即预定义服务,例如HTTP、FTP、Telnet、DNS等。在现实网络中,如果协议使用端口与预定义服务的端口不同,需要创建自定义服务。例如,预定义服务ILS(Internet Locator Server,互联网定位器服务器)的端口号为1002,但是某些旧版软件可能使用端口389来接收ILS报文。此时,用户需要自定义一个端口号为389的服务,才能在安全策略中引用。
system-view ip service-set new_ils type object //object表示自定义服务 service protocol tcp destination-port 389 //以目的端口指定ILS服务
对于TCP、UDP和SCTP(Stream Control Transmission Protocol,流控制传输协议)服务,可以通过源端口和目的端口来定义,通常只定义目的端口即可。
对于ICMP和ICMPv6服务,需要使用类型号和消息码来定义。ICMP服务常用于ping和Tracert,一般直接使用预定义的ICMP服务即可。但是,ICMP服务也经常被攻击者用来窥测网络或建立隐蔽通道。因此,如果用户对安全性有更高的要求,可以自定义服务,仅开放特定类型的ICMP报文。
以ping为例,如图1-16所示,ping需要使用两种类型的ICMP报文:Echo Request(Type 8)和Echo Reply(Type 0)。源端连续发送几个Echo Request报文,目的端收到之后,回送响应报文Echo Reply报文。如果在超时时间之内,响应报文到达源端,说明目的端可达。防火墙收到源端发出的Echo Request报文后,创建会话并转发报文,目的端返回的Echo Reply报文命中会话表转发。
图1-16 ping的基本工作原理
在这种情况下,用户可以自定义一个ICMP Echo Request服务,用于安全策略。关于ICMP类型和消息代码更详细的说明可以参考RFC792。
system-view ip service-set ICMP_Echo_Request type object service protocol icmp icmp-type 8 //自定义ICMP type 8
trust区域的PC要ping untrust区域的交换机,安全策略配置如下。
security-policy rule name “Allow Ping” source-zone trust destination-zone untrust source-address 10.1.1.10 24 destinatoin-address 10.1.2.10 24 service ICMP_Echo_Request action permit
2. 配置服务组
服务组中可以添加预定义服务(动态端口除外)和自定义服务,也可以添加服务组,其配置命令相同。
system-view ip service-set MgtProt4 type group //group表示自定义服务组 service service-set ftp //添加预定义服务 service service-set ICMP_Echo_Request //添加自定义服务 ip service-set MgtProt type group service service-set MgtProt4 //添加服务组