这不是差不多又到了护网的时节了,很多单位开始紧张起来,除了增加安全预案,保证网络不被从外部攻破之外,还要重点考虑防范内部用户的上网行为,避免钓鱼等风险隐患。
规范内网用户上网行为的方法和产品有很多种,今天先简单介绍一下比较常用的URL过滤功能。
URL过滤,英文全称为URL Filter,一般简称为URLF,从字面上理解,是指对用户访问的URL进行控制,对用户访问的Web资源执行允许或禁止操作。
那什么是URL呢?
URL(Uniform Resource Locator,统一资源定位符)是互联网上标准资源的地址,用来完整、精确地描述互联网上的网页或者其他共享资源的地址。以我公众号某条自动回复为例,这是一个apk安装包的下载路径,它由protocol、host和path三部分组成。其中,protocol表示使用的传输协议,常用的有HTTP、HTTPS、FTP等等;host表示存放资源的服务器,一般配置为域名或IP地址;path指访问的文件路径,可能包含零个或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
有小伙伴可能会问,零个是怎么回事?
向上图这种,后面是不是没有path路径呢?
其实不是的,我给大家看一下这个页面的Nginx配置文件。
server
{
listen 80;
listen 443 ssl http2;
server_name i.guotiejun.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/i.guotiejun.com;
}
可以看到,配置文件中指定了一个根目录,也就是/www/i.guotiejun.com,这个是服务器上的绝对路径,访问https://i.guotiejun.com/就会直接访问到/www/i.guotiejun.com这个目录下,默认查找的文件就是index后面那一堆,找到哪个算哪个。当然,我实际的页面文件名称是index.html,所以上面这个页面的完整URL应该是https://i.guotiejun.com/index.html,只不过因为匹配了默认配置,所以被隐藏掉了。
当然,上面这个URL只能算是一个比较简单的基础的URL,完整的URL格式为“protocol://host[:port]/path/[;parameters][?query]#fragment”,像下面这样。
相比基础的必需元素,这里多了port端口号,当然,如果端口号和协议的默认端口号一致的话,就不会显示了,比如HTTP默认是80,HTTPS默认是443;通过protocol、host和port,我们就可以定位到唯一的服务信息了。后面的部分都是URI(Uniform Resource Identifier,统一资源标识符)了,用于标识服务中唯一的互联网资源,除了path信息,还可以包含?打头的query查询和;打头的parameters特殊参数等等。
而URL过滤功能,就是对URL进行识别,再使用URL过滤规则匹配URL中host字段和URI字段来进行控制。当然,用的最多的还是通过host字段进行控制。
比如说,我准备了4个测试网站,guotiejun.com、i.guotiejun.com、tls.guotiejun.com和time.guotiejun.com。其中,除了time.guotiejun.com使用HTTP协议之外,其余3个域名全部使用HTTPS协议。
首先我们先看这网站的正常访问情况。
然后我们配置一条用文本方式匹配guotiejun.com的URL过滤策略,动作为拒绝并记录。未实现拒绝的效果,就要用到黑名单,当用到黑名单时,就要全局开启黑名单功能。所以,配置如下:
#
blacklist global enable
#
url-filter policy guotiejun
category guotiejun action drop logging parameter-profile url_logging_default_parameter
add blacklist 1 host text guotiejun.com
#
app-profile guotiejun
url-filter apply policy guotiejun
理论上讲,因为4个网站的URL中都含有guotiejun.com字段,所以都应该被阻断,实际效果呢?
除了time.guotiejun.com之外,其他3个网站均访问正常。并且在URL过滤日志中,也只有time.guotiejun.com的拦截记录。
这是为什么呢?注意看上图的最后一列,应用协议为HTTP。
这是因为在缺省情况下,设备仅对HTTP流量进行URL过滤。如果我们需要对HTTPS流量进行URL过滤,可以使用SSL解密功能,或者开启HTTPS流量过滤功能。当然在实际使用中,后者更方便一些,配置如下:
#
url-filter policy guotiejun
https-filter enable
开启之后刷新所有页面,这时候就可以发现,已经都无法访问了。
再次查看URL过滤日志,这时候就能看到HTTPS应用的拦截记录了。
我们现在通过guotiejun.com字段拦截了所有的页面,这是一种文本匹配的方式,通过使用指定的字符串对主机名字段进行匹配,当URL中的主机名字段中包含规则中指定的主机名字符串时,匹配成功。
那如果我只想拦截tls.guotiejun.com这个网站呢?
很简单,只要报匹配的文本修改为tls.guotiejun.com就可以了。
刷新所有页面,此时只有tls.guotiejun.com无法访问了。
查看URL过滤日志,这时候只有tls.guotiejun.com的拦截记录了。
再换种方式,如果用白名单的方式,只允许访问i.guotiejun.com这个网站呢?
也很简单,调整为白名单模式,并添加白名单记录就好了。
#
url-filter policy guotiejun
https-filter enable
whitelist-only enable
category guotiejun action drop logging parameter-profile url_logging_default_parameter
add whitelist 1 host text i.guotiejun.com
刷新所有页面,可以看到只有i.guotiejun.com能访问了。
查看URL过滤日志,此时可以看到,只有i.guotiejun.com匹配了白名单被放行;而其余的全部命中黑名单,被拦截了。
怎么样,是不是很简单呢?
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/425152.html