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


前言

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

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


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

联系我们

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


攻击实例

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

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 中:
[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
  • 把以下内容写入进去:
[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

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 20:44:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 20:44:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 20:44:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 20:44:04       20 阅读

热门阅读

  1. LeetCode49字母异位词分组

    2024-04-22 20:44:04       12 阅读
  2. 【JVM】JVM的垃圾回收机制与垃圾回收器的选择

    2024-04-22 20:44:04       13 阅读
  3. 从安装系统到部署datax

    2024-04-22 20:44:04       15 阅读
  4. CS32 C++ programming

    2024-04-22 20:44:04       12 阅读
  5. LeetCode-94-二叉树的中序遍历

    2024-04-22 20:44:04       11 阅读
  6. springboot接口提高查询速度方法

    2024-04-22 20:44:04       14 阅读
  7. 分治法构建Gray码问题

    2024-04-22 20:44:04       13 阅读
  8. 深入理解与运用Vue 2中的插槽(Slots)

    2024-04-22 20:44:04       13 阅读
  9. 测试testing1

    2024-04-22 20:44:04       14 阅读
  10. Mysql多表联查使用聚合函数常见问题

    2024-04-22 20:44:04       14 阅读
  11. 第七周笔记

    2024-04-22 20:44:04       11 阅读
  12. MySQL运维故障排查与高效解决方案

    2024-04-22 20:44:04       15 阅读
  13. 机器学习笔记 - torch.hub 和 torchvision.models 的区别

    2024-04-22 20:44:04       12 阅读
  14. MySQL运维故障解决方案:实战案例与深度解析

    2024-04-22 20:44:04       11 阅读
  15. JWT原理

    JWT原理

    2024-04-22 20:44:04      14 阅读