更新

更新

我有一个应用程序,似乎它受到了巨大的 ip 攻击。

  • 日志档案:/root/kitty/nohup.out
  • 工艺:小猫
  • 端口:8888
[2021-08-31 10:02:20] [ALL] 168.138.142.22:50384 incoming connection
[2021-08-31 10:02:21] [ALL] 168.138.78.185:57728 incoming connection
[2021-08-31 10:02:21] [ALL] 168.138.78.185:57614 incoming connection
[2021-08-31 10:02:21] [ALL] 168.138.146.133:59078 incoming connection
[2021-08-31 10:02:22] [ALL] 140.238.152.56:32884 incoming connection
[2021-08-31 10:02:22] [ALL] 168.138.146.133:57606 tunnel established
[2021-08-31 10:02:22] [ALL] 168.138.146.133:57606 SSL session reused
[2021-08-31 10:02:22] [ALL] 140.238.152.56:32976 incoming connection
[2021-08-31 10:02:22] [ALL] 140.238.152.56:48210 incoming connection
[2021-08-31 10:02:22] [ALL] 168.138.78.185:52390 tunnel established

我想做的是:

  1. tail 日志文件以获取过去 60 秒的日志。
  2. 阻止超过请求限制的ip,例如2个请求/秒

如何通过fail2ban做到这一点?

更新

您能告诉我要配置哪个文件,然后运行哪个命令吗?

我修改了/etc/fail2ban/jail.conf,添加了内容

[DEFAULT]

maxretry = 5 
findtime = 300 
bantime = 3600
bantime.increment = true
bantime.factor = 2 

重新启动fail2ban服务,没有任何反应。

我创建了一个名为 的新过滤器/etc/fail2ban/filter.d/kitty.conf,其内容是:

[INCLUDES]
before = common.conf

[DEFAULT]
_daemon = kitty

也将此内容添加到/etc/fail2ban/jail.conf

[kitty]
enabled = true
maxretry = 1000
findtime = 100
bantime = 3600
bantime.increment = true
bantime.factor = 2
logpath = /root/kitty/nohup.out

然后重新启动fail2ban服务,现在我看到kitty在列表中,

# fail2ban-client status kitty
Status for the jail: kitty
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list:    /root/kitty/nohup.out
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list:   

但仍然没有 IP 被阻止(我可以看到大量的恶意 IP 出来......)

您能告诉我要配置哪个文件,然后运行哪个命令吗?

答案1

从技术上讲,您所要求的可以通过监狱文件的 DEFAULT 部分中的这两个参数来实现。

[DEFAULT]
maxretry = 2
findtime = 1

但这是不切实际的,它太严格了,你很可能会禁止合法的 IP,只是试图进行正常的访问。

[DEFAULT]
maxretry = 5
findtime = 300

现在,您可以在该日志中看到“攻击”者正在使用某些 IP 轮换脚本,因此您可以执行更有效的操作,例如增加禁止时间(对于屡犯者)。尝试类似的方法:

[DEFAULT]
maxretry = 5
findtime = 300
bantime = 3600
bantime.increment = true
bantime.factor = 2

如果您屡犯,上述禁令时间将加倍,并且每次该 IP 被抓到时,禁令时间都会加倍。足以导致他们的脚本失败并停止。

如果您希望针对特定服务执行这些操作,只需在监狱文件的特定服务中包含选项,而不是[DEFAULT].

请记住在进行任何更改后重新启动/重新加载服务。

相关内容