当前位置: 首页 > news >正文

FreeSWITCH使用mod_fail2ban模块来提升安全

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.jsqmd.com/news/45946/

相关文章:

  • 【ArcMap】使用拓扑(Topology)检查线是否存在断点
  • 电动汽车行业时序数据库选型指南:以 TDengine 为例的四大关键维度与评估标准
  • CF2165 VP 记录
  • 如何在SPM混编中实现不同target之间的通信?
  • Python在线教育广告精准投放:SEM结构方程、XGBoost、KDE核密度、聚类、因子分析、随机森林集成优化融合用户满意度渠道效能|附代码数据
  • 完整教程:Spring Boot Actuator全解析
  • 专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载
  • 2025/11/20-Why brushing teeth twice a day is not always best
  • uos安装idea
  • HDU3586-Information Disturbing
  • 【App Service】.NET 应用在App Service上内存无法占用100%的问题原因
  • 深入解析:css 的 clip-path 属性,绘制气泡
  • 快速构建一个基础、现代化的 WinForm 管理系统!
  • 国内外研究现状全面解析:掌握学术前沿的必备指南
  • 费马小定理在素数检测中的应用
  • 把 1688 商品详情「搬进 MySQL」:Java 爬虫全链路实战(2025 版) - 实践
  • 深入解析:从传统架构到云原生,如何应对数据增长挑战?
  • 50036_基于微信小程序的智能点餐推荐系统
  • 【NAOI】题解
  • Windows系统基础安全浅谈
  • 深入解析:医疗多模态共情推理与学习一体化网络Python实现(2025扩充版)
  • curl/libcurl SMTP CRLF注入漏洞深度分析
  • 2025年11月氨基酸水溶肥,花芽分化氨基酸水溶肥,低温酶解氨基酸水溶肥厂家最新推荐,权威测评与种植选择指南!
  • 2025年11月沣硕40+中微量元素水溶肥,防裂果中微量元素水溶肥,促花稳果中微量元素水溶肥厂家推荐:规模化种植适配品牌
  • 4.6.4版本闪亮登场~赶快了解一下新内容吧
  • 2025年11月花芽分化氨基酸水溶肥,膨果上色氨基酸水溶肥,高含量氨基酸水溶肥厂家推荐,实测促产效果与品牌解析!
  • XMind for Mac v24.01.dmg 安装教程(Mac思维导图软件下载安装步骤)
  • 自动类型推导、智能指针、Lambda表达式和函数包装器 - 详解
  • RocketMQ 概念介绍 - 邓维
  • fio linux