18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > 如何通过iptables配置URL过滤黑名单?

如何通过iptables配置URL过滤黑名单?

时间:2023-02-19 03:28:01 | 来源:建站知识

时间:2023-02-19 03:28:01 来源:建站知识

如何通过iptables配置URL过滤黑名单?:

正文共:1555 字 16 图,预估阅读时间:2 分钟

我们前面曾经简单介绍过URL过滤功能URL过滤功能了解一下?,并且以H3C VFW为例简单配置了一下URL过滤功能。

首先回顾一下,URL过滤,英文全称为URL Filter,一般简称为URLF,从字面上理解,是指对用户访问的URL进行控制,对用户访问的Web资源执行允许或禁止操作。

URL(Uniform Resource Locator,统一资源定位符)是互联网上标准资源的地址,用来完整、精确地描述互联网上的网页或者其他共享资源的地址。

在前面测试的时候,我们使用的是黑名单的方式,也就是默认放通所有,然后拒绝被匹配的请求。域名使用文本方式匹配域名中的关键字段,还区分了HTTP和HTTPS的服务区别。

前面我们也说过,URL过滤的原理上整体都是相似的,所以我前面又整理了一下iptables的用法iptables命令简介,还包括match扩展项iptables扩展项之match扩展和target扩展项iptables扩展项之target扩展的使用说明。今天我们就用iptables来简单测试一下URL的过滤效果。

首先我们确认一下域名字段,需要使用string模块通过某种模式匹配策略来匹配给定的字符串。模式匹配策略可选为bm(Boyer Moore)kmp(Knuth Pratt Morris),此部分的语法为:

-m string --string guotiejun.com --algo kmp-m string --string guotiejun.com --algo bm然后就是匹配协议,一般常用的是HTTP或者HTTPS。在iptables中,可以使用-p来匹配协议,但是这里的协议仅限于tcp、udp、udplite、icmp、icmpv6、esp、ah、sctp、mh或特殊关键字“all”中的一个。我们要匹配HTTP或者HTTPS,就要结合--sport或者--dport来指定端口或端口范围,这里就可以配置服务名称或端口号了,端口范围可以使用first:last格式来指定。此部分的语法为:

-p tcp --dport 443-p tcp --dport 80-p tcp --dport http-p tcp --dport https再就是动作类型,这部分适用于-j参数来匹配target扩展,一般常用的参数包括ACCEPT(接受)、DROP(丢弃)、RETURN(返回)和reject(AUDIT下,同DROP)。此部分的语法为:

-j ACCEPT-j DROP-j RETURN-j AUDIT --type accept-j AUDIT --type drop-j AUDIT --type reject最后就是确定规则下发到哪个链或者表了。-I命令用于在选定的链中插入一个或多个规则。如果没有通过-t选项指定转发表,则默认下发到filter表;也可以通过-t选项指定到nat、mangle、raw或者security表,不过一般都是配置到默认的filter表下面。

filter表下面包含预定义链INPUT(用于发往本地套接字的数据包)、FORWARD(用于通过设备路由的数据包)以及OUTPUT(用于本地生成的数据包),一般常用的就是FORWARD和OUTPUT。此部分的语法为:

-I FORWARD-I OUTPUT-t filter -I FORWARD-t filter -I OUTPUT如果有其他需求,也可以进行进一步的条件限制,比如通过-s选项限定源地址信息,通过-i选项指定接收数据包的接口名称,通过-o选项指定发送数据包的接口名称。

接下来,我们搭个环境测试一下。

结合前面介绍的文章如果把Linux主机作为路由器转发流量,性能可靠吗?,我们将一台CentOS主机作为客户机的网关设备,并在CentOS主机上配置URL过滤。

首先,我们尝试直接访问一个HTTP页面。

然后,我们组合前面的各部分配置,可以得到禁止访问http://guotiejun.com相关的HTTP的页面命令如下:

iptables -I FORWARD -p tcp --dport 80 -m string --string guotiejun.com --algo bm -j DROP

这里我们也可以看到匹配TCP80端口被自动识别成了HTTP协议。配置过后再次测试页面的访问情况。

可以看到页面已经无法访问了。在CentOS上查看报文匹配情况,可以看到共匹配到了47个报文,共29328字节。

现在过滤的是HTTP报文,我们再试一下HTTPS页面是否访问正常。

可以看到,当前的HTTPS页面访问不受影响。我们再加一条禁止访问http://sdwan.guotiejun.com的HTTPS页面的命令:

iptables -I FORWARD -p tcp --dport https -m string --string sdwan.guotiejun.com --algo bm -j DROP

再次测试页面的访问情况。

可以看到页面已经无法访问了。在CentOS上查看报文匹配情况,可以看到共匹配到了76个报文,共43802字节。

现在所有带有http://guotiejun.com的HTTP页面都无法访问了,带有http://sdwan.guotiejun.com的HTTPS页面也无法访问了,其他的带有http://guotiejun.com的HTTPS页面访问应该是不受影响的。测试一下访问个人黄页。

如果要禁用所有带有http://guotiejun.com的HTTPS页面,用以下命令就可以了。

iptables -I FORWARD -p tcp --dport 443 -m string --string guotiejun.com --algo bm -j DROP

然后,所有的页面就都不能访问了。

最后,我们再以百度和必应为例,测试一下这个方法对公共站点是否生效。配置命令如下:

iptables -I FORWARD -p tcp --dport 443 -m string --string baidu.com --algo bm -j DROPiptables -I FORWARD -p tcp --dport 443 -m string --string bing.com --algo bm -j DROP

测试一下访问情况,可以看到虽然域名可以正常解析、也可以ping通,但是HTTPS页面是无法访问到的。

iptables的报文统计情况如下:

可以看到,有成功转发的报文统计,还有每条拒绝规则对应的报文统计,一目了然。

怎么样,用iptables做URL黑名单过滤,你学会了吗?

长按二维码
关注我们吧

iperf命令简介

iptables扩展项之match扩展

iptables扩展项之target扩展

H3C防火墙RBM主备模式+静态路由方案验证

Debian通过NetworkManager配置双网卡

NetworkManager管理工具nmcli命令简介

79.55 Gbps!已经初步测得VMWare ESXi 6.7的vSwitch转发性能

还得是华为,OpenEuler打流能到37 Gbps

羡慕!大佬的VPP能达到180G性能,而我的却只有13.5G

Windows Server2012 R2搭建NFS服务器

CentOS 7搭建NFS服务器

关键词:过滤,黑名单,配置,通过

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭