防火墙和VPN技术与实践
上QQ阅读APP看书,第一时间看更新

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          //添加服务组