使用fail2ban保护SSR不被扫描爆破

@xuing  October 9, 2019

介绍

查看SSR服务器日志,看到了大量不认识的IP在进行密码、协议尝试(爆破)。看着很是不爽,而且可能会影响性能。网上有一些用fail2ban来保护ss的。自动ban掉这些不认识的ip。但是ssr的文章基本没看到,ssr也差不多,这里给出解决办法。

错误日志如下:

2019-09-17 17:13:08 ERROR tcprelay.py:1097 can not parse header when handling connection from ::ffff:175.184.165.96:54234

解决方案

1.安装fail2ban。apt 或者yum都可。git安装最新也行,可以看官方文档。
2./etc/fail2ban/ 下新建一个jail.local。(或者拷贝一份jail.conf不要修改jail.conf,以及其他的conf。具体原因可以看官网和conf文件本身的介绍。)

内容如下:

[shadowsocksR]
enabled = true
filter = shadowsocksR
port = 0:65535
logpath = /usr/local/shadowsocksr/ssserver.log
maxretry = 3
bantime = 43200
logencoding = utf-8
findtime = 86400

logpath 根据自己真实路径进行修改。 不要出现中文,会有问题的。

3.配置filter

[INCLUDES]
before = common.conf
[Definition]
_daemon = shadowsocksR
failregex = ^\s+ERROR\s+tcprelay.py:1097 can not parse header when handling connection from ::ffff:<HOST>:\d+$
ignoreregex =

这里的正则,是我根据上面的日志,进行修改的。

然后重启或reload即可
sudo fail2ban-client reload
sudo systemctl restart fail2ban.service

备注

查看日志命令
tail /var/log/fail2ban.log
查看fail2ban整体状态
sudo fail2ban-client status
查看fail2ban的ssr规则状态
sudo fail2ban-client status shadowsocksR
解ban并加入白名单
sudo fail2ban-client set shadowsocksR unbanip IP地址 解ban
sudo fail2ban-client set shadowsocksR addignoreip IP地址 加入白名单 支持CIDR表示法,如127.0.0.1/8
正则测试
fail2ban-regex '2019-10-09 14:22:52 ERROR tcprelay.py:1097 can not parse header when handling connection from ::ffff:171.214.210.236:20752' '^\s+ERROR\s+tcprelay.py:1097 can not parse header when handling connection from ::ffff:<HOST>:\d+$'
还可以在jail.local里加入下面的,可以很方便的开启sshd防护。其他的同理。

[sshd]
enabled = true

成功后的截图
2019-10-09T07:39:10.png

有问题欢迎留言。

参考链接

SSR被恶意扫描时需要做的事情
使用fail2ban加固ShadowSocks python manyuser
CentOS7下安装和使用Fail2ban


添加新评论