如何通过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服务器

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

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

相关文章

头歌C语言数据结构(队列的应用)

第1关:循环队列 任务描述 本关任务:编写一个循环队列,实现入队、出队操作,判断队空、队满等特殊情况。 相关知识 为了完成本关任务,你需要掌握:1.循环队列定义,2.入队、出队的定义&#xff…

深入理解C++中的Vector容器:用容器构建高效程序

文章目录 vector介绍vector常用的成员函数有关vector定义的函数vector的迭代器使用vector关于空间操作的成员函数vector的增删查改 总结 vector介绍 在C语言的库中包含有公共数据结构的实现,C的这个部分内容就是众所周知的STL(标准模版库)&a…

网络层(计算机网络谢希仁第八版)——学习笔记四

关于网络层的争论 争论的内容:网络层应该想运输层提供正阳的服务,是“面向连接的”还是“无连接”。 其实质就是:可靠交付应该交给谁负责?面向连接表示网络层负责可靠交付,无连接则是把这个任务交给运输层。 让网络层负…

C++笔记(STL标准库)

1.STL六大部件 容器 Containers分配器 Allocators:帮容器分配内存算法 Algorithms迭代器 Iterators:算法通过迭代器操作容器里的数据,是一种泛化的指针适配器 Adapters:修改或扩展已有类或函数的接口以满足特定的需求仿函数 Func…

亲测-wordpress文章实时同步发布修改删除多个站点的WP2WP插件

一款将wordpress文章同步到其他WordPress网站的插件,通过这款插件,可以保持不同博客之间文章发布、修改、删除的同步。 安装步骤: 主站和分站都要上传这个插件 1.把插件上传到wp-content\plugins解压出来wp2wp文件夹,然后启用插…

【数据结构】心里有 “B树“ 么?

序言 在学习数据库之前,博主觉得有必要学习B树系列,以便之后更好地了解其原理,既然说到这里了,那就再说几句,数据库是帮助我们管理存在硬件当中的数据,如果要从中读取数据,就要考虑到硬件的读取…

poll 机制

poll 机制 一、poll机制概述二、使用流程三、编程3.1 驱动编程3.1 应用编程 四、POLL 机制的内核代码详解五、编译后上机实验 poll 机制与休眠唤醒机制的区别: 休眠唤醒方式时,进程如果没有得到唤醒信号,需要一直休眠,进程就干不了…

免费思维13招之七:空间型思维

免费思维13招之七:空间型思维 本篇给你带来的是空间型思维。 空间型思维,具体分为内部空间型思维和外部空间型思维。 什么叫内部空间型思维呢? 内部空间型就是充分利用现有空间或资源为社会提供免费服务,积累人气,增加流量,从而带动消费。 为什么你生意不好?为什么你…

ppt保存文件奇怪问题

我发现ppt中的形状保存成jpg,png和pdf时,格式不一样 比如 当右键单击时,然后选择另存为图片 png格式 jpg格式 pdf格式 感觉还是很奇怪,就pdf的格式比较靠谱一点

2024年建筑施工特种作业人员安全生产知识试题

100分题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 单选题(1-10) 1.因生产安全事故受损害的从业人员,除…

Busybox 在 Docker 中的部署和启动

可以使用 docker pull 指令下载 busybox:latest 镜像: PS C:\Users\yhu> docker pull busybox:latest latest: Pulling from library/busybox ec562eabd705: Pull complete Digest: sha256:5eef5ed34e1e1ff0a4ae850395cbf665c4de6b4b83a32a0bc7bcb998e24e7bbb St…

ElasticSearch集群环境

ElasticSearch集群环境 1、Linux单机 下载地址:LINUX X86_64 (elastic.co) 下载之后进行解压 tar -zxf elasticsearch-7.8.0-linux-x86_64.tar.gz 名字太长了改个名字改成es mv elasticsearch-7.8.0 es因为安全问题,Elasticsearch 不允许 root 用户…

性能优化 | el-table中内嵌大量el-input控件导致渲染卡顿的问题

场景 项目中有一个应用场景,用户需要在表单中大量使用选择框以及输入框填写数据(每一行大概有三十几个输入框),当选择框与输入框达到一定数量的时候,页面会出现输入不连续、卡顿的现象,如下图:…

C++基础与深度解析 | 什么是C++ | C++开发环境与相关工具 | C++编译/链接模型

文章目录 一、什么是C二、C的开发环境与相关工具三、C的编译/链接模型 一、什么是C C是一门比较流行的编程语言(高级语言),同时也是一门复杂的语言。从TIOBE 编程社区指数中可以看出:在2024.04中,其编程语言受欢迎程度…

HCIP【BGP综合实验】

目录 一、实验拓扑图: 二、实验要求: 三、实验思路: 四、实验步骤: 1、进行网段的子网划分(整个实验总共有19条网段): (1)首先,根据实验要求,将172.16.0.0/16全部划…

2024湖南理工学院程序设计竞赛(同步赛) G. 区间递减(思维题 分类讨论 ST表)

题目 https://ac.nowcoder.com/acm/contest/82672/G 思路来源 出题人 涼風青葉7代码 题解 注意到三种情况即可, 第一种情况,10 9 8 1 2,保留1 第二种情况,6 5 10 9 4 4,保留5 4 4 第三种情况,6 5 4&…

jdk8的新特征

1: jdk8中新增的方法 在jdk8中对接口进行了增强,在jdk8之前 interface 接口名{ 静态常量: 抽象方法: } 在jdk8之后 interface 接口名{ 静态常量: 抽象方法: 默认方法: 静态方法: } 2…

JAVA基础--IO

IO 什么是IO 任何事物提到分类都必须有一个分类的标准,例如人,按照肤色可分为:黄的,白的,黑的;按照性别可分为:男,女,人妖。IO流的常见分类标准是按照*流动方向*和*操作…

Google与哈佛大学的科学家团队共同创造了一张人脑中一个极小部分的精细地图

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

插件:Best HTTP

一、简介 WebSocket WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。…