Apache 2.4.x ip黑名单

Apache 2.4.x ip黑名单,apache,apache2,ip,Apache,Apache2,Ip,我正在寻找一种在Apache2.4.x中将IP地址列入黑名单的简单方法。我的网站将尝试非法操作的ip地址记录到文本文件中。我想在Apache中使用此文本文件来拒绝对此ip列表的所有vhost的所有访问。最简单、消耗资源最少的最佳方式是什么? 已找到,但这仅适用于2.2。。不确定这如何适用于2.4。。 干杯 编辑:这是一个运行apachex64的windowsx64框,我也没有看到一个从apache本身动态阻止访问的好方法。有一些不太好的方法:您可以设置一个环境变量来包含IP列表,然后将模块与${

我正在寻找一种在Apache2.4.x中将IP地址列入黑名单的简单方法。我的网站将尝试非法操作的ip地址记录到文本文件中。我想在Apache中使用此文本文件来拒绝对此ip列表的所有vhost的所有访问。最简单、消耗资源最少的最佳方式是什么? 已找到,但这仅适用于2.2。。不确定这如何适用于2.4。。 干杯


编辑:这是一个运行apachex64的windowsx64框,我也没有看到一个从apache本身动态阻止访问的好方法。有一些不太好的方法:您可以设置一个环境变量来包含IP列表,然后将模块与${REMOTE_ADDR}和env函数一起使用,但这是一种延伸

但是,我使用了几个轻量级模块,它们有助于保护Apache服务器

ConfigServer防火墙CSF/LFD是linux系统的优秀解决方案。它提供了一种管理iptable的简单方法,可以设置为执行暴力检测和阻塞。信息

编辑: 将以下行添加到/etc/csf/csf.deny以包括自定义IP阻止列表:

Include /var/www/example.deny
或者,更新脚本以将IP地址直接附加到csf.deny:

echo $badIP >> /etc/csf/csf.deny
或者首选使用CSF命令行选项:

csf -d 10.20.30.40
CSF自述


mod_security是我最喜欢的Apache/nginx模块之一。它检测危险的GET和POST请求,并相应地阻止访问。当设置正确时,它将触发CSF来阻止经常违反规则的IP地址。细节

@vastlysuperiorman说得对,csf/lfd在这方面是最好的。不幸的是,它们只在linux上运行

承诺提供相同的功能:动态监视访问尝试和自动阻止IP地址。如果出现误报,可以使用命令取消阻止。当然值得一试

如果您的平台支持虚拟化,另一种方法是创建一个VM部署一个非常小的spec linux box,并将其用作代理。这应该很容易实现。顺便说一句,为什么不直接使用linux?:-

这本应该是对@vastlysuperiorman的帖子的评论,但我没有足够的SO代表来评论其他人的帖子

经过编辑,建议可能的基于apache 2.4的解决方案:

在apache中的2.2和2.4之间转换ACL指令

2.2语法

2.4语法

当然,您可以解析日志文件,并根据需要填充conf/IPList.conf或/etc/apache2/banked hosts

作为短期解决办法


另一种允许您使用2.2语法的方法是安装模块并继续使用您不推荐的2.2样式的“Deny,allow”指令。但这只是一个短期解决方案,因为该模块只是用来帮助过渡的,可能会在apache 2.4的未来版本中消失。谢谢您的评论,但我已经知道并使用mod_sec,我正在寻找一个实用的答案,例如,如何在mod_sec中完成,或者……使用csf可能是一个很好的选择。如果您的站点已经包含一个将IP地址写入文件的脚本,只需让它将地址附加到/etc/csf/csf.deny即可。这可以通过直接追加该行或在命令行上运行命令csf-d10.20.30.40来完成。或者,您可以将Include/var/www/example.deny添加到csf.deny以包含自定义块列表。我的答案被相应地编辑了。我必须阅读这篇文章,因为我不知道csf。谢谢你的留言,我会尽快发表评论:是的,看起来不错,但我忘了提到,这是一个窗口框:啊。。。很抱歉这就是我没有发布更通用的回复的原因。如何使用apache mod_rewrite将ips列入黑名单-无论如何-ips应该在防火墙中被阻止,而不是Apache2如果他们需要阻止特定apache文件夹中的特定IP,你就大错特错了。谢谢你的输入,我会看一看,但这个解决方案对我来说不是很好,因为它基本上是由软件防火墙处理的,而不是在web服务器级别,因为我可能想重定向到一个页面:你因为非法操作而被禁止,如果你认为这是一个错误,给我发封邮件。。所以我真的很想看到一个针对Apache2.4的解决方案……好吧,很公平。然后,您必须关注基于modrewrite的解决方案。看看和是的,第一个链接在我的msg中,并且实际上希望有一个2.4版本……apache 2.2和2.4之间没有太大的区别,那么您需要翻译成2.4语法吗?接受答案中的示例或带有RewriteMap?的示例已在2.4中更改,因为我不太擅长于此,但接受答案是。。
order Deny,Allow
include conf/IPList.conf
Allow from all
DocumentRoot /some/local/dir

<Directory /some/local/dir/>
   <RequireAll>
      Require all granted
      Include conf/IPList.conf
   </RequireAll>
</Directory>

#this will also work
<Location />
   <RequireAll>
      Require all granted
      Include conf/IPList.conf
   </RequireAll>
</Directory>

# conf/IPLIst.com is actually in /etc/apache2/conf/IPList.conf 
#   (ie, paths are relative to where apache is installed.  
#    I guess you can also use the full path to the list.
Require not ip 10.10.1.23 Require not ip 192.168.22.199 Require not ip 10.20.70.100
#Required set of rewrite rules
RewriteEngine on
RewriteMap    hosts-deny  txt:/etc/apache/banned-hosts
RewriteCond   ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond   ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND
RewriteRule   ^  /why-am-i-banned.html
##  inside our banned hosts file, we have:
## /etc/apache2/banned-hosts (maintain the format .. its not just a plain text file)
## 

193.102.180.41 -
192.168.111.45 -
www.example.com -
www.sumwia.net -
# inside our status page, could be html as below or a plain text file with '.txt' extension
#/var/www/html/why-am-i-banned.html
#
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Why is my IP banned?</title>
</head>
<body>
<h2>Why is my IP address banned?</h2>
<p>
To manage spammers and for other security needs, our server automatically blocks      
suspicious IP address.  If however you reckon your IP address has been blocked 
wrongfully, please contact us.
</p>
</body>
</html>