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

fffea01e0ac3632310531534e8b7dd29.gif

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

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

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

d46d6cad78e6ba5d0ae0e93f389e4892.png

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选项指定发送数据包的接口名称。

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

298db390c9c0365f0236808668a0637a.png

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

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

aaa052596465d3bd55d9cee403dd5ced.png

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

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

177606bc9204272866fa8d643066566a.png

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

fb94b24ea41eee8a627f7e754a6b37be.png

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

e7c71fee708ae6b2db37fd64ab3c97fc.png

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

c3bd26157d3db9c6ccfcc5cc476ad962.png

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

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

47149e9a51289576418393ce61a46d20.png

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

4ad11db7ceb649b290b1615cbaeda23b.png

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

eb34d435c669aacae515e27d15c23231.png

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

106b99211e0b263a41794074e7fecc0a.png

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

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

692369405640b391d8bc5798c2bb2a9d.png

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

473a1e7ad3e535c76e569df416d5c408.png

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

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

badfb1c6e9c011ababac692db4c2b450.png

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

1af08420684d93c25c9691d0c03e6024.png

iptables的报文统计情况如下:

4c4559b4eeedce1979e3756c309955ce.png

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

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

e60706b6a94ebc1ba9633a64603c9abd.gif

长按二维码
关注我们吧

6e541c6bb0f555c3d8d9c9c621c6f567.jpeg

e258d90a0c4ad2259efb992ab4aafd60.png

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服务器

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值