Fail2ban是一个强大的安全工具,能够监控服务器日志文件,检测可疑活动,并自动配置防火墙规则来阻止发起这些活动的IP地址。下面是详细的配置和使用方法:
安装Fail2ban
在Debian/Ubuntu系统上:
1 2
| sudo apt update sudo apt install fail2ban
|
在CentOS/RHEL系统上:
1 2
| sudo yum install epel-release sudo yum install fail2ban
|
基本配置
- 首先,创建自定义配置文件:
1
| sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
|
- 编辑自定义配置文件:
1
| sudo nano /etc/fail2ban/jail.local
|
- 设置全局参数,例如:
1 2 3 4 5 6 7 8 9
| [DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = iptables-multiport
|
为frps创建自定义规则
- 创建自定义过滤器来匹配frps日志中的异常行为:
1
| sudo nano /etc/fail2ban/filter.d/frps.conf
|
- 添加以下内容来检测RDP连接尝试:
1 2 3
| [Definition] failregex = frps\[\d+\]: .* \[proxy/proxy\.go:\d+\] \[.*\] \[rdp\] get a user connection \[<HOST>:\d+\] ignoreregex =
|
- 创建一个专门监控HTTP代理错误的过滤器:
1
| sudo nano /etc/fail2ban/filter.d/frps-http.conf
|
- 添加以下内容:
1 2 3
| [Definition] failregex = frps\[\d+\]: .* \[httputil/reverseproxy\.go:\d+\] do http proxy request \[host: .*\] error: .* <HOST> .* ignoreregex =
|
- 在jail.local文件中添加自定义规则:
1
| sudo nano /etc/fail2ban/jail.local
|
- 添加以下配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| [frps-rdp] enabled = true port = 你的frp服务端口 filter = frps logpath = /var/log/syslog
maxretry = 3 findtime = 300 bantime = 3600
[frps-http] enabled = true port = 你的frp服务端口 filter = frps-http logpath = /var/log/syslog
maxretry = 5 findtime = 600 bantime = 3600
|
启动并测试Fail2ban
- 重启Fail2ban服务:
1
| sudo systemctl restart fail2ban
|
- 检查服务状态:
1
| sudo systemctl status fail2ban
|
- 查看当前监狱状态:
1
| sudo fail2ban-client status
|
- 检查特定监狱详情:
1
| sudo fail2ban-client status frps-rdp
|
- 手动解除IP封禁(如有需要):
1
| sudo fail2ban-client set frps-rdp unbanip 123.45.67.89
|
监控和维护
1
| sudo tail -f /var/log/fail2ban.log
|
- 考虑设置永久忽略的IP(白名单):
在jail.local中的[DEFAULT]部分添加:
1
| ignoreip = 127.0.0.1/8 192.168.1.0/24 你的固定IP地址
|
通过这种配置,Fail2ban将自动识别并阻止对frps服务的可疑访问尝试,从而大大提高服务器的安全性。