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

84176ef41c0179fa46ecb9d432e68697.gif

正文共:1111 字 18 图,预估阅读时间:1 分钟

我们刚刚测完了iptables配置URL黑名单过滤如何通过iptables配置URL过滤黑名单?,整体效果还算不错。但是,在很多时候,可能我们还会用到白名单,也就是默认拒绝所有请求,仅允许匹配白名单域名的请求通过。

首先,这个动作就比较简单,仅需要将DROP(丢弃)动作调整为ACCEPT(接受)就可以了。但是,我们还是要考虑一下这中间的数据处理逻辑问题。

接着上次的实验结果来看。

8d5f1fbcf95b6f9e406f2be7027c1df0.png

我们现在拒绝了所有访问guotiejun.com相关HTTP页面和HTTPS页面的请求,还拒绝了所有访问sdwan.guotiejun.com相关HTTPS页面的请求。那如果我们单独加一条放通访问https://i.guotiejun.com页面的规则会怎样呢?操作命令如下:

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

452273aa9d7ee1a9f689eeddc6b11936.png

再次测试,发现访问成功。

5742f9a162ba9874764a36e1f4d5d187.png

查看规则匹配情况,也可以看到命中了ACCEPT的转发策略。

127302a1cb174f22fbc7e413930f35c8.png

首先判断是不是最长匹配的关系,我们将拒绝https://*guotiejun.com*的策略移动到允许https://i.guotiejun.com策略上面。

81d3ca2fb0a9dafd1b009aabd6842322.png

然后清空缓存,刷新页面。

8496ce273d080c576da5bf8b3eeb6b92.png

请求失败,无法访问。再看一下策略匹配情况。

df3b4f36138d7d77c5fe8394799899d9.png

可以发现,最上面的策略有报文命中,第二条策略没有被命中。这么看,策略是按照顺序依次匹配的,和匹配长度没有关系。

为了验证,我们先删除之前的策略,再重新配置几条策略。删除策略可以将前面插入命令中的-I参数修改为-D,例如:

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

258ee978fc7259cdf3796aba3f1dcc1e.png

也可以使用-F命令,能够逐个删除指定表或链中的所有规则;如果没有指定任何链,则表中所有链的规则都将被删除。例如:

iptables -t filter -F FORWARD

6122c253b96e463be39bf4140677394d.png

然后我们依次配置4条规则,分别是拒绝所有HTTPS、接受https://i.guotiejun.com、拒绝https://*guotiejun.com*、接受https://sdwan.guotiejun.com。

iptables -I FORWARD -p tcp --dport 443 -j DROP
iptables -I FORWARD -p tcp --dport 443 -m string --string i.guotiejun.com --algo bm -j ACCEPT
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 sdwan.guotiejun.com --algo bm -j ACCEPT

c4272dc2797f1d2dcd2adf2af90c6723.png

理论上讲,结果应该是只有最上面的https://sdwan.guotiejun.com可以访问,其他所有页面均被拒绝,接下来我们验证一下。

9dc562b19f7cf16217a52f3ee8009d69.png

但结果是所有的HTTPS页面均无法访问,我们查看一下策略匹配情况。

cb236460f5a3ab5b5f56a8042b23e35f.png

发现只有拒绝所有的策略被命中了,其他策略都没有命中,难道是不带target扩展的匹配方式不一样?我们将拒绝所有的命令也调整一下,所有的域名中肯定要带点号,我们就替换成如下命令:

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

3b904f82a5129d224d71bfe6749281fc.png

再次测试一下。

5ce4bd3a18106f9ef175aea426db4b9d.png

这就比较神奇了,第一条策略被命中了,但是页面还是无法打开。

4764fbbfd27d1cf2d461e8da7089351b.png

分析过程,可以看到状态是200,正常,但是无法加载资源。我们把最下面的策略移除试一下。

ab7cbb1c1fc1b95f8393c59586971e3a.png

这次就正常了,看来还是最后一条策略匹配的太过分了。那如果我们把默认规则调整为匹配.com呢?

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

b026df14ffda6057d7cf43bab1c2e40d.png

现在测试就正常了,规则匹配也是正常的。

791d70e625599c45948a7275aa1595d6.png

那不是.com的域名怎么办呢?

还记得我们之前有一篇介绍过域名的文章吗域名.com是什么意思?95%的人都不知道吧??顶级域名主要包括.gov、.edu、.com、.mil、.org以及ISO-3166“国家名称表示代码”标准中标识国家/地区的英文两字母代码后缀。

不过5个顶级域名加上247个国家/地区代码,要添加252个规则,貌似有点多。不知道各位专家有没有什么好的解决方法?

9ba1571161ce676b13fc3fa874a083a9.gif

长按二维码
关注我们吧

e3dc3343c58612cd679b25e9eebfb563.jpeg

bc8109a67534ad61deccdb2271696915.png

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

iptables命令简介

iptables扩展项之target扩展

iptables扩展项之match扩展

听说最近时间不准了?是NTP出问题了吗?

vCenter 7.0数据中心集群配置指南

vCenter 7.0数据中心集群资源池配置指南

iperf命令简介

iperf3命令简介

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Danileaf_Guo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值