Nginx 故障2白名单动态ip更新主机名';s关联ip

Nginx 故障2白名单动态ip更新主机名';s关联ip,nginx,xml-rpc,iptables,ddos,fail2ban,Nginx,Xml Rpc,Iptables,Ddos,Fail2ban,这是我在这里的第一个问题,如果不遵守最佳实践,我表示歉意 最近,我成为一个后HTTP慢速DDoS攻击的受害者,在我的服务器上的相似和不同范围上使用不同的IP 我已经通过fail2ban为我的特定需求创建了一个个性化的过滤器,从而缓解了这一问题: [Definition] failregex = ^<HOST> .*POST .*xmlrpc\.php.* ^<HOST> .*HEAD .*m.y.i.p.:80.* ignoreregex = 问题是,在开发过程中,我

这是我在这里的第一个问题,如果不遵守最佳实践,我表示歉意

最近,我成为一个后HTTP慢速DDoS攻击的受害者,在我的服务器上的相似和不同范围上使用不同的IP

我已经通过fail2ban为我的特定需求创建了一个个性化的过滤器,从而缓解了这一问题:

[Definition]

failregex = ^<HOST> .*POST .*xmlrpc\.php.*
^<HOST> .*HEAD .*m.y.i.p.:80.*
ignoreregex =
问题是,在开发过程中,我经常把自己锁在外面。所以我决定把自己列入白名单。不幸的是,我的ISP提供了动态IP,因此我不得不将主机名与zonomi关联,并使用DDNS每隔一段时间用新分配的IP地址更新我的子域。然后,我将我的主机名添加到本地监狱的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
今天我正在使用Web服务器,我被阻止了,所以我检查了我的主机名,但它没有更新我的IP。我手动完成了这项工作,在DNS传播开来并且主机名的ip发生变化后,我尝试访问我的网站/服务器,但没有成功

在我看来,要么:(1)一旦设置了禁令,我就必须重新启动fail2ban来刷新我的IP上的块(我不喜欢这一点,因为我忘记了所有其他被阻止的IP,即真正的威胁),要么(2)fail2ban无法更新我主机名的相关IP

我的问题是:如果是(1),是否有一种方法可以在不重新启动fail2ban的情况下自动解除块,或者,如果是(2),是否有一种方法可以自动更新主机名的ip

fail2ban是否使用IPTABLES?我是否应该每分钟在iptables上cron一条与主机名IP一致的链

好心,
A.

Fail2Ban使用iptables。根据fail2ban的文档,它允许基于主机名或ip地址的白名单:


您应该使用动态DNS服务,为主机名设置一个小的TTL(比如600,相当于10分钟)。你甚至可以买300(这不是对标准的抱怨,但它会让你满意)。然后检查一下。如果您的DDNS主机名是使用默认TTL创建的,在大多数情况下,a记录的TTL介于3600和14400之间(1小时-4小时),那么这可能就是原因。

我使用Zonomi的HTTP API和DDNS更新程序来更新IP地址。检查间隔和强制更新分别每30分钟和1小时进行一次。不确定我是否正确配置了它们。我将把TTL参数添加到HTTP API热链接中,看看它是否有效。在fail2ban和Iptables end上,我需要做些什么,以便服务器在其更改时更新存储的主机名的ip?关于(1):如果您需要取消阻止当前被阻止的ip,而不必重新启动整个服务,只需提示:fail2ban client set yourjailname unbanip y.o.u.r.I.p。关于(2),我还没有深入研究更新我的主机名ip解决方案。每次我需要长时间访问时,我都会提示:fail2ban client set myjailname addignoreip m.y.I.p希望它能帮助其他人。
# 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