我在运行Apache 2.2的Linux服务器上有一个网页。对于某些其他服务,该服务器对于外界是可见的。

我想配置Apache,以便仅从本地网络内部可见给定的虚拟主机,因此我可以部署Web应用程序以获取组织中其他人的反馈。我认为这与Allow指令有关,但是我的实验进行得并不顺利。

如何更改我的配置文件来实现这一目标?我也应该更改防火墙配置吗?

评论

您是在为服务器使用私有(不可路由)IP地址(例如10.0.0.100)还是公共(可路由)IP地址?

该服务器具有公共IP地址,我可以从工作网络外部(例如,在家中)连接到该服务器。同事的计算机都具有10。*。*。*类型的本地IP地址。

#1 楼

简单。只需在您的主配置或虚拟配置中设置以下内容即可:并通过引用此示例中设置的<Directory></Directory>的“此目录”,但应更改为匹配您站点的本地目录路径。

接下来,在/var/www/path/to/your/web/documents区域中,您将更改默认的Apache行为其中<Directory></Directory>全部默认为Allow。接下来,将Order Deny,Allow设置为拒绝所有人的访问。以下是Deny from all语句,该语句允许从Allow from(本地主机IP地址),127.0.0.1 ::1(本地主机本身)进行访问。这就是所有标准的东西。由于许多内部系统进程都需要从localhost进行访问。

接下来的事情对您来说很重要。

localhostAllow from192.168将允许从网络范围内以这些数字为前缀的任何/所有网络地址。

因此,通过指示10,基本上意味着如果用户拥有的地址如192.168192.168.59.27,他们将能够看到该网站。

并且类似地使用192.168.1.123作为Allow from前缀,可以确保如果某人的IP地址为10甚至10.0.1.2,他们将能够看到其内容。

几乎所有内容全世界的内部网络都使用10.90.2.3范围或192.168范围内的某些值。没有外在的东西。因此,使用此组合将实现您阻止访问外部世界的目标,但仅允许从本地网络内部进行访问。

评论


在这种情况下应该满足什么?我对这一切一无所知,但是当它出现在我的场景中时,我可以从外部网络访问该页面(我使用)。删除它,但是解决了我的问题。很高兴理解为什么会这样,因为我有点担心即使规则到位我也可以访问该页面。

–liamnichols
16年8月10日在17:24

@liamnichols如此处所述:“如果满足任何要求(身份验证或访问),则允许请求。”

–Giacomo1968
16年8月11日,0:06

#2 楼

进入此答案的人们请注意,这是针对Apache 2.2的。

Apache 2.4已弃用了这些指令。

新方法是使用模块mod_authz_hostRequire指令。 (链接)

在Apache 2.4中,您应该执行

<Directory /var/www/ncp-web/>
  Require host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>


,并删除所有Allow指令。

#3 楼

将本节添加到虚拟主机指令中:

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>


在上面替换您的IP。仅供参考,不要用于财务级别的安全性。

#4 楼

我不知道您如何设置网络,但是,我正在尝试尝试一些更好的答案。您将有一个静态的公共IP地址或分配给您的线路,DSL调制解调器和防火墙的地址块。在不详细介绍如何发生的情况之前,我将介绍重要的部分。

您应该使用NAT(网络地址转换)。这允许公用IP地址驻留在网络的WAN(Internet)侧,并在LAN侧的网络内使用私有IP地址(例如10.0.0.100)。这是标准操作程序。如果您在网络中托管Web服务器,则可以使用端口转发或其他类似机制将任何Web流量指向Web服务器。

在这种标准情况下,内部计算机将全部使用专用IP地址。

假设您具有类似的标准网络设置,则可以将计算机IP地址从公用IP地址更改为专用IP地址。您的网络可能具有DHCP设置,您的计算机可以在其中请求可用的IP地址。这意味着您无需选择IP地址,而是选择使用DHCP,并且将分配IP地址。如果DHCP不可用,则您必须检查其他一些计算机以查找可能使用的私有IP地址空间,并在未使用的空间中选择一个IP地址。您可以在网络设置中指定此未使用的IP地址。这样可以防止您的系统出现在Internet上。

评论


我考虑过了,但这不是实际的解决方案。该机器上的某些服务必须对外部保持可见,无论如何,我计划在几天之内使该Web应用程序再次可见-仅几天之久就不会改变网络布局。但是,我可以处理的是Apache配置之类的东西。

– Btz
2014年3月20日在10:34

如果您有防火墙,则可以关闭该IP地址的某些端口。

– closetnoc
2014年3月20日15:36

可以使用防火墙设置,但这实在是太过分了。 Apache内置了基于IP地址和其他相关条件拒绝或允许的功能。请参阅我的答案以获取更多详细信息。

–Giacomo1968
14年8月17日在18:56

@JakeGould防火墙不一定是一种过大的解决方案。我确实非常了解Apache。但是,大多数优质的防火墙中都有HTTP筛选选项,可以在不增加服务器本身负担的情况下提供帮助。同样,尽管Apache非常出色,但并非没有缺陷。同样,可以使用防火墙来操纵包括备用端口访问在内的端口访问,以便某些Web服务保持公共状态,而其他Web服务只能在LAN内访问。

– closetnoc
2014年8月17日在21:53