XAMPP 如何保护端口 443 的正向代理

XAMPP 如何保护端口 443 的正向代理

我需要一些帮助来保护端口 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)。

相关内容