使用fail2ban为frp增加一道墙
使用fail2ban为frp增加一道墙
一、前期准备
在 frp 的配置文件中添加 log.to = "/var/log/frps.log" 这一行内容,目的是把 frp 的日志输出到指定的 /var/log/frps.log 文件,方便后续 fail2ban 读取日志进行分析。
二、安装 fail2ban
使用 yum 命令来安装 fail2ban,该工具可对 frp 提供防护功能。具体命令如下:
1
2
yum install epel-release -y
yum install fail2ban -y
三、配置 fail2ban
编写自定义过滤器
在 /etc/fail2ban/filter.d/frps.conf 文件中编写如下内容:
1
2
3
4
[Definition]
failregex = ^.*get a user connection \[<HOST>:[0-9]*\]
^.*get a new work connection: \[<HOST>:[0-9]*\]
ignoreregex =
ignoreregex:为空表示不设置忽略的正则表达式规则。
添加 .local 文件
在 fail2ban 中添加 /etc/fail2ban/jail.local 文件,并进行如下配置:
1
2
3
4
5
6
7
8
9
10
11
[frp]
enabled = true
findtime = 10m
maxretry = 5
bantime = 3m
filter = frps
logpath = /var/log/frps.log
protocol = all
chain = all
port = all
action = iptables-allports[name=frp,protocol=tcp]
enabled = true:开启 frp 防护规则。findtime = 10m:设定在 10 分钟内统计连接尝试次数。maxretry = 5:10 分钟内连接尝试超过 5 次,判定为异常。bantime = 3m:将异常 IP 封禁 3 分钟。filter = frps:指定使用frps过滤器。logpath = /var/log/frps.log:指定日志文件路径。protocol = all:防护所有协议的连接。chain = all:防护所有链。port = all:防护所有端口。action = iptables - allports[name=frp,protocol=tcp]:使用iptables封禁异常 IP 的所有 TCP 端口。
四、检查状态
使用 fail2ban - client 命令查看 frp 监狱的状态,该命令能显示当前被封禁的 IP 地址、尝试次数、封禁时间等信息:
1
sudo fail2ban-client status frp
输出信息包含:
- Filter 部分:
Currently failed:当前失败的连接尝试次数。Total failed:总的失败连接尝试次数。File list:日志文件路径,此处为/var/log/frps.log。
- Actions 部分:
Currently banned:当前被封禁的 IP 数量。Total banned:总共被封禁的 IP 数量。Banned IP list:被封禁的 IP 列表(若有)。
过段时间可以看到已经发力了:
本文由作者按照
CC BY 4.0
进行授权
