首页 > 解决方案 > 为特定的 url 设置 Fail2ban

问题描述

对于狗屎和傻笑,我创建了一个小的蜜罐 php 脚本。如果它是从网页调用的,我只想将 IP 地址放入监狱。

我创建了一个看起来像这样的过滤器

文件名:apache-specific-url.conf

[INCLUDES]
before = apache-common.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*\/sshlogin.php\/.*$
ignoreregex =

我还将以下内容放入了我的 jail.local

[apache-specific-url]
enabled  = true
port     = http,https
filter   = apache-specific-url
logpath  = %(apache_access_log)s
bantime  = 48h
maxretry = 1

Fail2ban 显示我的监狱正在运行。但是,如果我通过domain.com/sshlogin.phpor IPaddress/sshlogin.php... 访问它,则该 URL 永远不会被禁止。

任何帮助表示赞赏。

日志的尾部

111.111.111.111 - - [13/Jan/2021:15:05:16 -0500] "GET /sshlogin.php HTTP/1.1" 200 3548 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15"
111.111.111.111 - - [13/Jan/2021:15:05:19 -0500] "GET /sshlogin.php HTTP/1.1" 200 3548 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15"
111.111.111.111 - - [13/Jan/2021:15:05:20 -0500] "GET /sshlogin.php HTTP/1.1" 200 3548 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15"
111.111.111.111 - - [13/Jan/2021:15:05:25 -0500] "GET /sshlogin.php HTTP/1.1" 200 3548 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15"

标签: fail2banhoneypot

解决方案


您上面评论中的正则表达式肯定不会有任何命中,因为它错过了最重要的部分<HOST>,并且还在该部分之后立即指定了行尾sshlogin.php。您帖子中的正则表达式是错误的,只是因为您在该sshlogin.php部分后面包含了一个多余的斜杠,否则它会匹配。但是,您还需要为该特定日志设置自定义日期模式,因此请使用以下命令:

[INCLUDES]
before = apache-common.conf

[Definition]
failregex = ^<HOST> - - \[[^\]]*\] "(GET|POST) /sshlogin\.php
ignoreregex =
datepattern = %%d/%%b/%%Y:%%H:%%M:%%S \-%%f

我更改了 failregex 以使其更具体,并避免不必要的量词,这可能会给您带来麻烦。

请务必在更改后重新启动 fail2ban。

(顺便说一句,我相信你妈妈从小就爱你。)


推荐阅读