找回密码
 立即注册
首页 业界区 业界 FreeSWITCH使用mod_fail2ban模块来提升安全

FreeSWITCH使用mod_fail2ban模块来提升安全

拓炊羡 2025-11-21 02:05:00
操作系统:Debian 12.5_x64FreeSWITCH版本: 1.10.11fail2ban版本: 1.1.0nftables版本: 1.0.6FreeSWITCH系统部署在公网,大概率会碰到恶意注册,今天整理下debian12环境下使用mod_fail2ban + fail2ban + nftables来提升系统安全性的笔记,并提供使用示例及相关资源下载。
相关资源可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。一、原理说明

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

 
说明: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文件添加(或取消注释)如下代码:
  1. event_handlers/mod_fail2ban
复制代码
2.png

 
2、编译及安装

源码目录执行如下命令:
  1. autoreconf -fiv
  2. make clean
  3. ./devel-bootstrap.sh && ./configure && make && make install
复制代码
说明:
1)会编译mod_fail2ban模块;
2)如果配置文件没有找到,可以从源码目录复制过去;
  1. cp src/mod/event_handlers/mod_fail2ban/fail2ban.conf.xml /usr/local/freeswitch/conf/autoload_configs/
复制代码
3.png

 
3、加载mod_fail2ban模块

编辑 conf/autoload_configs/modules.conf.xml 文件,添加如下内容:
  1. [/code][align=center] 4.png [/align]
  2.  重启FreeSWITCH或执行重新load操作:
  3. [code]load mod_fail2ban
复制代码
5.png

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

配置文件路径:
  1. /usr/local/freeswitch/conf/autoload_configs/fail2ban.conf.xml
复制代码
配置文件内容如下(默认):
  1. <configuration name="fail2ban.conf" description="fail2ban log configs">
  2.   <bindings>
  3.     <config name="settings" desription="configs">
  4.       <param name="logfile" value="$${log_dir}/fail2ban.log"/>
  5.     </config>
  6.   </bindings>
  7. </configuration>
复制代码
6.png

5、模块运行效果

模块启动后,会自动创建日志文件,并写入相关日志。
默认日志路径:/usr/local/freeswitch/log/
7.png

 日志效果如下:
8.png

 
三、安装fail2ban软件

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

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

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

 配置文件目录: /etc/fail2ban
12.png

四、使用示例

 这里列举下使用示例。1、配置防火墙

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

2、配置fail2ban软件使用nftable

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

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

 为了方便演示,这里不使用默认的配置文件,修改后的 jail.conf 文件内容可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。3、添加freeswitch过滤规则

文件: filter.d/freeswitch-fail2ban.conf
文件内容可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。查看状态:
  1. fail2ban-client status freeswitch-fail2ban
复制代码
16.png

4、开启nftable服务

需要开启nftables服务:
  1. systemctl start nftables
复制代码
17.png

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

分机: 1009
填写错误的注册密码,执行注册操作。
连续10次注册失败,会自动拉黑,运行效果如下:
18.png

 到时间后,会自动解除:
19.png

 如需提前解除黑名单,可使用如下命令:
  1. /usr/bin/fail2ban-client set freeswitch-fail2ban unbanip 192.168.137.1
复制代码
运行效果如下:
20.png

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

源码目录:src/mod/event_handlers/mod_fail2ban/
21.png

源码只有一个文件: mod_fail2ban.c
1、函数说明

该模块有4个函数:
  1. mod_fail2ban_do_config : 模块配置解析函数
  2. fail2ban_logger : 生成fail2ban日志
  3. fail2ban_event_handler : 模块事件处理回调函数
  4. mod_fail2ban_load  : 模块加载函数
  5. mod_fail2ban_shutdown : 模块关闭函数
复制代码
22.png

2、关键函数说明

模块的加载、关闭及配置解析没什么说的,这里描述下该模块的fail2ban_event_handler函数。
关于该函数的描述,可从如下渠道获取:关注微信公众号(聊聊博文,文末可扫码)后回复 20251120 获取。 六、资源下载

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

 
【文件说明】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结果查看脚本 
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册