我需要一些帮助来保护端口 80 和 443 上的测试 XAMPP 服务器的安全。我在 Windows 7 机器上运行 Apache 2.4.7。
设置如下:
我正在将来自我的服务器 IP、端口 80 和 443 的所有流量重定向到在 localhost:5000 上运行的 java 应用程序。
在 httpd-vhosts.conf 文件中执行所有这些操作的代码如下:
<VirtualHost *:80>
ServerName demo.website.com
ServerAlias website.com
<Location />
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName demo.website.com
ServerAlias website.com
<Location />
ProxyPass /api/socket ws://localhost:5000/api/socket
ProxyPassReverse /api/socket ws://localhost:5000/api/socket
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
SSLEngine on
SSLCertificateFile "conf/ssl.crt/cert1.crt"
SSLCertificateKeyFile "conf/ssl.key/cert1.key"
</VirtualHost>
上述代码适用于端口 80,但当我将其添加到端口 443 时,apace 无法启动。注意:我已启用LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
。
编辑1:我在 Apache 中得到的错误是:
ProxyPass|ProxyPassMatch can not have a path when defined in a location
问题似乎出在这两行,当我删除它们时,Apache 启动正常:
ProxyPass /api/socket ws://localhost:5000/api/socket
ProxyPassReverse /api/socket ws://localhost:5000/api/socket
编辑2
我最终这样做了:
<VirtualHost *:443>
ServerName demo.website.com
ServerAlias website.com
<Location /api/socket>
ProxyPass ws://localhost:5000/api/socket
ProxyPassReverse ws://localhost:5000/api/socket
</Location>
<Location />
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
</Location>
SSLEngine on
SSLCertificateFile "conf/ssl.crt/cert1.crt"
SSLCertificateKeyFile "conf/ssl.key/cert1.key"
</VirtualHost>
从安全角度来看这样可以吗?
答案1
<VirtualHost *:443> ServerName demo.website.com ServerAlias website.com <Location /api/socket> ProxyPass ws://localhost:5000/api/socket ProxyPassReverse ws://localhost:5000/api/socket </Location> <Location /> ProxyPass http://localhost:5000/ ProxyPassReverse http://localhost:5000/ </Location> SSLEngine on SSLCertificateFile "conf/ssl.crt/cert1.crt" SSLCertificateKeyFile "conf/ssl.key/cert1.key" </VirtualHost>
从安全角度来看这样可以吗?
从技术上讲,这将按预期/需要工作,并且不是一个直接的安全问题(如运行开放代理服务器)。
为了获得更安全的环境,您可能需要做出一些权衡,并进行更多调整,而不仅仅是使用 Apache httpd 包附带的默认设置:
- 定期检查并安装安全更新和重大修复
- https://httpd.apache.org/docs/2.4/misc/security_tips.html是众多关于强化 Apache httpd 服务器的入门指南之一
- 调整 TLS 设置。
使用以下工具测试服务器https://www.ssllabs.com/ssltest/ 遵循他们的建议以及https://cipherli.st/ - 特别是对于 API,但对于更通用的网站/应用程序,你可能需要限制允许的 http 方法仅限于 GET、POST、PUT、DELETE、CONNECT、OPTIONS、PATCH、PROPFIND、PROPPATCH、MKCOL、COPY、MOVE、LOCK 和 UNLOCK 的子集。
- 当您只需要反向代理功能时,请使用更轻量级的服务器,而不是完整的 Web 服务器(如 Apache)。