Apache でリバース プロキシを設定するときにセキュリティを確保するには、HTTPS を有効にするなど、いくつかのベスト プラクティスを実装できます。 SSL/TLS を使用した 、セキュリティ ヘッダーの調整、ファイアウォール の構成、バックエンドへのアクセスの保護。以下は、より安全な環境を確保するための詳細な実装です。
クライアントとサーバー間のデータを保護するには、HTTPS の使用が不可欠です。これを行うには、Apache で SSL 証明書を構成します。
1.Certbot および Apache SSL モジュールをインストールします
SSL モジュールがまだインストールされていない場合は、インストールします:
sudo apt install certbot python3-certbot-apache sudo a2enmod ssl
2.SSL証明書を取得する(暗号化しましょう)
ドメインがすでにサーバーを指している場合は、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 仮想ホスト (/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>
PHP サーバーやその他のサービスなどのバックエンド サービスに一般のユーザーが直接アクセスできないようにする必要があります。これは、バックエンドへのアクセスをプロキシのみに制限することで実現できます。
ファイアウォールの構成 (Ubuntu 上の UFW):
まず、サーバーへの HTTP (ポート 80) および HTTPS (ポート 443) トラフィックのみを許可します。
sudo ufw allow 'Apache Full' sudo ufw enable
ここで、Apache を除く、ポート 8080 (バックエンド) への直接トラフィックをブロックします。
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 中国語 Web サイトの他の関連記事を参照してください。