6

我想维护一个文件,其中包含被阻止使用站点的 ip 列表。我知道可以使用拒绝来实现这一点(例如拒绝来自 127.0.0.1 10.0.0.1 some.other.ip.address)。

但是,我想要一个外部文件,以便无权访问配置的个人可以使用 ip 更新 txt 文件,然后将其包含在拒绝中。

有没有人对如何实现这一点有任何建议?非常感谢任何帮助。

4

6 回答 6

9

查看 Apache Include 指令:

http://httpd.apache.org/docs/2.2/mod/core.html#include

您可以创建一个单独的配置文件,其中包含您的拒绝列表并包含在任何其他配置文件中,即站点可用的站点。下面的示例用法:

在 /etc/apache2/sites-enabled/yoursite.conf

<VirtualHost *:80>
...

Include /etc/apache2/sites-access/yoursite.conf

...
</VirtualHost>

在 /etc/apache2/sites-access/yoursite.conf

order allow,deny
deny from 10.0.0.1
allow from all
于 2012-05-24T13:57:42.177 回答
3

使用RewriteMap映射作为外部 IP 地址文件适用于单个 IP 地址的列表:

RewriteEngine on
RewriteMap allowed "txt:${site_dir}/etc/allowed_ip_addresses"

UnsetEnv ALLOWED

RewriteCond ${allowed:%{REMOTE_ADDR}} 1
RewriteRule ^ - [E=ALLOWED]

<Location />
  Deny  from all
  Allow from env=ALLOWED
</Location>

然后allowed_ip_addresses包含如下行:

10.42.1.123      1
192.168.100.456  1

这将允许的 IP 地址映射到 value 1,并将所有其他 IP 地址映射到空字符串。

在地图中RewriteCond查找REMOTE_ADDR,如果是,1则设置环境变量。UnsetEnv确保变量绝对未设置,否则。

然后Allow from仅在设置了该环境变量时才允许访问。

外部映射文件可以具有与您的 Apache 配置不同的文件系统权限,并且对它的更改会立即生效,而无需重新启动 Apache。

于 2018-10-26T16:26:11.273 回答
2

这不是真正的安全方法,但您可以将此 txt 文件放在共享目录中,并使用 cron 作业更新 apache 配置...

另一种方法是使用 htaccess ..

order allow,deny
deny from 10.0.0.1
allow from all
于 2012-05-24T13:22:29.037 回答
0
'In windows httpd.conf'
'<Directory />'
'Include "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/deny.txt"'
'</Directory>'
'deny.txt contain'
'Deny from xxx.xxx.xxx.xxx'
'etc'
于 2019-10-16T09:14:50.220 回答
0

我使用.htaccess,一个文件夹和一个以禁止IP为标题的文件列表四处走动。

如果banned_ips 中的IP 文件存在,则返回禁止标志:

RewriteCond "%{DOCUMENT_ROOT}/banned_ips/%{HTTP:X-FORWARDED-FOR}" -f
RewriteRule .* - [F]

我的示例适用于 AWS Cloudfront,但您可以替换HTTP:X-FORWARDED-FORREMOTE_ADDR或包含访问者 ip 的任何变量。

或者,您可以使用 HTTP_HOST 按以下站点保存目录:

RewriteCond "%{DOCUMENT_ROOT}/banned_ips/%{HTTP_HOST}/%{HTTP:REMOTE_ADDR}" -f
RewriteRule .* - [F]

这样您就无需更新您的 htaccess 文件,您甚至可以以编程方式从蜜罐列表中添加 ips 我们自己的跟踪器。

请在评论中告诉我您对这种方法在可扩展性和/或安全性方面的看法。

于 2020-08-28T14:40:31.723 回答
0

从 Apache httpd 版本 2.3.6 及更高版本,您可以使用该指令

IncludeOptional /etc/myfilewithrequireip.conf

请参阅https://httpd.apache.org/docs/2.4/mod/core.html#includeoptional

使用Include也是可以的,但是如果conf文件不存在会报错。

于 2021-11-17T11:18:19.220 回答