Apache 限制域名

Apache 限制域名

我想配置 Apache (2.2) 来限制用户可以访问的域,例如,如果 apache FQDN 是 myapache.myfunnydomain.com,那么 apache 将只允许对 .myfunnydomain.com 中的资源的请求(或我配置为合法的任何域)并拒绝所有其他请求(重定向到错误页面)

用例是:

  1. 用户尝试访问受限资源
  2. 我使用 OpenAm / OpenAm policyAgent 进行身份验证(PolicyAgent 安装为监听所有流量的 Apache 模块)
  3. OpenAm policyAgent 模块拦截此操作并将用户重定向到登录页面
  4. 此登录页面的 URL 格式为 www.loginpage.com/?goto=originallyrequestedresource.com
  5. 一旦用户按下登录按钮,此 POST 就会转到并行 OpenAM 系统
  6. 一旦 OpenAM 进行身份验证,它就会使用此 goto 将用户重定向到“goto”的值(使用 302)
  7. 我想确保用户永远不会被重定向到我允许的域之外的域

例如,如果有人入侵系统并设法更改 goto 的值,那么 apache 将不允许此请求成功

答案1

创建 vhost.. vhost 的顺序很重要..如果没有匹配的 vhost,则提供第一个 vhost。

看一眼http://httpd.apache.org/docs/2.2/vhosts/name-based.html

创建类似的东西

NameVirtualHost *:80

<VirtualHost *:80>
ServerName dummy.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain/dummy
</VirtualHost>

<VirtualHost *:80>
ServerName www.domain.tld
DocumentRoot /www/otherdomain
</VirtualHost>

让第一个 vhost 成为一个 catch-all vhost..(无论请求如何,如果它被访问则重定向到错误页面)

然后后续的 vhost 可以是响应特定 fqdn 的特定 vhost......

在上面的例子中,所有与“wwww.domain.tld”不匹配的请求将由第一个虚拟主机提供服务....

您可能还想阅读 serverAlias 指令http://httpd.apache.org/docs/2.2/mod/core.html#serveralias

- 希望这可以帮助...

相关内容