ECS:管理API 403エラーとアクセス不能なGrafana UIを回避するためにECS 3.8.0以降でホスト ヘッダー インジェクションを回避する方法
Summary: ECS 3.8.0.x以降では、ホスト ヘッダー インジェクションに関するセキュリティの問題が対処されています(『STORAGE-27164のリリース ノート』を参照)。
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
ホスト ヘッダー インジェクションとは何ですか?
- アプリケーションは、ユーザーから提供されたHTTPホスト ヘッダーを信頼し、ユーザー提供のホスト ヘッダーを使用して別のページにリダイレクトしています。
- 攻撃者はこれを悪用して、HTTP Hostヘッダーを悪意のあるホスト名に変更し、ユーザーを悪意のあるWebページにリダイレクトする可能性があります。
注:これは、プロキシまたはロード バランサーを介した管理API呼び出しにのみ影響します。データ操作には影響しません。
ECS 3.8.0.x以降ではどのような変更が加えられていますか?
修正の一環として、許可されたサーバー名のリストを設定または設定解除できる新しいAPIセットが実装されています。受信要求のホスト ヘッダー値が、そのリストに対してチェックされます。ホスト ヘッダー値がそのリストに存在しない場合、要求は拒否されます。
以下に、承認済みサーバーのリストを登録および管理するために導入されたREST APIの新しいセットを示します。
| リソース名 | 説明 |
|---|---|
GET /acceptedservernames/ |
受け入れられた管理サーバー名の一覧を取得します |
POST /acceptedservernames/ |
受け入れられた管理サーバー名のリストを作成または置き換えます |
PUT /acceptedservernames/ |
受け入れ可能な管理サーバー名のリストを更新します。 |
DELETE /acceptedservernames/ |
受け入れられた管理サーバー名のリストを削除します |
どのような状況で影響を受けますか?
ECSで受け入れ可能なサーバーのリストを構成するソリューションを実装するユース ケース:
| アップグレード元 | へのアップグレードまたはへのインストール | 更新作業 |
|---|---|---|
| ECS 3.7以前 | ECS 3.8.0.x |
|
| ECS 3.7以前 | ECS 3.8.1.x以降 |
|
| ECS 3.8.0.x | ECS 3.8.1.x以降 |
|
問題が発生したことを示すものは何ですか?
- 新規インストール後、または以前の3.8バージョンから3.8.0.xへのアップグレード後、すべての管理ログインAPIが403-forbiddenで失敗します。
- Grafanaダッシュボードにもアクセスできない場合があります。
ECSのログにはどのようなエラーが表示されますか?
"GET /login HTTP/1.1" 403 error is seen in /opt/storageos/logs/nginx/access.log and /opt/storageos/logs/objcontrolsvc.log on nodes API calls are made against.
解決策の概要(3.8.0.x以降へのアップグレード後)
- ECS xDoctorソフトウェアを最新バージョンにアップグレードします。
- 外部IPのリストを追加します。
- すでに接続が正常に行われているため、ECSノードに対して管理API呼び出しを直接実行したり、ECSノードのIPを使用して外部サーバーを登録したりする必要はありません。次の手順は、接続がプロキシ サーバーまたはロード バランサーを通過する場合にのみ必要です。そのため、すべてのプロキシおよび/またはロード バランサーをManagement Server Names Accept Listに追加する必要があります。
1 x Doctorアップグレード
- Eお使いのECS xDoctorソフトウェアを使用可能な最新バージョンにアップグレードします。
- システムで実行されているxDoctorのバージョンを確認します。バージョンが 4.8-87.0 以降の場合は、「外部 IP の一覧を追加する」の手順に進みます。そうでない場合は、次の手順に進みます。
コマンド:
# sudo xdoctor --version
Example:
admin@node1:~> sudo xdoctor --version 4.8-87.0
- Dellサポート サイトにサインし、このダウンロードECSダウンロード場所に直接接続し、キーワード検索バーを使用してxDoctorを検索し、[xDoctor 4.8-87.0 RPM]リンクをクリックしてダウンロードします。リリース ノートを表示するには、ECS製品ページに直接接続し、サイドバーから[マニュアルおよびドキュメント]を選択します。
- RPMがダウンロードされたら、いずれかのリモートSCPプログラムを使用して、最初のECSノードの/home/adminディレクトリにファイルをアップロードします。
- アップロードが完了したら、adminを使用してそのECSシステムの最初のノードにSSHで接続します。
- 新しく頒布されたバージョンを使用して、すべてのノードでxDoctorをアップグレードします。
コマンド:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmExample:
admin@ecs-n1:~> sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm 2022-07-04 07:41:49,209: xDoctor_4.8-83.0 - INFO : xDoctor Upgrader Instance (1:SFTP_ONLY) 2022-07-04 07:41:49,210: xDoctor_4.8-83.0 - INFO : Local Upgrade (/home/admin/xDoctor4ECS-4.8-84.0.noarch.rpm) 2022-07-04 07:41:49,226: xDoctor_4.8-83.0 - INFO : Current Installed xDoctor version is 4.8-86.0 2022-07-04 07:41:49,242: xDoctor_4.8-86.0 - INFO : Requested package version is 4.8-84.0 2022-07-04 07:41:49,242: xDoctor_4.8-86.0 - INFO : Updating xDoctor RPM Package (RPM) 2022-07-04 07:41:49,293: xDoctor_4.8-86.0 - INFO : - Distribute package 2022-07-04 07:41:50,759: xDoctor_4.8-86.0 - INFO : - Install new rpm package 2022-07-04 07:42:04,401: xDoctor_4.8-86.0 - INFO : xDoctor successfully updated to version 4.8-87.0
- 環境がマルチラックVDCの場合は、新しいxDoctorパッケージを各ラックの最初のノードにインストールする必要があります。これらのラックのプライマリーを識別するには、次のコマンドを実行します。この例では、4台のラックと4台のラック プライマリーがハイライト表示されています
- ラック プライマリー ノード(以下では太字でハイライト表示)を見つけます。
コマンド:
# svc_exec -m "ip address show private.4 |grep -w inet"Example:
admin@ecsnode1~> svc_exec -m "ip address show private.4 |grep -w inet" svc_exec v1.0.2 (svc_tools v2.1.0) Started 2021-12-20 14:03:33 Output from node: r1n1 retval: 0 inet 169.254.1.1/16 brd 169.254.255.255 scope global private.4 Output from node: r2n1 retval: 0 inet 169.254.2.1/16 brd 169.254.255.255 scope global private.4 Output from node: r3n1 retval: 0 inet 169.254.3.1/16 brd 169.254.255.255 scope global private.4 Output from node: r4n1 retval: 0 inet 169.254.4.1/16 brd 169.254.255.255 scope global private.4
- そのシステムの最初のノード(R1N1)から、それ以降の他のラック プライマリーにパッケージをコピーします。
Example:
admin@ecs-n1: scp xDoctor4ECS-4.8-87.0.noarch.rpm 169.254.2.1:/home/admin/ xDoctor4ECS-4.8-84.0.noarch.rpm 100% 32MB 31.9MB/s 00:00 admin@ecsnode1~> scp xDoctor4ECS-4.8-87.0.noarch.rpm 169.254.3.1:/home/admin/ xDoctor4ECS-4.8-84.0.noarch.rpm 100% 32MB 31.9MB/s 00:00 admin@ecsnode1~> scp xDoctor4ECS-4.8-87.0.noarch.rpm 169.254.4.1:/home/admin/ xDoctor4ECS-4.8-87.0.noarch.rpm 100% 32MB 31.9MB/s 00:00 admin@ecsnode1~>
- 前述の手順1に従って、前述の各ラック プライマリーに対して同じxDoctorインストール コマンドを実行します。
コマンド:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
2-A 外部IPのリストを追加します。
- 管理ユーザーは、セキュリティ管理者ロールでこのアクティビティを実行する必要があります。以下の例では、セキュリティ管理機能も持つ root ユーザーを使用します。
- これは、ECS VDC上の任意のノードで実行できます。
- 複数のVDCを持つフェデレーションでは、フェデレーション内のすべての VDC をアップグレードした後に実行する必要があります。その後、この手順を各VDCに適用できます。
-
メモ: 許可リストは連携VDC間でレプリケートされるため、一方のクラスターに許可リスト エントリーを追加すると、それらのエントリーがもう一方のクラスターにレプリケートされ、もう一方のクラスターにすでに追加されているものが上書きされます
- ユーザーがセキュリティ管理者でない場合、または間違った認証情報が使用されている場合、ツールは「401 - Unauthorized」例外をスローします。
- 信頼リストに追加するサーバー名(IP、ホスト名、FQDN)のリストを準備します。リストをファイルに統合し、各行に1つのサーバー名を指定します。管理ネットワークが分離されている場合は、管理ノードのFQDNも信頼リストに追加する必要があります。多くのお客様は、ノードの名前を追加する必要があるかもしれません。「hostname -s」を使用した短いsvc_execと、hostnameを使用した長いsvc_execの両方
ネットワーク分離が管理対象かどうかを確認するには、以下を実行して、ハイライト表示されている「mgmt」を検索します。
コマンド:
# getrackinfo -n
Example:
#getrackinfo -n Named networks ============== Node ID Network Ip Address Netmask Gateway VLAN Interface 1 mgmt 1xx.xxx.xx.xxx 255.25x.xxx.x 19x.xxx.xx.x xxx public 1 mgmt 1xx.xxx.xx.xxx 255.25x.xxx.x 19x.xxx.xx.x xxx public 1 mgmt 1xx.xxx.xx.xxx 255.25x.xxx.x 19x.xxx.xx.x xxx public 1 mgmt 1xx.xxx.xx.xxx 255.25x.xxx.x 19x.xxx.xx.x xxx public 1 mgmt 1xx.xxx.xx.xxx 255.25x.xxx.x 19x.xxx.xx.x xxx public 1 mgmt 1xx.xxx.xx.xxx 255.25x.xxx.x 19x.xxx.xx.x xxx public
サーバー名リストを使用した次の例(実際のものに置き換えてください)。
# cat trust.server.list ecs1-n1 ecs1-n1.dell.com ecs1-n2 ecs1-n2.dell.com ecs1-n3 ecs1-n3.dell.comecs1-n4 ecs1-n4.dell.comecs1-n5 ecs1-n5.dell.comLoad_balancer1_IPLoad_balancer1_HostnameLoad_balancer1_FQDNLoad_balancer2_IPLoad_balancer2_HostnameLoad_balancer2_FQDN
- ログをチェックして、サーバー名に403エラーがないか確認します。
コマンド:
svc_log -f 'ERROR HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'
Example:
# svc_log -f 'ERROR HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'
svc_log v1.0.31 (svc_tools v2.13.1) Started 2023-10-10 18:00:11
Running on nodes: <All nodes>
Time range: 2023-10-13 17:00:00 - 2023-10-13 18:11:47
Filter string(s): 'ERROR HostHeaderAcceptListFilter.java'
Show filename(s): True
Show nodename(s): True
Search reclaim logs (if any): False
169.254.1.1 objcontrolsvc.log 2023-10-10T17:00:07,188 [qtp47151359-4412] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m1
169.254.1.1 objcontrolsvc.log 2023-10-10T17:00:38,609 [qtp47151359-4386] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m1
169.254.1.1 objcontrolsvc.log 2023-10-10T17:01:07,499 [qtp47151359-4310] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m1
169.254.1.2 objcontrolsvc.log 2023-10-10T17:05:01,743 [qtp1754883736-3393] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m2
169.254.1.2 objcontrolsvc.log 2023-10-10T17:05:01,756 [qtp1754883736-3397] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m2
169.254.1.3 objcontrolsvc.log 2023-10-10T17:30:01,533 [qtp1289718177-2883] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m3
169.254.1.3 objcontrolsvc.log 2023-10-10T17:30:01,546 [qtp1289718177-2944] ERROR HostHeaderAcceptListFilter.java (line 81) The host header server name didn't match the accepted list ecsdev1-m3
サーバー名リストを使用した次の例(実際のものに置き換えてください)。
# cat trust.server.list ecs1-n1 ecs1-n1.dell.com ecs1-n2 ecs1-n2.dell.com ecs1-n3 ecs1-n3.dell.comecs1-n4 ecs1-n4.dell.comecs1-n5 ecs1-n5.dell.com ecsdev1-m1 ecsdev1-m2 ecsdev1-m3Load_balancer1_IP Load_balancer1_HostnameLoad_balancer1_FQDNLoad_balancer2_IPLoad_balancer2_HostnameLoad_balancer2_FQDN
<mgmt_user>を提供する提供されたリストを使用して、信頼できるサーバーを追加します。mgmt_userパスワードの入力を求めるプロンプトが表示されたら、パスワードを入力し、Enterを押して続行します。
コマンド:
svc_param asn add -u <mgmt_user> -p -f <server.list>
Example:
# svc_param asn add -u root -p -f trust.server.list Password: svc_param v1.1.3 (svc_tools v2.7.0) Started 2022-11-08 19:27:16 add trusted servers successfully!
- 信頼できるサーバーのリストを取得します。リストは、a)短いかどうかをすばやく確認するために画面に出力するか、b)バックアップまたは検査のためにファイルに保存することができます。
- 結果を画面に出力します。パスワードの入力を求めるプロンプトが表示されたら、Enterを押して続行します。
コマンド:
svc_param asn list -u <mgmt_user> -p
Example:
# svc_param asn list -u root -p
Password:
svc_param v1.1.3 (svc_tools v2.7.0) Started 2023-10-10 19:32:58
Found 19 trusted servers:
Load_balancer1_FQDN
Load_balancer1_Hostname
Load_balancer1_IP
Load_balancer2_FQDN
Load_balancer2_Hostname
Load_balancer2_IP
ecs-n1
ecs-n1.nas2008.com
ecs-n2
ecs-n2.nas2008.com
ecs-n3
ecs-n3.nas2008.com
ecs-n4
ecs-n4.nas2008.com
ecs-n5
ecs-n5.nas2008.com
ecsdev1-m1
ecsdev1-m2
ecsdev1-m3
- 結果をファイルに保存します。パスワードの入力を求めるプロンプトが表示されたら、Enterを押して続行します。
コマンド:
svc_param asn list -u <mgmt_user> -p -o <output file>
Example:
# svc_param asn list -u root -p -o server.list.backup Password: svc_param v1.1.3 (svc_tools v2.7.0) Started 2022-10-10 19:38:05 Found 19 trusted servers: Please find the result in /home/admin/server.list.backup # cat /home/admin/server.list.backup Load_balancer1_FQDN Load_balancer1_Hostname Load_balancer1_IP Load_balancer2_FQDN Load_balancer2_Hostname Load_balancer2_IP ecs-n1 ecs-n1.nas2008.com ecs-n2 ecs-n2.nas2008.com ecs-n3 ecs-n3.nas2008.com ecs-n4 ecs-n4.nas2008.com ecs-n5 ecs-n5.nas2008.com ecsdev1-m1 ecsdev1-m2 ecsdev1-m3
注:ロード バランサーが使用 されておらず 、同じ結果が得られる場合
nginx 403 Forbidden エラーが発生した場合は、お客様がVLANネットワークを使用しているかどうかを確認します。を使用した分離 getrackinfo -n 手順1のコマンド。その場合は、お客様ネットワークの管理 DNS名と管理IPアドレス を、すべてのノードのTrust Server Listに追加します。
(下記など)
Example:
# cat trust.server.list 10.x.x.1 10.x.x.2 10.x.x.3 10.x.x.4 10.x.x.5 10.x.x.6 test-n1.domain.example test-n2.domain.example test-n3.domain.example test-n4.domain.example test-n5.domain.example test-n5.domain.example
2-B 外部IPのリストを削除します。
信頼済みリストからエントリーを削除する必要がある場合は、パスワードの入力を求めるプロンプトが表示されたら、Enterを押して続行します。A server.to.remove.list を作成する必要があります。
Example:
# cat server.list.to.remove Load_balancer1_Hostname Load_balancer2_IP削除するコマンド:
svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>(パスワードの入力を求めるプロンプトが表示されたら、Enterを押して続行します。)
例:
# svc_param asn remove -u root -p -f server.list.to.remove Password: svc_param v1.1.3 (svc_tools v2.7.0) Started 2022-11-08 19:42:00 remove trusted servers successfully!
エントリーを再度一覧表示して、エントリーが削除されていることを確認します。
svc_param asn list -u root -p(パスワードの入力を求めるプロンプトが表示されたら、Enterを押して続行します。)
例:
# svc_param asn list -u root -p
Password:
svc_param v1.1.3 (svc_tools v2.7.0) Started 2022-11-08 19:43:19
Found 4 trusted servers:
Load_balancer1_FQDN
Load_balancer1_IP
Load_balancer2_FQDN
Load_balancer2_Hostname
Additional Information
この変更に関する詳細とコンテキストについては、 Dellサポートで入手できる次のドキュメントを参照してください。
- ECS 3.8.0またはECS 3.8.1リリース ノート
- ECS 3.8.0またはECS 3.8.1管理ガイド
- ECS 3.8.0またはECS 3.8.1セキュリティ ガイド
Affected Products
ECS, ECS Appliance, Elastic Cloud StorageArticle Properties
Article Number: 000205031
Article Type: How To
Last Modified: 14 Nov 2024
Version: 30
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.