我需要一些帮助来保护我的测试 XAMPP 服务器,因为到目前为止我尝试过的方法似乎都没有奏效。我在 Windows 7 机器上运行 Apache 2.4.7。
设置如下:
我正在将来自我的服务器 IP、端口 80 的所有流量重定向到正在运行的 Java 应用程序localhost:5000
。
在文件中执行所有这些操作的代码httpd-vhosts.conf
如下:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName demo.website.com
ServerAlias website.com
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
问题是,如何deny
从特定的外部 IP 地址发送流量?
似乎我无法使用,.htaccess
因为端口 80 上的请求被重定向到 java 应用程序,而不是包含 web 内容的 xampp 文件夹。
此外,下面的代码也不起作用:
<Proxy *>
order allow,deny
deny from 193.37.XXX.XX
allow from all
</Proxy>
还有什么其他选择?
有什么建议么?
编辑:
从收到的回复来看,我似乎完全错误地执行了代理反转,从而在服务器中打开了可利用的漏洞。根据提供的答案,我修改了我的初始代码。
由于我在端口 443 上使用类似的不安全代码,并且在修改后无法启动 Apache,因此我发布了一个新问题这里。
答案1
正如@MichaelHampton 已经评论的那样:立即删除以下设置:
<Proxy *>
order allow,deny
deny from 193.37.XXX.XX
allow from all
</Proxy>
这些对于反向代理而是用来配置向前代理人几乎任何人都可以访问,这将导致您的服务器被滥用。(幸运的是,您仍然使用了ProxyRequests off
)
顺便说一句,当您确实需要正向代理时,请不要使用 Apache httpd,而要使用更具体的产品。
看来我不能使用 .htaccess......
在我看来,你已经走错了方向,你想要创建一个.htaccess
文件,这是我最讨厌的,引用自.htaccess 手册文件:
你应该完全避免使用
.htaccess
文件 如果你有权访问 httpd 主服务器配置文件。使用.htaccess
文件会减慢你的 Apache http 服务器速度. 任何可以包含在.htaccess
文件中的指令最好都设置在Directory
在主 Apache 配置文件中阻止,因为它将具有相同的效果且性能更好)并将其与
但在这种情况下 .htaccess 不起作用的原因是它们将设置应用于本地文件系统上的资源(来自目录),并且通过反向代理由 Apache httpd 从其他地方检索内容。
解决您实际问题的方法,即如何在反向代理 URL 上应用额外的访问控制和 IP 地址白名单/黑名单:将ProxyPass
指令和附加指令放在<Location>
配置中的一个块中(这也自 Apache 2.4 起恰好是提供最佳性能的配置语法),并使用Require
指向该位置的指令:
<VirtualHost *:80>
ServerName demo.website.com
ServerAlias website.com
<Location />
<RequireAll>
# Block IP-addresses from the 193.37.0.0/16 and 10.9.8.0/24 networks
Require not ip 193.37 10.9.8
# Allow all other IP's
Require all granted
</RequireAll>
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
</VirtualHost>