Apache 虛擬主機:增加安全性

Linda Hamilton
發布: 2024-10-10 06:10:30
原創
940 人瀏覽過

Apache Virtual Host: Adding Security

為了在使用Apache 設定反向代理時確保安全性,您可以實施多種最佳實踐,例如啟用HTTPS 使用SSL/TLS,調整安全標頭,設定防火牆,並保護對後端的存取。以下是一個詳細的實現,以確保您有一個更安全的環境。

啟用具有 SSL/TLS 的 HTTPS

使用 HTTPS 對於保護客戶端和伺服器之間的資料至關重要。為此,我們將在 Apache 中設定 SSL 憑證。

1.安裝 Certbot 和 Apache SSL 模組

如果您尚未安裝 SSL 模組,請安裝它們:

sudo apt install certbot python3-certbot-apache
sudo a2enmod ssl
登入後複製

2.取得 SSL 憑證(Let's Encrypt)

如果您的網域已經指向伺服器,您可以從 Let's Encrypt with Certbot 取得免費的 SSL 憑證。執行以下命令:

sudo certbot --apache -d php.info
登入後複製
  • 如果域名是公共域名,請將 php.info 替換為您的實際域名。

  • Certbot 將自動在您的虛擬主機上設定 SSL 並將 HTTP 流量重新導向至 HTTPS。

3.驗證並調整虛擬主機 SSL

設定後,Certbot 將建立或修改虛擬主機 SSL 設定檔。檢查一切是否正確:

sudo your_editor /etc/apache2/sites-available/php-le-ssl.conf
登入後複製

它應該看起來像這樣:

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName php.info
        DocumentRoot /var/www/html/php

        # Reverse Proxy Configuration for HTTPS
        ProxyPreserveHost On
        ProxyPass / http://localhost:8080/
        ProxyPassReverse / http://localhost:8080/

        <Directory /var/www/html/php/>
            AllowOverride All
            Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/php_error.log
        CustomLog ${APACHE_LOG_DIR}/php_access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/php.info/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/php.info/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
    </VirtualHost>
</IfModule>
登入後複製

將 HTTP 重新導向到 HTTPS

您可以確保所有 HTTP 流量都會重新導向到 HTTPS。在您的 HTTP 虛擬主機 (/etc/apache2/sites-available/php.conf) 中,新增:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName php.info
    Redirect permanent / https://php.info/
</VirtualHost>
登入後複製

這將確保任何 HTTP 請求都會重新導向到網站的安全性 (HTTPS) 版本。

安全標頭

將以下安全標頭加入您的SSL 虛擬主機設定檔中,以緩解一些常見漏洞,例如點擊劫持跨站腳本(XSS):

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set Content-Security-Policy "default-src 'self';"
</IfModule>
登入後複製
  • X-Content-Type-Options:防止瀏覽器嘗試猜測內容類型,減輕 MIME 嗅探攻擊。
  • X-Frame-Options:防止在 iframe 中使用網站,防止點擊劫持
  • X-XSS-Protection:啟用瀏覽器中針對 XSS 攻擊的保護。
  • 嚴格傳輸安全性:強制瀏覽器始終使用 HTTPS。
  • Content-Security-Policy:定義內容載入策略以防止XSS.
  • 等攻擊

保護後端

您必須確保後端服務(例如 PHP 伺服器或其他服務)不能被公眾直接存取。這可以透過將對後端的存取限制為僅代理來完成。

設定防火牆(Ubuntu 上的 UFW):

首先,僅允許 HTTP(連接埠 80)和 HTTPS(連接埠 443)流量到達伺服器。

sudo ufw allow 'Apache Full'
sudo ufw enable
登入後複製

現在,阻止任何到連接埠 8080(後端)的直接流量,Apache 除外:

sudo ufw deny 8080
登入後複製

監控和日誌

密切注意訪問和錯誤經驗以監控可疑行為:

  • 存取錯誤日誌
tail -f /var/log/apache2/php_error.log
登入後複製
  • 訪問訪問日誌
tail -f /var/log/apache2/php_access.log
登入後複製

您也可以使用監控工具,例如Fail2Ban,自動封鎖多次登入失敗或其他可疑活動的 IP 位址。

定期更新

讓您的作業系統、Apache 和 Certbot 保持最新狀態對於確保您免受已知漏洞的影響至關重要。

sudo apt update && sudo apt upgrade
登入後複製

透過執行這些步驟,您將擁有一個安全的反向代理環境,具有HTTPS和針對常見攻擊的基本保護。這些設定涵蓋傳輸安全性 (SSL/TLS)、減輕透過 HTTP 標頭的攻擊以及保護後端免受外部存取。

以上是Apache 虛擬主機:增加安全性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!