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

news2024/11/24 11:10:18

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1669995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux线程(三)死锁与线程同步

目录 一、什么是死锁 死锁的四个必要条件 如何避免死锁 避免死锁算法 二、Linux线程同步 三 、条件变量 1、条件变量基本原理 2、条件变量的使用 3、条件变量使用示例 为什么 pthread_cond_wait 需要互斥量? 一、什么是死锁 死锁是计算机科学中的一个概念,…

C++指针和动态内存分配细节,反汇编,面试题05

文章目录 20. 指针 vs 引用21. new vs malloc 20. 指针 vs 引用 指针是实体,占用内存空间,逻辑上独立;引用是别名,与变量共享内存空间,逻辑上不独立。指针定义时可以不初始化;引用定义时必须初始化。指针的…

物理机转换成虚拟机之linux

文章目录 注意事项环境准备网络拓扑VMware Converter开始转换 注意事项 目标系统-vCenter-ESXI-VMwareConverter网络必须是互通的,否则,会卡在1% 环境准备 vCenteresxiVMware Converter 网络拓扑 VMware Converter开始转换

20 分页:较小的表

目录 简单的解决方案:更大的页 混合方法:分页和分段 多级页表 详细的多级示例 超过两级 ​编辑地址转换过程:记住TLB 反向页表 将页表交换到磁盘 之前提到的一个问题:就是页表太大,假设一个 32 位地址空间&…

如何进行资产梳理(信息收集)

前言 渗透测试流程 线路一:渗透测试人员 1.域名收集--(备案收集) 1.1在线收集子域名 1.1.1 站长之家 1.1.2 IP138网站 1.1.3 查子域 1.1.4 RapidDNS 1.1.5 聚名 1.1.6 Crt.sh 1.1.7 googleHack 1.2工具和资产测绘收集子域名 1.2.1 oneforall(最好用,最全面) 1.2.…

火山引擎VeDI:A/B测试平台指标能力升级,助力企业提升精细化运营效率

在数字化浪潮的推动下,数据分析与精细化运营已成为企业提升竞争力的关键。近日,火山引擎A/B测试DataTester完成了指标能力的全面升级,为企业在流量竞争激烈的市场中提供了更强大、更可信的数据支持。 此次升级亮点在于引入了“按某个属性去重…

AI大模型探索之路-训练篇22: ChatGLM3微调实战-从原理到应用的LoRA技术全解

系列篇章💥 AI大模型探索之路-训练篇1:大语言模型微调基础认知 AI大模型探索之路-训练篇2:大语言模型预训练基础认知 AI大模型探索之路-训练篇3:大语言模型全景解读 AI大模型探索之路-训练篇4:大语言模型训练数据集概…

令牌桶算法:如何优雅地处理突发流量?

令牌桶算法的介绍 在网络流量控制和请求限流中,令牌桶算法是一种常用的策略。那么,令牌桶算法到底是什么呢?它的工作原理又是怎样的呢?让我们一起来探索一下。 令牌桶算法,顾名思义,就是有一个存放令牌的…

云原生技术解析

云原生的概念 云原生是一种软件架构和部署方法,旨在利用云计算的优势,以更灵活、可扩展和可靠的方式构建和部署应用程序。它主要关注在容器、微服务、自动化和持续交付等方面。 云原生技术是指以云计算作为基础,以平台和工具为依托&#xff0…

大规模 RGB LED灯控系统 Lumos:创新与智能化的融合

灯控系统:创新与智能化的融合 在现代照明技术不断进步的背景下,灯控系统的应用已经从简单的开关控制,发展到能够进行复杂程控操作的智能化管理。我们推出的新一代灯控解决方案,凭借其高度的可配置性和跨平台兼容性,已…

Hadopp入门之基础概念

Hadoop概述 Hadoop是什么 Hadoop是一个由Apache基金会所开发的分布式系统基础架构主要解决海量数据的存储和海量数据的分析计算问题广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈 Hadoop优势 高可靠性:Hadoop底层维护多个数据副本&…

Linux基础之进程-fork()函数的详解

目录 一、前言 二、fork()函数 2.1 fork()函数的基本概念 2.2 问题一的解答 2.3 问题二的解答 2.4 问题三的解答 2.5 问题四的解答 2.6 问题五的解答 一、前言 在上节内容中我们已经学会了使用我们的getpid()和我们的getppid()去查看我们进程的pid,并且学习到…

通过Mendix Portal管理应用整个生命周期

一、前言 大家常常会听到Mendix是一个统一的平台,怎么理解这个统一平台呢?它指的是帮助企业搭建一个统一的开发平台,管理应用的整个生命周期,之前大家更多地关注在应用开发层面,而开发只是整个生命周期的一环。 从上图…

华为手机恢复出厂设置后怎么还原数据?该如何预防数据丢失?

华为手机恢复出厂设置是将手机恢复到出厂时的初始状态,同时会删除所有用户数据和个人设置。如果不做任何预防措施,在恢复出厂设置后,您将丢失手机上的所有数据。那华为手机恢复出厂设置后怎么还原数据呢?以下是关于如何在华为手机…

柔性数组+结构体类型转换

柔性数组&#xff1a;在结构体中声明的时候仅作为占位符&#xff0c;好处是地址是连续的 强制类型转换&#xff1a;可用于通信双方进行信息交流 #include <iostream> #include <string.h>struct DataWater {int count;float size;char buf[0]; }; // dbuf相当于是…

GLU(Gated Linear Unit) 门控线性单元

文章目录 一、RNN二、GLU2.1 整体结构2.2 输入层(Input SentenceLookup Table)2.3 中间层(ConvolutionGate)2.4 输出层(Softmax)2.5 实验结果2.6 实现代码 三、RNN与GLU的对比参考资料 GLU可以理解为能够并行处理时序数据的CNN网络架构&#xff0c;即利用CNN及门控机制实现了RN…

UKP3d,修改管道长度或标高的方法

南京用户问&#xff0c;请问这个起末点标高可以修改么&#xff1f;如图&#xff1a; 上述起末点的标高是不可以修改&#xff0c;用户没有详细阐述自已想要的结果。可能是以下几种场景&#xff0c;希望能帮助到用户&#xff1a; 1.修改管道长度&#xff1a; 1.1.(管道在模型的…

各种类型的背景音频音效,不同风格的背景音乐素材

一、素材描述 本套背景音乐素材&#xff0c;大小1.76G&#xff0c;58个压缩文件。 二、素材目录 8支简短精致的企业标志片头音乐.zip Avril 伴奏收藏 Wish you were here.zip 《带我回家》带给人温暖感动的男声歌曲 .zip 《光荣时刻》震撼激烈的英雄史诗电影音乐素材.zip…

风扇开启执行逻辑

执行流程 public static void businessExecutionWork(){//以下为业务逻辑部分System.out.println("1、根据电池包控制风扇服务执行 开始!");//1、获取电池包电压、电流、环境温度//获取电池包电压、电流、环境温度ObtainBatteryDataService obtainBatteryDataServic…

分享一个适用于 Vue3.x 非常好用的组件库【Naive UI】

一、Naive UI 介绍 Naive UI 是一种简单易用、不太复杂的用户界面&#xff08;UI&#xff09;框架&#xff0c;主要用于Web应用程序的开发。它提供了超过80个组件&#xff0c;覆盖了表格、表单、弹窗、图表等多个方面&#xff0c;这些组件不仅功能强大&#xff0c;而且高度可定…