ホームページ  >  記事  >  バックエンド開発  >  Apache 仮想ホスト: セキュリティの追加

Apache 仮想ホスト: セキュリティの追加

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-10 06:10:30943ブラウズ

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 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 攻撃に対する保護を有効にします。
  • Strict-Transport-Security: ブラウザに常に HTTPS の使用を強制します。
  • Content-Security-Policy: XSS.
  • などの攻撃を防ぐコンテンツ読み込みポリシーを定義します。

バックエンドの保護

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。