仅允许来自特定IP的请求

时间:2009-04-03 15:04:42

标签: apache unix accessibility

我有应用程序托管的Apache UNIX,我允许用户从citrix环境(来自citrix机器)访问应用程序URL。

但是,目前可以从所有连接的计算机访问网址。我想提出它应该只从citrix机器访问的限制。因此,如果任何人需要访问它,他需要访问citrix机器。

我试过以下:

<Directory /APP>

    Order Deny,Allow

    Deny from all

    Allow from 160.120.25.65

    Allow from 127

</Directory>

它不起作用。有什么建议吗?

很少有人回复iptables解决方案,但是这个解决方案在Solaris上加载(它没有内置防火墙作为Linux的操作系统)。

4 个答案:

答案 0 :(得分:47)

这应该做你需要的:

<Directory /APP>

    Order Allow,Deny

    Allow from 160.120.25.65
    Allow from 127.0.0.0/8

</Directory>

有关详细信息,请参阅mod_authz_host文档。

答案 1 :(得分:2)

您运行的是哪个版本的Apache? IP允许机制是AFAIK,由mod_authz_host提供,它在2.2中引入(在技术上为2.1)。如果你有2.2,请确保在mod_authz_host禁用的情况下编译它。

但是,一般来说,您可能会发现更简单,更强大的解决方案是iptables或其他答案中建议的其他防火墙。

答案 2 :(得分:0)

我会为此目的建议Iptables。在iptables中放一条规则,无论目标端口是apache机器的端口号,而ip ip是critix机器的ip地址,linux机器都应丢弃该数据包。这种方式可以解决您的问题,前提是您的机器的apache上没有其他应用程序托管,应该对所有ips开放。透视规则的示例可以是: -

iptables -I INPUT 1 -s 160.120.25.65 -d <port_of_apache_on_your_machine> -j DROP

一旦用适当的值替换

,这应该可以解决您的问题

答案 3 :(得分:-2)

我可能会使用iptables规则。我不确定您发布的示例是什么,但您应该能够配置几乎任何防火墙以便按您的需要工作。