このセクションでは、Webサーバーを安全に設定するためのベストプラクティスについて説明します。
RHEL ベースのシステムでは、仮想ホストをApache構成 (/etc/httpd/conf/httpd.conf
)に追加し、ドキュメントルートの永続的なリダイレクトをZabbix SSL URLに設定します。 example.com
は実際のサーバー名に置き換えてください。
# Add lines:
<VirtualHost *:*>
ServerName example.com
Redirect permanent / https://example.com
</VirtualHost>
変更を適用するため、Apacheサービスを再起動します。
Zabbix Webコンソールをプロトコルダウングレード攻撃から保護するには、WebサーバーでHSTSポリシーを有効にすることをお勧めします。
Apache構成でZabbixフロントエンドのHSTSポリシーを有効にするには、次の手順に従います。
1. 仮想ホストの構成ファイルを見つけます。
/etc/httpd/conf/httpd.conf
/etc/apache2/sites-available/000-default.conf
2. 次のディレクティブを仮想ホストの設定ファイルに追加します。
3. 変更を適用させるため、Apacheサービスを再起動します。
# On RHEL-based systems:
systemctl restart httpd.service
# On Debian/Ubuntu
systemctl restart apache2.service
Zabbixを構成する場合、セキュリティを強化し、クロスサイトリクエストフォージェリ(CSRF)攻撃を防ぐために、セッションクッキーにセキュアな属性とSameSite属性を強制することが不可欠です。ただし、SameSite=Strict
を強制すると、次のような特定のシナリオで問題が発生する可能性があります。
これらの問題を軽減するには、ユーザーがSameSiteポリシーを調整する方法が必要です。
1. セキュアなクッキー
secure
フラグを設定すると、クッキーがHTTPS経由でのみ送信されるようになり、暗号化されていない接続での露出が防止されます。
Zabbixでセキュアクッキーを有効にするには、Webサーバー構成で次の設定を追加または変更します:
Apacheの場合:
Nginxの場合:
ZabbixフロントエンドがHTTPS経由でアクセスされていることを確認します。そうでない場合、Secure
フラグ付きのクッキーは送信されません。
2. SameSite属性の構成
Webサーバー設定でSameSite属性を適用することもできます:
Apacheの場合:
Nginx(バージョン1.19.3+)の場合:
Zabbix Webインターフェースをクロスサイトスクリプティング (XSS)、データ インジェクション、および同様の攻撃から保護するには、Webサーバーでコンテンツセキュリティポリシーを有効にすることをお勧めします。 これを行うには、HTTPヘッダーを返すようにWeb サーバーを設定します。
次のCSPヘッダー設定は、デフォルトのZabbix Webインターフェースインストールおよびすべてのコンテンツがサイトのドメイン (サブドメインを除く) から発信されている場合にのみ適用されます。 たとえば、サイトのサブドメインまたは外部ドメインのコンテンツを表示するように URL ウィジェットを構成している場合、別のCSPヘッダー構成が必要になる場合があります。 OpenStreetMapを別のマップエンジンに追加するか、外部CSSまたはウィジェットを追加します。 Duo Universal Prompt 多要素認証方式を使用している場合は、仮想ホストの構成ファイルのCSPディレクティブに"duo.com"を必ず追加してください。
Apache構成でZabbix WebインターフェースのCSPを有効にするには、次の手順に従います。
1. 仮想ホストの設定ファイルを見つけます。
/etc/httpd/conf/httpd.conf
/etc/apache2/sites-available/000-default.conf
2. 次のディレクティブを仮想ホストの設定ファイルに追加します。
<VirtualHost *:*>
Header set Content-Security-Policy: "default-src 'self' *.openstreetmap.org; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self' data: *.openstreetmap.org; style-src 'self' 'unsafe-inline'; base-uri 'self'; form-action 'self';"
</VirtualHost>
3. 変更を適用させるため、Apacheサービスを再起動します。
# On RHEL-based systems:
systemctl restart httpd.service
# On Debian/Ubuntu
systemctl restart apache2.service
セキュリティを向上させるために、すべてのWebサーバーの署名を無効にすることをお勧めします。
デフォルトでは、Web サーバーはソフトウェア署名を公開します。
署名を無効にするには、Apache構成ファイルに次のパラメータを追加します。
PHP署名 (X-Powered-By HTTPヘッダー) は、php.ini
設定ファイルを変更することで無効にできます (デフォルトでは、署名は無効になっています)。
構成ファイルの変更を適用するには、Web サーバーの再起動が必要です。
セキュリティを強化するには、Apacheでmod_securityツール (パッケージlibapache2-mod-security2) を使用できます。 このツールを使用すると、サーバー署名からバージョンのみを削除するのではなくサーバー署名を削除できます。 mod_securityをインストールした後、"SecServerSignature"を任意の値に設定することで、サーバー署名を任意の値に変更できます。
ソフトウェア署名を削除/変更する方法については、Webサーバーのドキュメントを参照してください。
情報漏洩を避けるため、デフォルトのエラーページを無効にすることをお勧めします。
デフォルトでは、Webサーバーは組み込みのエラーページを使用します。
これらのデフォルトのエラーページは置き換えるか削除する必要があります。 たとえば、"ErrorDocument"ディレクティブを使用して、Apache Webサーバーのカスタムエラーページ/テキストを定義できます。
デフォルトのエラーページを置き換えたり削除したりする方法については、Webサーバーのドキュメントを参照してください。
情報漏洩を避けるため、Webサーバのテストページを削除することをお勧めします。
By default, the Apache web server webroot contains the index.html
test page: デフォルトでは、Apache WebサーバーのWebrootにはindex.html
テスト ページが含まれています。
デフォルトのテストページを削除する方法については、Webサーバーのドキュメントを参照してください。
デフォルトでは、ZabbixはUse X-Frame-Options HTTP headerパラメーターがSAMEORIGIN
に設定されて構成されています。 つまり、ページ自体と同じオリジンを持つフレームにのみコンテンツをロードできます。
外部URLからコンテンツをプルするZabbixフロントエンド要素 (つまり、URLダッシュボードウィジェット) は、すべてのサンドボックス制限が有効になった状態で、取得したコンテンツをサンドボックスに表示します。
これらの設定により、Zabbixフロントエンドのセキュリティが強化され、XSSおよびクリックジャッキング攻撃に対する保護が提供されます。 Super adminユーザーは、必要に応じてUse iframe sandboxingおよびUse X-Frame-Options HTTP headerパラメータを変更できます。 デフォルト設定を変更する前に、リスクとメリットを慎重に比較検討してください。 iframeサンドボックスまたはX-Frame-Options HTTPヘッダーを完全にオフにすることはお勧めできません。
パスワード総当たり攻撃の複雑さを増すために、ui/data/top_passwords.txt
ファイルへのアクセスを制限することをお勧めします。 このファイルには、最も一般的でコンテキスト固有のパスワードのリストが含まれており、ユーザーがそのようなパスワードを設定できないようにします (パスワードポリシーで 推測しやすいパスワードを避けるパラメーターが有効になっている場合)。
top_passwords.txt
ファイルへのアクセスを制限するには、Web サーバーの構成を変更します。
Apacheでは、.htaccess
ファイルを使用してファイルアクセスを制限できます。
NGINXでは、location
ディレクティブを使用してファイルアクセスを制限できます。