顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-解决方案:运行了 Freeswitch 的服务器攻击问题

文章目录


前言

运行在公网的 Freeswitch 服务器,每天都会接收到很多恶意的呼叫请求和注册请求,从而尝试盗打电话。每天大量的攻击,会导致 Freeswitch 产生很多日志,进而降低 Freeswitch 的处理能力。

解决方案:通过 cti 模块与 fail2ban 结合,可以把恶意IP封堵掉。


提示:以下是本篇文章正文内容,下面案例可供参考

联系我们

有意向了解呼叫中心中间件的用户,可以点击该链接添加工作人员的微信:顶顶通小何


攻击实例

在 Freeswitch 控制台中,有时会接收到这样的日志:

bash 复制代码
2024-04-13 17:21:01.959347 98.47% [NOTICE] cti_fail2ban.c:35 write to fail2ban:ip[124.32.10.1] user[1177] at[2024-04-13T17:21:01.959347+0800] Registration failed succeed!

该日志中的IP:124.32.10.1如果是不认识的IP,和账号:1177不是用户自己创建的账号。这就是被攻击了。

解决方案

安装并配置 fail2ban,把非法的IP加入防火墙黑名单,这样就可以有效的杜绝攻击了。另外,为了防止开发测试过程误触发屏蔽规则,导致开发机器连接不上服务器,建议把开发电脑的外网IP加入白名单。

安装 fail2ban

yum安装:yum install fail2ban -y

编辑jail.conf

  • 以此执行以下命令:
    cd /etc/fail2ban
    mv jail.conf jail.conf.local
    vi jail.conf
  • 将以下的内容写入到文件:vi jail.conf 中:
bash 复制代码
[cti]
enabled = true
filter = cti
action = iptables-allports[name=cti, protocol=all]
logpath = /ddt/fs/log/cti_fail2ban.log
bantime = 86400
maxretry = 5
findtime  = 300
ignoreip = 127.0.0.1/8
backend = auto

内容配置说明:
logpath 监视cti记录的异常IP日志。
bantime 封堵时间,单位秒,86400秒就是24小时。
maxretry findtime(300秒)时间内日志文件出现的IP超过maxretry(5)次就封堵。
ignoreip ip白名单

设置日志文件权限

给/ddt/fs/log/目录修改安全上下文,可执行命令:chcon -R -t var_log_t /ddt/fs/log

也可以直接关闭sulinux,如果不修改安全上下文,会导致fail2ban启动失败。

设置filter

  • 执行命令:vi /etc/fail2ban/filter.d/cti.conf
  • 把以下内容写入进去:
bash 复制代码
[Definition]
failregex = ^ip\[<HOST>\].*
ignoreregex =

fail2ban 操作

  • 设置开机启动命令:
    systemctl enable fail2ban

  • 启动命令:
    systemctl enable fail2ban

  • 查看启动状态命令:
    systemctl status fail2ban

  • 手动封堵一个IP
    fail2ban-client set cti banip IP地址

  • 手动解封一个IP
    fail2ban-client set cti unbanip IP地址

  • 添加白名单
    fail2ban-client set cti addignoreip IP地址

  • 删除白名单
    fail2ban-client set cti delignoreip IP地址

  • 查看被禁止的IP地址
    iptables -L -n

相关推荐
nix.gnehc1 小时前
Go进阶攻坚+专家深耕级学习清单|聚焦高并发、高性能中间件/底层框架开发(Java开发者专属)
学习·中间件·golang
金刚猿1 天前
05_虚拟机中间件部署_ubuntu 系统 安装 Redis 7.0.15
redis·ubuntu·中间件
GEM的左耳返1 天前
Java面试深度剖析:从JVM到云原生的技术演进
jvm·spring boot·云原生·中间件·java面试·分布式架构·ai技术
cuber膜拜4 天前
LangChain v1.0 Middleware(中间件)使用指南
python·中间件·langchain·langgraph
桂花很香,旭很美6 天前
[7天实战入门Go语言后端] Day 5:中间件与业务分层——日志、鉴权与请求超时
开发语言·中间件·golang
金刚猿6 天前
03_虚拟机中间件部署_Nacos 部署单机模式、配置鉴权
linux·中间件·nacos·配置鉴权
黄俊懿7 天前
【架构师从入门到进阶】第一章:架构设计基础——第二节:架构设计原则
分布式·后端·中间件·架构
花果山总钻风9 天前
SQLAlchemy各种排序示例
后端·python·中间件
weixin_421994789 天前
依赖注入与中间件 - ASP.NET Core 核心概念
后端·中间件·asp.net