nginx fail2ban白名单动态ip更新主机名的关联ip

z18hc3ub  于 2023-05-16  发布在  Nginx
关注(0)|答案(2)|浏览(426)

这是我的第一个问题,所以我很抱歉,如果不符合最佳实践。
最近,我一直是POST HTTP慢速DDoS攻击的受害者,在我的服务器上使用类似和不同范围的不同IP。
我已经成功地使用fail 2ban来缓解它,通过创建一个个性化的过滤器来满足我的特定需求:

[Definition]

failregex = ^<HOST> .*POST .*xmlrpc\.php.*
^<HOST> .*HEAD .*m.y.i.p.:80.*
ignoreregex =

这两个是我的服务器上最递归的尝试:'POST xmlrpc.php'请求和'HEAD http://m.y.i.p/ {phpmyadmin| phpwhatever variation|等等。
我成功地设法阻止他们使用我当地的监狱作为这一点

[nginx-xmlrpc]
enabled = true
filter = nginx-xmlrpc
action = route
logpath = /var/log/nginx/access.log
maxretry = 3
findtime = 10800
bantime = 86400

问题是我在开发过程中经常把自己锁在外面。所以我决定把自己列入白名单。不幸的是,我的ISP提供动态ip,所以我不得不将主机名关联到zonomi,并使用DDNS每隔一段时间就用我新分配的IP地址更新我的子域。然后,我将我的主机名添加到本地jail上的ignoreip条目中,如下所示:

# MISCELLANEOUS OPTIONS
#

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8 my.hostname.sub.domain

今天我在网络服务器上工作,我被阻止了,所以我检查了我的主机名,它没有更新我的IP。我手动做了它,在DNS传播和主机名的IP更改后,我试图访问我的网站/服务器,但没有成功。
在我看来,要么:(1)一旦设置了禁令,我将不得不重新启动fail 2ban来刷新我的IP上的块(我不喜欢,因为所有其他IP的阻止都被遗忘了,真实的的威胁)或(2)不知何故fail 2ban无法更新我的主机名的相关IP。
我的问题是:如果是(1),有没有办法在不重启fail 2ban的情况下自动解除封锁,或者如果是(2),有没有办法自动更新我的主机名的ip?
fail 2ban是否使用IPTABLES?我应该每分钟在iptables上用我的主机名的IP刷新一个链吗?
好吧,A。

v64noz0r

v64noz0r1#

Fail 2Ban使用iptables。根据fail 2ban的文档,它允许基于主机名或IP地址的白名单:http://www.fail2ban.org/wiki/index.php/Whitelist
您应该使用动态DNS服务,为您的主机名设置一个小的TTL(如600,相当于10分钟)。你甚至可以去300(这不是抱怨的标准,但它会的工作)。那就去查查看。如果您的DDNS主机名是使用默认TTL创建的,在大多数情况下,A记录的TTL在3600和14400之间(1小时- 4小时),那么这可能是原因。

axkjgtzd

axkjgtzd2#

嗨,我是同一攻击的受害者,我从来没有在我的stackoverflow帐户上发布过,所以这里是我的第一篇文章,以帮助你我如何解决这个问题。
我感觉更好,因为我对xmlrpc.php进行了研究,并确定它是WordPress中的一个弃用功能,我永远不会使用,但你不能删除该文件作为其核心对象,WordPress在删除时会变得混乱。
最后,这解决了我的问题,不试图捕捉流量到xmlrcp.php,但通过删除venerability,然后测量和班宁那些试图使用它。

Step1拒绝访问xmlrpc.php

编辑已启用站点的nginx配置

nano /etc/nginx/sites-enabled/YOURCONFIG.conf

在此站点的配置中添加以下行

  • 这将拒绝对该文件的所有访问,它将拒绝流量并将其记录为http错误代码403,然后在稍后的fail 2ban中拾取。*
location = /xmlrpc.php {
    deny all;
}

Step2配置fail 2ban来监视和禁止403事件,因为过多的xmlrpc.php请求 *404也是因为我们需要它而添加 *

创建定义的动作:

touch /etc/fail2ban/filter.d/nginx-403.conf
touch /etc/fail2ban/filter.d/nginx-404.conf
nano /etc/fail2ban/filter.d/nginx-403.conf
nano /etc/fail2ban/filter.d/nginx-404.conf

定义包含:

/etc/fail2ban/filter.d/nginx-403.conf

##nginx-403.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 403
ignoreregex =

/etc/fail2ban/filter.d/nginx-404.conf

##nginx-404.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" 404
ignoreregex =

编辑jail.conf添加新定义:

nano /etc/fail2ban/jail.conf

触发器增加以下行:

/etc/fail2ban/jail.conf

[nginx-403]
enabled = true
port    = http,https
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 300

[nginx-404]
enabled = true
port    = http,https
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 300

Step 3重新加载配置,使新更改生效

编辑配置后重新加载服务以使更改生效

systemctl reload nginx.service fail2ban.service

通过检查状态确保服务正确启动

systemctl status nginx.service fail2ban.service

Step 4验证影响

使用任何你喜欢的方法来查看我使用的nginx访问日志:

tail /var/log/nginx/access.log -f
OR
tail /var/log/nginx/access.log -f|grep xmlrpc

您应该会看到流量被记录为新的错误代码:

  • 从原始的HTTP代码200粗体
  • 35.xxx.xx.xxx - - [11/May/2023:21:52:08 -0400]“POST/xmlrpc.php HTTP/1.1”200413“-”“Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/78.0.3904.108 Safari/537.36”
  • 新的HTTP代码403粗体
  • 35.xxx.xx.xxx - - [11/May/2023:21:52:09 -0400]“POST/xmlrpc.php HTTP/1.1”403548“-”“Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/78.0.3904.108 Safari/537.36”
    使用您喜欢的任何方法查看我使用的sys日志:
journalctl -ef|grep fail2ban

观看fail 2ban拾取新的http代码403定义并触发禁令:

  • 看着机器人被禁 *
May 11 22:22:11 myhostnamehere.Com fail2ban.actions[17191]: NOTICE [nginx-403] Ban 35.xxx.xxx.xx

[eof]好了。
我的web服务器CPU和PHP进程感觉更好。但现在我关闭,以解决300重定向垃圾邮件现在快乐班宁!

相关问题