Proxy

XAMPP如何保護埠443的轉發代理

  • September 18, 2019

我需要一些幫助來保護我的測試 XAMPP 伺服器在埠 80 和 443 上的安全。我在 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.

**EDIT1:**我在 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>

從安全的角度來看,這很好嗎?

<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://cipherli.st/的建議

  • 特別是對於 API 以及更通用的網站/應用程序,您可能希望將允許的http 方法限制為僅 GET、POST、PUT、DELETE、CONNECT、OPTIONS、PATCH、PROPFIND、PROPPATCH、MKCOL、COPY 的子集,移動、鎖定和解鎖。
  • 當您只需要反向代理功能時,請使用更輕量級的東西,而不是像 Apache 這樣的完整 Web 伺服器。

引用自:https://serverfault.com/questions/984662