fail2ban屏蔽fs中的骚扰注册
- 背景
- Fail2Ban
- 安装
- 配置
背景
在阿里云上部了一套fs满足公网业务需要。布置好后打开fs_cli看了一眼,全是来自公网的骚扰注册,足见公网环境的风险(不过aws似乎情况稍好)。
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
- 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
- 查看fail2ban日志 fail2ban日志位于/var/log/fail2ban.log,可以看到fail2ban运行详情: 重启后从日志中可以看到,连ban了多个ip。再到fs_cli中看一眼,全世界都清净了。
- fail2ban不仅可以屏蔽骚扰注册,同时也可以屏蔽骚扰呼叫,我这里fs对ip做了acl控制,所以暂时用不到,之后如果用到再更新。
- 这篇博文写的更详细。