7.5. HTTP サーバーのセキュリティー保護
7.5.1. httpd.conf のセキュリティー強化 リンクのコピーリンクがクリップボードにコピーされました!
/etc/httpd/conf/httpd.conf ファイルでセキュリティーオプションを設定して、Apache HTTP のセキュリティーを強化できます。
システムで実行されているすべてのスクリプトが正しく機能することを常に確認してから、本番環境に移行してください。
root ユーザーのみが、スクリプトまたは Common Gateway Interface (CGI) を含むディレクトリーへの書き込み権限を持っていることを確認してください。ディレクトリーの所有権を、書き込み権限を持つ root に変更するには、次のコマンドを入力します。
chown root <directory_name> chmod 755 <directory_name>
# chown root <directory_name>
# chmod 755 <directory_name>
/etc/httpd/conf/httpd.conf ファイルでは、次のオプションを設定できます。
FollowSymLinks- このディレクティブはデフォルトで有効になっており、ディレクトリー内のシンボリックリンクをたどります。
Indexes- このディレクティブはデフォルトで有効になっています。訪問者がサーバー上のファイルを閲覧できないようにするには、このディレクティブを削除してください。
UserDir-
このディレクティブは、システム上にユーザーアカウントが存在することを確認できるため、デフォルトでは無効になっています。
/root/以外のすべてのユーザーディレクトリーのユーザーディレクトリーブラウジングをアクティブにするには、UserDir enabledとUserDir disabledの root ディレクティブを使用します。無効化されたアカウントのリストにユーザーを追加するには、UserDir disabled行にスペースで区切られたユーザーのリストを追加します。 ServerTokensこのディレクティブは、クライアントに送り返されるサーバー応答ヘッダーフィールドを制御します。以下のパラメーターを使用するとログの出力をカスタマイズできます。
ServerTokens Full以下のように、Web サーバーのバージョン番号、サーバーのオペレーティングシステムの詳細、インストールされている Apache モジュールなど、利用可能なすべての情報を指定します。
Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2
Apache/2.4.37 (Red Hat Enterprise Linux) MyMod/1.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Full-Release以下のように、利用可能なすべての情報をリリースバージョンとともに指定します。
Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)
Apache/2.4.37 (Red Hat Enterprise Linux) (Release 41.module+el8.5.0+11772+c8e0c271)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Prod / ServerTokens ProductOnly以下のように、Web サーバー名を指定します。
Apache
ApacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Major以下のように、Web サーバーのメジャーリリースバージョンを指定します。
Apache/2
Apache/2Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Minor以下のように、Web サーバーのマイナーリリースバージョンを指定します。
Apache/2.4
Apache/2.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Min/ServerTokens Minimal以下のように、Web サーバーの最小リリースバージョンを指定します。
Apache/2.4.37
Apache/2.4.37Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens OS以下のように、Web サーバーのリリースバージョンとオペレーティングシステムを指定します。
Apache/2.4.37 (Red Hat Enterprise Linux)
Apache/2.4.37 (Red Hat Enterprise Linux)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerTokens Prodオプションを使用して、攻撃者がシステムに関する貴重な情報を入手するリスクを軽減します。
IncludesNoExec ディレクティブを削除しないでください。デフォルトでは、Server Side Include (SSI) モジュールはコマンドを実行できません。これを変更すると、攻撃者がシステムにコマンドを入力できるようになる可能性があります。
httpd モジュールの削除
httpd モジュールを削除して、HTTP サーバーの機能を制限できます。これを行うには、/etc/httpd/conf.modules.d/ または /etc/httpd/conf.d/ ディレクトリーの設定ファイルを編集します。たとえば、プロキシーモジュールを削除するためには、以下のコマンドを実行します。
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
echo '# All proxy modules disabled' > /etc/httpd/conf.modules.d/00-proxy.conf
7.5.2. Nginx サーバー設定のセキュリティー保護 リンクのコピーリンクがクリップボードにコピーされました!
Nginx は、高性能の HTTP およびプロキシーサーバーです。次の設定オプションを使用して、Nginx 設定を強化できます。
手順
バージョン文字列を無効にするには、
server_tokens設定オプションを変更します。server_tokens off;
server_tokens off;Copy to Clipboard Copied! Toggle word wrap Toggle overflow このオプションは、サーバーのバージョン番号などの追加の情報表示を停止します。以下のようにこの設定では、Nginx によって処理されるすべての要求のサーバー名のみが表示されます。
curl -sI http://localhost | grep Server
$ curl -sI http://localhost | grep Server Server: nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の
/etc/nginx/conf ファイルに、特定の既知の Web アプリケーションの脆弱性を軽減するセキュリティーヘッダーを追加します。たとえば、
X-Frame-Optionsヘッダーオプションは、Nginx が提供するコンテンツのフレーム化がされないように、ドメイン外のページを拒否して、クリックジャッキング攻撃を軽減します。add_header X-Frame-Options "SAMEORIGIN";
add_header X-Frame-Options "SAMEORIGIN";Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、
x-content-typeヘッダーは、特定の古いブラウザーでの MIME タイプのスニッフィングを防ぎます。add_header X-Content-Type-Options nosniff;
add_header X-Content-Type-Options nosniff;Copy to Clipboard Copied! Toggle word wrap Toggle overflow また、
X-XSS-Protectionヘッダーは、クロスサイトスクリプティング (XSS) フィルタリングを有効にし、Nginx での応答に含まれる可能性がある、悪意のあるコンテンツをブラウザーがレンダリングしないようにします。add_header X-XSS-Protection "1; mode=block";
add_header X-XSS-Protection "1; mode=block";Copy to Clipboard Copied! Toggle word wrap Toggle overflow
たとえば、一般に公開されるサービスを制限し、訪問者からのサービスと受け入れを制限できます。
limit_except GET { allow 192.168.1.0/32; deny all; }limit_except GET { allow 192.168.1.0/32; deny all; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow スニペットは、
GETとHEADを除くすべてのメソッドへのアクセスを制限します。以下のように、HTTP メソッドを無効にできます。
Allow GET, PUT, POST; return "405 Method Not Allowed" for all others.
# Allow GET, PUT, POST; return "405 Method Not Allowed" for all others. if ( $request_method !~ ^(GET|PUT|POST)$ ) { return 405; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Nginx Web サーバーによって提供されるデータを保護するように SSL を設定できます。これは、HTTPS 経由でのみ提供することを検討してください。さらに、Mozilla SSL Configuration Generator を使用して、Nginx サーバーで SSL を有効にするための安全な設定プロファイルを生成できます。生成された設定により、既知の脆弱なプロトコル (SSLv2 や SSLv3 など)、暗号、ハッシュアルゴリズム (3DES や MD5 など) が確実に無効化されます。また、SSL サーバーテストを使用して、設定した内容が最新のセキュリティー要件を満たしていることを確認できます。