PHP セキュリティの話: Apache サーバーのセキュリティ設定
通常、Apache は Root によってインストールされ、実行されます。 Apache サーバー プロセスに Root ユーザー権限がある場合、システム セキュリティに大きな脅威となるため、Apache サーバー プロセスが可能な限り低い権限を持つユーザーとして実行されるようにする必要があります。 httpd.conf ファイル内の次のオプションを変更すると、Apache を Nobody ユーザーとして実行して、相対的なセキュリティを実現できます。
User nobody Group# -1
すべての設定が適切で安全であることを保証するには、スーパーユーザー以外がこのディレクトリの内容を変更できないように、Apache ホーム ディレクトリへのアクセス許可を厳密に制御する必要があります。 Apache のホーム ディレクトリは、Apache サーバー設定ファイル httpd.conf のサーバー ルート コントロール項目に対応しており、次のようになります:
サーバールート /usr/local/apache
設定ファイル access.conf または httpd.conf の Options ディレクティブに include NO EXEC オプションを追加して、Apache Server の実行機能を無効にします。ユーザーが Apache サーバー内の実行プログラムを直接実行できないようにします。これにより、サーバー システムが漏洩する可能性があります。
オプションには Noexec が含まれます
Apache サーバー構成ファイルで次の設定を構成して、ユーザーが .htaccess ファイルを作成および変更できないようにし、ユーザーが定義可能なシステム セキュリティ機能を超えないようにします。
AllowOveride None Options None Allow from all
次に、特定のディレクトリを適切に構成します。
Apache のデフォルト設定では、サーバーが通常のマッピング ルールでファイルを見つけることができる場合にのみ、ファイルを取得します。たとえば、http://local host/~ root/ になります。ユーザーがファイル システム全体にアクセスできるようにします。次のコンテンツをサーバー ファイルに追加します:
order deny,ellow Deny from all
ファイル システムへのデフォルトのアクセスは無効になります。
CGI スクリプトは、Web サーバーを通じて実行できる一連のプログラムです。システムのセキュリティを確保するには、CGI の作成者が信頼できるものであることを確認する必要があります。 CGI の場合は、管理を容易にするために、cgi-bin などの特定のディレクトリに制限することが最善です。また、不正なプログラムが常駐したり混在したりするのを避けるために、CGI ディレクトリ内のファイルが書き込み不可であることを確認する必要があります。その中で、セキュリティに優れた CGI プログラムのモジュールを参考としてユーザーに提供できれば、CGI ディレクトリ内の業務以外のアプリケーション スクリプトをすべて削除し、異常な情報漏洩を防ぐことができます。
上記の一般的な対策により、Apache Server に基本的な安全な動作環境を提供できますが、実際のアプリケーションと一致するセキュリティ構成計画を策定するには、特定の実装でさらに詳細な分析が必要であることは明らかです。