fail2ban - 为特定的 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.php
or 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"
解决方案
您上面评论中的正则表达式肯定不会有任何命中,因为它错过了最重要的部分<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。
(顺便说一句,我相信你妈妈从小就爱你。)
推荐阅读
- vuejs2 - 如何在 Vuetify 中为图像制作材质框
- sql - 谁能帮助我如何创建任何人都可以通过互联网访问的 SQL 数据库?
- jenkins - Jenkins:它如何查找 Jenkinsfile 位置
- java - 在 tomcat spring 项目上运行 HotswapAgent 的异常
- core-data - 线程1:断点1.1
- python - 根据数据框块将不同的值分配到新列中
- mysql - MySQL CASE 与 COUNT 查询并添加另一列
- r - 如何 R 将 cat() 输出识别为变量名
- python - 将日期时间附加到数组中(Python)
- contao - Contao 4.4.x 从 url 中删除前缀 .html