Apache 2.4.x ip 黑名单 [英] Apache 2.4.x ip blacklist
问题描述
我正在寻找一种简单的方法来将 Apache 2.4.x 中的 IP 地址列入黑名单.我的网站将尝试非法操作的 IP 地址记录到文本文件中.我想在 Apache 中使用这个文本文件来拒绝对这个 ip 列表的所有虚拟主机的所有访问.什么是最好的方式(最简单和最少资源消耗的方式)?找到 this 但这仅适用于 2.2.. 不确定这如何适用于 2.4..干杯.
这是一个运行 apache x64 的 windows x64 机器
@vastlysuperiorman 说得对,csf/lfd 是最擅长的.不幸的是,它们只能在 linux 上运行.
这个免费实用程序 承诺提供相同的功能
:动态监控访问尝试并自动阻止 IP 地址.如果出现误报,您可以使用命令取消阻止.当然值得一看.
另一种方法是创建一个 VM(如果您的平台支持虚拟化)部署一个非常小的规范 linux 机器,并将其用作代理.这应该很容易实现.顺便说一句,为什么不直接使用 linux?.. :-)
(这应该是对@vastlysuperiorman 帖子的评论,但我没有足够的 SO 代表来评论其他人的帖子)
编辑建议一个可能的基于 apache 2.4 的解决方案:
在 apache 中在 2.2 和 2.4 之间转换 ACL 指令
2.2 语法
订单拒绝,允许包括 conf/IPList.conf所有人都允许
2.4 语法
DocumentRoot/some/local/dir<目录/some/local/dir/><RequireAll>要求所有授予包括 conf/IPList.conf</RequireAll></目录>#这也能用<位置/><RequireAll>要求所有授予包括 conf/IPList.conf</RequireAll></目录># conf/IPLIst.com 实际上在/etc/apache2/conf/IPList.conf#(即,路径是相对于 apache 安装位置的.# 我猜你也可以使用列表的完整路径.
在 conf/IPList.conf 中,您将有单独的行,其中包含如下条目
<前>不需要ip 10.10.1.23不需要ip 192.168.22.199不需要 ip 10.20.70.100使用 mod-rewrite 和用于禁止的 IP 列表
- 要使重定向到另一个页面起作用,您需要将 RewriteRule 保留在您保护的基本 URL 之外.
- 例如,重定向在 DocumentRoot 上的 Directory 指令或/"上的 Location 指令下不起作用,因为禁令会影响我们想要显示的状态页面.
- 因此,最好将其保留在目录或位置指令之外,或者链接到另一个未受保护的网络服务器上的状态页面.
#必需的重写规则集重写引擎开启RewriteMap hosts-deny txt:/etc/apache/banned-hostsRewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND重写规则 ^/why-am-i-banned.html
## 在我们禁止的主机文件中,我们有:##/etc/apache2/banned-hosts(保持格式..它不仅仅是一个纯文本文件)##193.102.180.41 -192.168.111.45 -www.example.com -www.sumwia.net -
# 在我们的状态页面中,可以是如下所示的 html 或带有.txt"扩展名的纯文本文件#/var/www/html/why-am-i-banned.html#<html xmlns="http://www.w3.org/1999/xhtml"><头><title>为什么我的 IP 被封禁了?</title>头部><身体><h2>为什么我的 IP 地址被禁止?</h2><p>为了管理垃圾邮件发送者和其他安全需求,我们的服务器会自动阻止可疑的 IP 地址.但是,如果您认为您的 IP 地址已被阻止错误,请与我们联系.</p>