背景描述
我们知道,ProxySG可以使用ICAP协议与DLP联动,将上传的对象送到网络层DLP中做敏感信息扫描并实时阻挡,但能否将阻挡的信息通过access log的方式记录下来呢?
需求分析
在分析这个需求前,我们需要先知道ProxySG是如何记录Access Log的,Access Log是ProxySG区别于Syslog的一块独立的日志,它可以记录下来client到ProxySG,以及ProxySG到OCS的访问行为,通过将这部分日志发到Splunk等SIEM平台,可以为SOC人员提供更加丰富的分析视角。ProxySG对Access Log的记录其实就是抓取请求或响应报头中的字段,并将其塞到指定的位置,默认的Access Log字段极其鸡肋,所以,为了实现我们的目的,可以用自定义log format的方式自主设计Access Log。
ICAP协议简述
这个协议其实不是很复杂,从数据包中看,它和HTTP协议非常相像,ICAP协议也是请求响应模式,也大量使用各种报头记录各种信息,连返回代码都照抄HTTP协议,比如下面这个ICAP响应数据包
这是CAS返回给SG的响应头部,表达的是CAS发现了病毒,病毒名称为EICAR-TEST-FILE,从X-Virus-Details中可以看到详细信息,比如这个“X-Virus-Details”就可以直接作为日志字段,放入ProxySG的Access Log Format中。
能否记录DLP日志
回到正题,SGOS在6.5.9.2版本以后引入了两个新的Access Log字段,分别是x-icap-reqmod-header()和x-icap-respmod-header(),这两个字段后面的括号可以写任意的ICAP请求/响应报头名称,去抓取相应的报头内容。
这两个字段不在默认的Main和BCReporter格式里,需要自己新建一个日志格式,在自建的日志格式中加入这两个字段。但其实从下面这个被DLP阻挡的ICAP响应包中可以看到,DLP返回的ICAP报头中其实没有相关的字段说明该文件被阻挡了,只是在ICAP body中有此信息,所以,只要报头中没有,Access Log就无法记录。结论就是:ProxySG仅能记录文件被送到了DLP,但是否被DLP阻挡,需要调取DLP的日志才可以。