ホームページ > php教程 > php手册 > Apache サーバーの保護

Apache サーバーの保護

WBOY
リリース: 2016-06-21 09:08:37
オリジナル
1152 人が閲覧しました

apache|サーバー

著者: nixe0n

1. 概要

この記事では、UNIX プラットフォームでの Apache WEB サーバーのインストールと構成のセキュリティの問題について説明します。この記事を読んでいるシステム管理者は、自分のサイトに関連するモジュールを選択しており、それらのモジュールを構成、作成、トラブルシューティングできることを前提としています。この記事の主な目的は、安全な Apache Web サーバーの作成を支援することです。

多くの Web サーバー製品の中で、Apache は最も広く使用されている製品であり、設計上非常に安全なプログラムでもあります。ただし、他のアプリケーションと同様、Apache にもセキュリティ上の欠陥があります。この記事では主に、HTTP プロトコルを使用したサービス拒否攻撃、3 つのバッファ オーバーフロー攻撃、および攻撃者による root 権限の取得という 3 つのセキュリティ上の欠陥について説明します。注: 適切な構成により、Apache をさまざまな攻撃から保護できますが、ネットワーク層でのサービス拒否攻撃は、Apache の構成を調整しても防ぐことはできません。この記事では、HTTP (アプリケーション層) プロトコルを使用したサービス拒否攻撃について説明します。

2. Apache の主な欠陥

・HTTP サービス拒否

攻撃者は、サーバーに HTTP 応答を拒否させるために特定の手段を使用します。これにより、Apache のシステム リソース (CPU 時間とメモリ) の要求が大幅に増加し、最終的にはシステムの速度が低下したり、完全に崩壊したりすることがあります。

・バッファオーバーフロー

攻撃者はプログラム作成の欠陥を利用して、プログラムの通常の流れから逸脱します。このプログラムは静的に割り当てられたメモリを使用してリクエスト データを保存するため、攻撃者が長すぎるリクエストを送信してバッファをオーバーフローさせる可能性があります。たとえば、ユーザー要求を処理する Perl で記述された一部のゲートウェイ スクリプトです。バッファがオーバーフローすると、攻撃者は悪意のある命令を実行したり、システムをクラッシュさせたりする可能性があります。

・攻撃者がroot権限を取得

Apacheは一般にroot権限(親プロセス)で動作し、攻撃者はそれを通じてroot権限を取得し、システム全体を制御します。

3. 最新の Apache を入手します

Apache Web サーバーのセキュリティを強化するには、最も安全なバージョンを使用することが重要です。

Apacheの最新バージョンは、Apacheの公式Webサイト http://www.apache.org から入手できます。

設定ファイルの保護

Apache Web サーバーには 3 つの主要な設定ファイルがあり、通常は /usr/local/apache/conf ディレクトリにあります。 3 つのファイルは、httpd.con、srm.conf、および access.conf です。これらのファイルは Apache 全体のコントロール センターであるため、3 つの構成ファイルについて知っておく必要があります。 httpd.conf ファイルは主要な構成ファイルであり、srm.conf ではリソース ファイルを追加できます。access.conf ではファイルのアクセス許可を設定します。これらのファイルの設定については、http://httpd.apache.org/docs/mod/core.html を参照してください。

サーバーアクセス制御

access.conf ファイルには、Apache ディレクトリへのアクセスを許可するユーザーを制御するための命令がいくつか含まれています。初期化コマンドとしてdeny from allを使用してから、allow fromコマンドを使用してアクセス権限を開く必要があります。特定のドメイン、IP アドレス、または IP 範囲からのアクセスを許可できます。例:


orderdeny,allow
deny from all
allow from sans.org



Password protection

.htaccess ファイルを使用すると、特定のディレクトリへのアクセス権を特定のユーザーに与えることができます。システム管理者は、httpd.conf または srm.conf ファイルで AccessFileName ディレクティブを使用して、ディレクトリ アクセス制御を有効にする必要があります。以下は .htaccess ファイルのサンプルです:

AuthName PrivateFiles
AuthType Basic
AuthUserFile /path/to/httpd/users
require foo <---A valid username

次に、次のコマンドを使用してユーザーを追加します。

# htpasswd -c /path/to/httpd/users foo

Apache log file

システム管理者は、ログ形式ディレクティブを使用して、ログ ファイルの情報を制御できます。 LogFormat "%a %l" コマンドを使用して、HTTP 要求を発行したブラウザの IP アドレスとホスト名をログ ファイルに記録します。セキュリティ上の理由から、少なくとも認証に失敗した WEB ユーザーをターゲットにする必要があります。これは、LogFormat "%401u" ディレクティブを http.conf ファイルに追加することで実現できます。このディレクティブには他にも多くのパラメータがあります。Apache のドキュメントを参照してください。さらに、Apache のエラー ログ ファイルは、システム管理者にとっても非常に重要です。エラー ログ ファイルには、サーバーの起動、停止、CGI 実行の失敗に関する情報が含まれています。

セキュリティ関連の命令

Apache設定ファイルには、使用できるセキュリティ関連の命令がいくつかあります。これらのディレクティブの詳しい使用方法については、http://httpd.apache.org/docs/mod/directives.html を参照してください。

サービス拒否の脅威を軽減するには、次のコマンドを使用します:

LimitRequestbody: HTTP リクエストのサイズを制御する数値パラメーター。
LimitRequestFields: リクエストヘッダーの数を制御する数値パラメータ。
KeepAlive: 接続の有効期間を設定します。
KeepAliveTimeout: リクエストの待機時間を制限します。

バッファオーバーフローの危険性について叫ぶのに役立つ次のディレクティブを使用します:

LimitRequestFieldSize: 各リクエストヘッダーのサイズを制限します。
LimitRequestLine: 各リクエスト行のサイズを制限します。

CGI(一般的なゲートウェイインターフェース、共通ゲートウェイインターフェース)のセキュリティ脅威

CGIのセキュリティは非常に重要であり、攻撃者はCGIの欠陥を利用してシステム情報を取得し、システムコマンドを実行し、システムリソースを占有する可能性があります。 CGI プログラムが静的に割り当てられたメモリを使用すると、バッファ オーバーフロー攻撃の機会が与えられる可能性があります。このリスクを軽減するには、プログラマは CGI コードで動的に割り当てられたメモリを使用する必要があります。 CGI 作成者だけでなく、システム管理者も CGI をカプセル化することで CGI のセキュリティを強化することができます (例: suEXEC や CGI Wrap)。このようにして、CGI プログラムは独立したユーザーの権限で実行でき、バッファ オーバーフローが発生した場合でも、そのユーザーのディレクトリ/ファイルにのみ影響を及ぼします。

Perl は非常に強力なスクリプト言語です。主にテキスト処理に使用されますが、プログラマは Perl スクリプトを介してシステム コールを使用することもできます。プログラムが適切に書かれていない場合、攻撃者がサーバーに侵入する扉が開いてしまいます。したがって、Perl スクリプトを使用する場合は、そのような脆弱性を回避するために注意する必要があります。 Perl スクリプトでは、リクエスト データを処理する前に、特別なチェック ルーチンを呼び出して入力の有効性をチェックすることが最善です。さらに、Apache が root 権限で実行されていないこと、および Perl スクリプトの実行が特定のディレクトリでの実行に制限されていることを確認してください。
SSI のセキュリティ (サーバー側が含まれる)

SSI を使用すると、プログラマは一般的に使用されるルーチンを作成し、必要に応じてこれらのルーチンをコードに組み込むことができます。 SSI では、外部プログラムの条件付き実行も許可されており、攻撃者がこれを悪用してサーバーに悪意のあるプログラムを実行させる可能性があります。 SSI ファイルの実行機能をオフにするには、access.conf ファイルの includesNoEXEC ディレクティブを使用します。ただし、このコマンドを実行すると、サーバーは CGI スクリプトまたはプログラムを実行できなくなります。

その他のセキュリティツール

TCP Wrappers と Tripwire を使用して、システムをさらに保護します。 TCP ラッパーを使用して、Telnet または FTP のアクセス許可を制御できます。 Tripwire は、システム管理者がシステムが変更されているかどうかを監視するのに役立つデータ整合性検出ツールです。Tripwire 構成ファイルに特定のポリシーをプログラムして、Web サーバーの構成ファイル、データ、および CGI ファイルが変更されているかどうかを監視できます。
まとめ

Apache は優れた曲がりくねったサーバーです。Apache の開発者はそのセキュリティに細心の注意を払っていますが、Apache は非常に大きいため、セキュリティ リスクが存在することは避けられません。 Apache をインストールおよび保守するときは、次の問題に注意する必要があります:

・ファイルとディレクトリの権限が適切かどうかを確認します。
・httpd.conf、srm.conf、access.confの設定が適切かどうか
・サーバーログファイルにできるだけ詳細な情報を記録できるようにします。
・特別な保護が必要な特定のディレクトリにはパスワード保護 (.htaccess) を使用します。
・CGIスクリプトまたはプログラムをカプセル化します。
・CGIがPerlで書かれている場合は、そのセキュリティを詳しく確認してください
・SSI命令を確認してください
・TCP WrappersとTripwireを使用してください。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート