FreeSWITCH使用mod_fail2ban模块来提升安全

news/2025/11/20 20:53:00/文章来源:https://www.cnblogs.com/MikeZhang/p/19249529

FreeSWITCH使用mod_fail2ban模块来提升安全

操作系统:Debian 12.5_x64
FreeSWITCH版本: 1.10.11
fail2ban版本: 1.1.0
nftables版本: 1.0.6

FreeSWITCH系统部署在公网,大概率会碰到恶意注册,今天整理下debian12环境下使用mod_fail2ban + fail2ban + nftables来提升系统安全性的笔记,并提供使用示例及相关资源下载。

相关资源资源可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。

一、原理说明

这里描述下mod_fail2ban如何使用fail2ban软件添加防护规则,实现ip地址封禁。
原理示意图如下:

image

 

说明:
1)话机发起注册时,防火墙程序默认放行,注册请求会到达mod_sofia模块;
2)mod_sofia模块处理sip注册请求的过程中,会生成注册相关事件;
3)mod_fail2ban模块监听到注册事件后,进行过滤,根据既定规则生成fail2ban.log日志;
4)fail2ban程序解析fail2ban.log日志文件,根据配置规则添加防火墙策略;
5)防火墙程序使用新规则阻挡恶意注册;
 
fail2ban说明可参考GitHub描述,这里就不多说了。
https://github.com/fail2ban/fail2ban

二、模块安装及配置 

1、添加模块编译项

文件:源码根目录的modules.conf文件
添加(或取消注释)如下代码:
event_handlers/mod_fail2ban

image

 

2、编译及安装

源码目录执行如下命令:

autoreconf -fiv
make clean
./devel-bootstrap.sh && ./configure && make && make install

说明:

1)会编译mod_fail2ban模块;

2)如果配置文件没有找到,可以从源码目录复制过去;

cp src/mod/event_handlers/mod_fail2ban/fail2ban.conf.xml /usr/local/freeswitch/conf/autoload_configs/

image

 

3、加载mod_fail2ban模块

编辑 conf/autoload_configs/modules.conf.xml 文件,添加如下内容:

<load module="mod_fail2ban"/>

image

 重启FreeSWITCH或执行重新load操作:

load mod_fail2ban

image

 如果加载不报错,则添加mod_fail2ban 模块成功。

4、配置模块

配置文件路径:

/usr/local/freeswitch/conf/autoload_configs/fail2ban.conf.xml

配置文件内容如下(默认):

<configuration name="fail2ban.conf" description="fail2ban log configs"><bindings><config name="settings" desription="configs"><param name="logfile" value="$${log_dir}/fail2ban.log"/></config></bindings>
</configuration>

image

5、模块运行效果

模块启动后,会自动创建日志文件,并写入相关日志。

默认日志路径:/usr/local/freeswitch/log/

image

 日志效果如下:

image

 

三、安装fail2ban软件

GitHub地址:
https://github.com/fail2ban/fail2ban

image

 

需要注意的是apt 安装的fail2ban软件版本是1.0.2,不能使用nftables,这里使用的是1.1.0版本,可从GitHub下载:
 
https://github.com/fail2ban/fail2ban/releases

image

 

如果下载过慢,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。
 
安装命令如下:
dpkg -i fail2ban_1.1.0-1.upstream1_all.deb

image

 配置文件目录: /etc/fail2ban

image

四、使用示例

 这里列举下使用示例。

1、配置防火墙

 
这里使用nftables来过滤ip地址,该软件是debian12默认安装的,如果没有安装,可用如下命令进行安装:
 
apt install nftables
这里使用的nftables v1.0.6版本。

image

2、配置fail2ban软件使用nftable

/etc/fail2ban/action.d目录默认有nttables的动作配置:

image

 /etc/fail2ban/jail.conf文件默认有freeswitch配置,默认未启用:

image

 为了方便演示,这里不使用默认的配置文件,修改后的 jail.conf 文件内容可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。

3、添加freeswitch过滤规则

文件: filter.d/freeswitch-fail2ban.conf

文件内容可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。
查看状态:
fail2ban-client status freeswitch-fail2ban

image

4、开启nftable服务

需要开启nftables服务:

systemctl start nftables

image

5、使用分机模拟注册失败

分机: 1009

填写错误的注册密码,执行注册操作。

连续10次注册失败,会自动拉黑,运行效果如下:

bbe8de9acbd811216449533c8f7d6be4

 到时间后,会自动解除:

66df47961c65f06e728a446bb50ab8bb

 如需提前解除黑名单,可使用如下命令:

/usr/bin/fail2ban-client set freeswitch-fail2ban unbanip 192.168.137.1

运行效果如下:

f4a189e090a9040caa71deae2fd23548

该部分涉及的配置文件,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。

五、模块源码说明

源码目录:
src/mod/event_handlers/mod_fail2ban/

ef0bce2e81ab1c6bff88507e14eeb377

源码只有一个文件: mod_fail2ban.c

1、函数说明

该模块有4个函数:

mod_fail2ban_do_config : 模块配置解析函数
fail2ban_logger : 生成fail2ban日志
fail2ban_event_handler : 模块事件处理回调函数
mod_fail2ban_load  : 模块加载函数
mod_fail2ban_shutdown : 模块关闭函数 

image

2、关键函数说明

模块的加载、关闭及配置解析没什么说的,这里描述下该模块的fail2ban_event_handler函数。

关于该函数的描述,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。 

六、资源下载

本文相关资源及示例配置,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。

image

 

【文件说明】
fail2ban-1.1.0 : fail2ban-1.1.0源码及deb格式安装包
etc_fail2ban.tar.gz : /etc/fail2ban目录打包文件
fail2ban模块.drawio : drawio格式框架图
freeswitch-fail2ban.conf : mod_fail2ban模块日志的过滤规则
jail.conf : fail2ban配置
status1.sh :fail2ban结果查看脚本
 

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

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

相关文章

【ArcMap】使用拓扑(Topology)检查线是否存在断点

拓扑必须在地理数据库中创建,Shapefile无法创建拓扑。 第一步:创建要素数据集在 Catalog 窗口中,右键点击地理数据库(.gdb),没有就新建一个数据库。选择 新建(New) -> 要素数据集(Feature Dataset)。在弹…

电动汽车行业时序数据库选型指南:以 TDengine 为例的四大关键维度与评估标准

在软件定义汽车的时代,电动汽车每天产生数十GB的时序数据,包括电池电芯电压温度、电机转速、传感器读数、自动驾驶轨迹等。高效管理这些数据,直接影响车辆安全、用户体验和商业模式创新。本文结合行业最佳实践,提出…

CF2165 VP 记录

A 贪心,注意到从小到大合并,每次选择代价少的最优,因为生成的新数等于代价. 在此基础上模拟即可,可以使用链表实现. 我用的链表 + 并查集,感觉怪怪的.点击查看代码 #include<bits/stdc++.h> using namespac…

如何在SPM混编中实现不同target之间的通信?

在 SPM 混编场景中,不同 target 之间的通信核心是通过 “模块依赖 + 公开接口” 实现跨语言 / 跨模块调用—— 因为 SPM 的核心限制是 “单个 target 不能混放 Swift 与 C 系语言(OC/C、C++)”,所以拆分后的多 tar…

Python在线教育广告精准投放:SEM结构方程、XGBoost、KDE核密度、聚类、因子分析、随机森林集成优化融合用户满意度渠道效能|附代码数据

全文链接:https://tecdat.cn/?p=44299 原文出处:拓端数据部落公众号分析师:Jian Huang在数字经济纵深发展的今天,在线广告已成为在线教育行业触达用户、实现商业转化的核心载体,但行业普遍面临“流量昂贵却转化低…

完整教程:Spring Boot Actuator全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载

原文链接:https://tecdat.cn/?p=44322原文出处:拓端抖音号@拓端tecdat引言 2024年,AI智能体终于从实验室走进企业车间、客服中心和财务部门——金融机构用它优化风控流程,医药零售靠它解答用药疑问,工业企业尝试…

专题:2025构建全自动驾驶汽车生态系统:中国智能驾驶行业全景研究报告|附80+份报告PDF、数据仪表盘汇总下载

原文链接:https://tecdat.cn/?p=44316原文出处:拓端抖音号@拓端tecdat2025年,智能驾驶正站在“技术落地”与“规模商业化”的十字路口——自主品牌城市NOA渗透率已达9.1%,15万级车型标配激光雷达成为常态,但深圳…

2025/11/20-Why brushing teeth twice a day is not always best

2025/11/20-Why brushing teeth twice a day is not always bestWhy brushing teeth twice a day is not always best p { line-height: 1.5 } From LearnAndRecordWe all think we know how to brush our teeth - a s…

uos安装idea

uos安装idea1、下载ideaIU-2025.2.4-aarch64.tar.gz,可用最新版本。 网址:https://www.jetbrains.com/idea/download/download-thanks.html?platform=linuxARM64 2、操作系统更新 命令:sudo apt update 命令:apt …

HDU3586-Information Disturbing

HDU3586-Information Disturbing 题目大意 给你一棵树,你可以花费 \(w_i\) 去切断一条边。你的目标是切断每个叶子节点到根节点 \(1\) 的联系。要求在切断的总花费不大于 \(m\) 的条件下,最小化切断边的花费 \(w\) 的…

【App Service】.NET 应用在App Service上内存无法占用100%的问题原因

问题描述 如果使用Azure App Service部署.NET 应用,会发现在内容并没有达到100%的时候,也会出现OOM错误。这是一个什么情况呢?大内存测试代码static void Main(string[] args){Console.WriteLine("Hello, Worl…

深入解析:css 的 clip-path 属性,绘制气泡

深入解析:css 的 clip-path 属性,绘制气泡2025-11-20 20:30 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

快速构建一个基础、现代化的 WinForm 管理系统!

前言 前段时间有小伙伴在后台留言问:有没有好用的 WinForm 管理系统?今天大姚给大家分享一个基于 AntdUI 构建的 WinForm 管理系统,不需要我们写一行代码既能快速构建一个基础、现代化的 WinForm 管理系统。 项目介…

国内外研究现状全面解析:掌握学术前沿的必备指南

本文围绕学术研究中了解国内外研究现状展开,强调其是开展高质量研究的关键。图灵论文 AI 写作助手可免费选题、构思大纲、生成论文等,提升梳理分析效率。文中指出研究现状解析能避免重复研究、找准切入点。还给出实用…

费马小定理在素数检测中的应用

因为还没用过liux的编译环境,我这两天便寻思着在Windows上搭建一个scheme的编译环境。查阅了各路大神的搭建方式,最终选择在VSC上进行编译,不过整了两天只能说勉强能用。只有编译功能,无法debug也没有调试,而且最…

把 1688 商品详情「搬进 MySQL」:Java 爬虫全链路实战(2025 版) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:从传统架构到云原生,如何应对数据增长挑战?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

50036_基于微信小程序的智能点餐推荐系统

1.项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2.项目介绍 本文设计并实现了一个外卖点餐小程序,融合了传统的餐饮外卖管理与计算机技术,实现外卖业务的高效科学管理…

【NAOI】题解

【NAOI】真的是签到题吗 背景 OI不能没有签到题,就像 \(309\) 不能没有数据删除! 题目描述 有 \(T\) 组询问,每组问题如下: 是否存在 \(3\) 个长度为 \(n\) 的 \([0,n)\) 的排列 \(a,b,c\),使得 \(a_i+b_i=c_i\mod…