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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

若依微服务docker-compose 启动

docker-compose 文件 version : 3 services: ruoyi-nacos: container_name: ruoyi-nacos image: nacos/nacos-server build: context: ./nacos environment: - MODEstandalone volumes: - ./nacos/logs/:/home/nacos/logs - ./n…

【linux-IMX6ULL-定时器-GPT-串口配置流程-思路】

目录 1. 定时器配置流程1.1 EPIT定时器简介1.2 定时器1(epit1)的配置流程1.3 配置代码(寄存器版本)1.4 定时器-配合按键消抖1.4.1 实现原理1.4.2 代码实现(寄存器版) 2. GPT定时器实现高精度延时2.1 延时原理分析2.2 代码实现 3. UART串口配置流程3.1 UA…

Kafka的安装及接入SpringBoot

环境:windows、jdk1.8、springboot2 Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/ 1.概述 Kafka 是一种高性能、分布式的消息队列系统,最初由 LinkedIn 公司开发,并于2011年成为 Apache 顶级项目…

Datax数据采集

一、Datax介绍 官网: DataX/introduction.md at master alibaba/DataX GitHub DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、…

# ERROR: node with name “rabbit“ already running on “MS-ITALIJUXHAMJ“ 解决方案

ERROR: node with name “rabbit” already running on “MS-ITALIJUXHAMJ” 解决方案 一、问题描述: 1、启动 rabbitmq-server.bat 服务时,出错 Error 2、查询 rabbitmqctl status 状态时,出错 Error 3、停止 rabbitmqctl stop 服务时&a…

探索人类意识的多样性:从安全感到语感、节奏感的差异

在我们的日常生活中,人类意识表现出多种多样的特点,这些特点往往与个体的天生禀赋和生活经历密切相关。从安全感到语感、节奏感,每个人的表现都有所不同。今天,让我们一起来探索这些差异,感受人类意识的多样性。 首先&…

指针(5)加油吧

指针(5) 拿冒泡排序来举例: 1 .qsort void qsort (void* base,//base指向待排序数组的首元素的指针size_t num,//base指向数组中元素的个数size_t size,//base指向的数组中的一个元素的大小,单位是字节int(*cmp)(const void*,co…

通过mvn archetype 创建一个spring boot start 工程

mvn archetype https://maven.apache.org/archetype/index.html 遇到的问题 对于想自定义一个spring-boot-start的同学,比如 Springboot自定义Starter启动器 整个过程很繁琐。 定义属性开关增加 spring boot test start插件定义自动装载 spring.factories or org.springfra…

类加载机制(双亲委派机制)

文章目录 JVM的作用是什么双亲委派机制加载流程 JVM的作用是什么 我们运行Java程序时,要安装JDK,JDK包含JVM,不同环境的JDK都是不同的。 Java 代码在编译后会形成 class 的字节码文件,该字节码文件通过 JVM 解释器,生…

【牛客】SQL206 获取每个部门中当前员工薪水最高的相关信息

1、描述 有一个员工表dept_emp简况如下: 有一个薪水表salaries简况如下: 获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列,以上例子输出如下: 2、题目…

7.STL_string(详细)

1. 什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版…

[单机]成吉思汗3_GM工具_VM虚拟机

稀有端游成吉思汗1,2,3单机版虚拟机一键端完整版 本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的&#x…

校园管理系统,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园管理系统设计实现

目录 一. 前言 二. 功能模块 2.1. 管理员功能模块 2.2. 用户功能模块 2.3. 院校管理员功能模块 三. 部分代码实现 四. 源码下载 一. 前言 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身…

[240512] x-cmd 发布 v0.3.6: (se,wkp,ddgo...)x( kimi,gemini,gpt...)

目录 x-cmd 发布 v0.3.6新增了 jina 模块新增了 ddgo 模块新增了 se 模块wkp 模块新增了 writer 模块cosmo 模块 x-cmd 发布 v0.3.6 本次版本的最新引入的功能都是目的为了进一步探索 LLM 的使用。 本版本的改进分为两类:资讯类模块(Wikipedia&#xf…

十、Redis内存回收策略和机制

1、Redis的内存回收 在Redis中可以设置key的过期时间,以期可以让Redis回收内存,循环使用。在Redis中有4个命令可以设置Key的过期时间。分别为 expire、pexpire、expireat、pexpireat。 1.1、expire expire key ttl:将key的过期时间设置为tt…

web前端之sass中的颜色函数、active按钮激活、hover鼠标悬浮、disabled禁用、scss循环、css

MENU 效果图htmlsassscss编译后的css页面css 效果图 注意查看蓝色按钮。 html <div class"box"><button class"btn type_1">按钮</button><button class"btn type_2">按钮</button><button class"btn ty…

机器学习(1)

目录 1-1.西瓜书 1-2.课程定位 1-3.机器学习 1-4.典型的机器学习过程 1-5.机器学习理论 1-6.基本术语 1-7.归纳偏好 1-8.NFL定理 1-1.西瓜书 建议使用方式 1.初学机器学习的第一本书:通读、速读;细节不懂处略过&#xff0c;了解机器学习的疆域和基本思想&#xff0c;…

龙迅LT8911EXB MIPIDSI/CSI桥接到EDP点屏,支持EDP1.4

龙迅LT8911EXB描述&#xff1a; Lontium LT8911EXB是MIPIDSI/CSI到eDP转换器&#xff0c;单端口MIPI接收器有1个时钟通道和4个数据通道&#xff0c;每个数据通道最大运行2.0Gbps&#xff0c;最大输入带宽为8.0Gbps。转换器解码输入MIPI RGB16/18/24/30/36bpp、YUV422 16/20/24…

显卡、显卡驱动、CUDA、cuDNN、CUDA Toolkit、NVCC、nvidia-smi等概念的区别与联系

在科技日新月异的今天&#xff0c;显卡、显卡驱动、CUDA、cuDNN、CUDA Toolkit、NVCC、nvidia-smi等术语已经成为了科技领域的重要组成部分。本文旨在阐述这些术语之间的区别与联系&#xff0c;帮助您更好地理解它们在技术生态系统中的作用。 一、显卡 显卡&#xff0c;也称为…

旅游推荐管理系统(小组项目)

文章目录 前言 一、项目介绍 1. 项目目的 2. 项目意义 2.1 提升旅游体验 2.2 促进旅游业发展 2.3 数据积累与分析 2.4 提升服务品质 2.5 优化资源配置 二、项目结构 1. 主要使用的技术 1.1 若依&#xff08;Ruoyi&#xff09;框架 1.2 Vue.js框架 1.3 Ajax 1.4 …