fail2ban屏蔽fs中的骚扰注册

  • 背景
  • Fail2Ban
  • 安装
  • 配置

背景

在阿里云上部了一套fs满足公网业务需要。布置好后打开fs_cli看了一眼,全是来自公网的骚扰注册,足见公网环境的风险(不过aws似乎情况稍好)。

freeswitch 修改注册端口 freeswitch注册不上_linux

Fail2Ban

使用Fail2Ban来防御注册骚扰的主要原因是,Fail2Ban已经和freeswitch有了很好的集成。Fail2Ban的工作原理简单来说,就是扫描fs的日志,从中发现疑似骚扰的ip,然后直接ban掉。

安装

centOS下安装很简单:yum install fail2ban

配置
  • 修改扫描日志路径 /etc/fail2ban/jail.conf中,[freeswitch]标签下的logpath,修改为fs日志的路径:
  • 自定义封禁逻辑 /etc/fail2ban/jail.d/路径下新增配置文件touch freeswitch.local。新增[freeswitch]标签,并新增如下配置(如果60s内检查到某个ip注册失败5次,则将这个ip封禁86400s)。如果要加白名单也是在这里加。
  • 设置日志捕获和匹配逻辑 /etc/fail2ban/filter.d/freeswitch.conf中:
  • 设置自启并重启 设置自启:systemctl enable fail2ban.service 重启:systemctl restart fail2ban
  • 开启防火墙 fail2ban需要和防火墙一起工作。
  • 查看firewalld状态:systemctl status firewalld
  • 开启防火墙:systemctl start firewalld
  • 设置自启:systemctl enable firewalld

注意!!!firewalld默认是所有端口全ban的,所以要先开放我们需要的端口,例如业务需要8082的tcp端口,和16384-32768的udp端口:

  • 查看8082端口是否开放:firewall-cmd --query-port=8082/tcp
  • 开启8082端口: firewall-cmd --zone=public --add-port=8082/tcp --permanent
  • 批量开启16384-32768端口:firewall-cmd --zone=public --add-port=16384-32768/udp--permanent
  • 查看所有已开放端口:firewall-cmd --zone=public --list-ports
  • 重启防火墙:firewall-cmd --reload
  1. fail2ban基本命令
  • 查看fail2ban客户端状态:fail2ban-client status
  • 查看fs的fail2ban状态:fail2ban-client status freeswitch
  • ban掉一个ip:fail2ban-client set freeswitch banip 113.113.113.113
  • 解禁一个ip:fail2ban-client set freeswitch unbanip 113.113.113.113
  1. 查看fail2ban日志 fail2ban日志位于/var/log/fail2ban.log,可以看到fail2ban运行详情: 重启后从日志中可以看到,连ban了多个ip。再到fs_cli中看一眼,全世界都清净了。
  2. fail2ban不仅可以屏蔽骚扰注册,同时也可以屏蔽骚扰呼叫,我这里fs对ip做了acl控制,所以暂时用不到,之后如果用到再更新。
  3. 这篇博文写的更详细。