ECS: Jak zabránit vkládání hlavičky hostitele v systému ECS 3.8.0 a novějším, abyste se vyhnuli chybám rozhraní API pro správu 403 a nepřístupnému uživatelskému rozhraní Grafana

Summary: Počínaje verzí ECS 3.8.0.x byl vyřešen problém se zabezpečením týkající se vkládání hlavičky hostitele (viz informace o vydání pro 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

Co je injektáž hlavičky hostitele?

  • Aplikace důvěřuje hlavičce hostitele HTTP zadané uživatelem a používá hlavičku hostitele zadanou uživatelem k přesměrování na jinou stránku. 
  • Útočník by toho mohl využít změnou hlavičky hostitele HTTP na škodlivý název hostitele a přesměrováním uživatele na škodlivou webovou stránku. 
Poznámka: To má vliv jenom na volání rozhraní API pro správu prostřednictvím proxy serveru nebo nástroje pro vyrovnávání zatížení. Nemá vliv na operace s daty.


Jaké změny se zavádějí od verze ECS 3.8.0.x?

V rámci opravy je implementována nová sada rozhraní API, která umožňuje nastavení nebo zrušení nastavení seznamu povolených názvů serverů. Hodnota hlavičky hostitele příchozích požadavků se kontroluje podle tohoto seznamu. Požadavek se odmítne, pokud se v tomto seznamu nenachází hodnota hlavičky hostitele.

Níže je uvedena nová sada rozhraní REST API zavedená pro registraci a správu seznamu akceptovaných serverů.
 
Název zdroje Popis
GET /acceptedservernames/ Získá seznam přijatých názvů serverů pro správu.
POST /acceptedservernames/ Vytvoří nebo nahradí seznam přijatých názvů serverů pro správu.
PUT /acceptedservernames/ Aktualizujte seznam přijímaných názvů serverů pro správu.
DELETE /acceptedservernames/ Odstraní seznam přijatých názvů serverů pro správu

 

Za jakých okolností se vás to týká?

Případy použití řešení konfigurace seznamu přijímaných serverů v systému ECS:

Upgrade z Upgrade nebo instalace na Náprava
ECS 3.7 a starší ECS 3.8.0.x
  • Implementace řešení je povinná, pokud k odesílání volání rozhraní API pro správu do systému ECS používáte server proxy nebo nástroj pro vyrovnávání zatížení.
  • Pokud řešení neimplementujete, znamená to, že se zobrazí chyby rozhraní API pro správu 403 a uživatelské rozhraní Grafana je nepřístupné.
ECS 3.7 a starší ECS 3.8.1.x nebo novější
  • Implementace řešení je volitelná, pokud k odesílání volání rozhraní API pro správu do systému ECS používáte server proxy nebo nástroj pro vyrovnávání zatížení.
  • Pokud řešení neimplementujete, budete touto chybou zabezpečení i nadále zranitelní a systém ECS přijímá všechna volání rozhraní API pro správu. 
ECS 3.8.0.x ECS 3.8.1.x nebo novější
  • Pokud jste již implementovali řešení v systému ECS 3.8.0, zůstane řešení v systému ECS 3.8.1 nebo novějším.
  • Máte možnost vrátit řešení zpět, aby všechny IP adresy mohly volat rozhraní API pro správu.
  • Pokud se rozhodnete řešení vrátit zpět, zůstanete touto chybou zabezpečení zranitelní a systém ECS přijme všechna volání rozhraní API pro správu. 



Co naznačuje, že jste narazili na problém?

  • Všechna rozhraní API pro přihlášení ke správě selžou s kódem 403-forbidden po nové instalaci nebo upgradu na verzi 3.8.0.x z dřívějších verzí 3.8.
  • Řídicí panel Grafana může být také nepřístupný. 


Jaké chyby se zobrazují v protokolech 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.

 

Shrnutí řešení (po upgradu na verzi 3.8.0.x nebo novější)

  1. Proveďte upgrade softwaru ECS xDoctor na nejnovější verzi.
  2. Přidejte seznam externích IP adres.
  3. Není nutné registrovat externí servery, které volají rozhraní API pro správu přímo do uzlů ECS nebo používají IP adresy uzlů ECS, protože připojení by již bylo úspěšné. Následující postup je vyžadován pouze v případě, že je připojení předáno přes proxy server nebo Load Balancer. Proto je nutné všechny nástroje proxy nebo nástroje pro vyrovnávání zatížení přidat do seznamu přijímaných názvů serverů pro správu.


Upgrade 1x Doctor

  1. Upgradujte software ECS xDoctor na nejnovější dostupnou verzi.
  1. Zkontrolujte, zda je v systému spuštěna verze aplikace xDoctor. Pokud je verze 4.8-87.0 nebo novější, přejděte ke kroku "Add list of external IP s". Pokud ne, pokračujte kroky níže.
Příkaz: 
# sudo xdoctor --version
Příklad:
admin@node1:~> sudo xdoctor --version
4.8-87.0
  1. Přihlaste se k webu podpory společnosti Dell, připojte se přímo k tomuto umístění pro stahování ECS, vyhledejte aplikaci xDoctor pomocí vyhledávacího pole klíčových slov a klikněte na odkaz pro stažení aplikace xDoctor 4.8-87.0 RPM. Chcete-li zobrazit informace o vydání, připojte se přímo na stránku produktu ECS a na postranním panelu vyberte Příručky a dokumenty, odkud by měly být k dispozici ke stažení.
  2. Po stažení souboru RPM jej odešlete do adresáře /home/admin na prvním uzlu ECS pomocí libovolného programu pro vzdálené připojení SCP.
  3. Po dokončení nahrávání se jako správce přihlaste pomocí SSH k prvnímu uzlu v systému ECS.
  4. Proveďte upgrade aplikace xDoctor na všech uzlech na nově vydanou verzi.  
Příkaz:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
Příklad:
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
  1. Pokud se jedná o prostředí VDC s více racky, na prvním uzlu každého racku je nutné nainstalovat nový balíček aplikace xDoctor. Chcete-li identifikovat tyto primární uzly racku, spusťte následující příkaz. V tomto případě jsou zvýrazněny 4 racky a 4 primární racky
  1. Najděte primární uzly racku (níže zvýrazněné tučně).
Příkaz:
# svc_exec -m "ip address show private.4 |grep -w inet"
Příklad:
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
  1. Zkopírujte balíček z prvního uzlu systému (R1N1) do dalších uzlů racku, jak je uvedeno níže:
Příklad:
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. Podle kroku 1 výše spusťte stejný instalační příkaz aplikace xDoctor na všech výše uvedených primárních rackových serverech. 
Příkaz:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm


2-A Přidejte seznam externích IP adres.

  • Tuto činnost musí provádět uživatel pro správu s rolí správce zabezpečení. V níže uvedeném příkladu používáme uživatele root , protože má také funkci správy zabezpečení.
  • Lze to provést na jakémkoli uzlu v systému ECS VDC.
  • Ve federaci s více virtuálními datovými centry je nutné ji provést po upgradu všech virtuálních datových úložišť ve federaci. Postup lze poté aplikovat na každý VDC.
  • POZNÁMKA: Seznam povolených se replikuje napříč federovanými virtuálními počítači, takže přidáním položek seznamu povolených do jednoho clusteru se tyto položky replikují do druhého clusteru a přepíší se vše, co již bylo do druhého clusteru přidáno
  • Pokud uživatel není správcem zabezpečení nebo jsou použity nesprávné přihlašovací údaje, nástroj vyvolá výjimku 401 – Neautorizováno.
  1. Příprava seznamu názvů serverů (IP, název hostitele a plně kvalifikovaný název domény), které mají být přidány do seznamu důvěryhodných certifikátů. Sloučit seznam do souboru, každý řádek s jedním názvem serveru. Pokud je síť pro správu oddělená, měl by být do seznamu důvěryhodných certifikátů přidán také plně kvalifikovaný název domény uzlů pro správu. Mnoho zákazníků může být nuceno přidat názvy uzlů. Krátké svc_exec "hostname -s" i dlouhé používání svc_exec názvu hostitele
Chcete-li zkontrolovat, zda je oddělení sítě pro správu, spusťte níže uvedený postup a vyhledejte zvýrazněný výraz "mgmt".

Příkaz:
# getrackinfo -n
Příklad:
#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
Níže uvedený příklad se seznamem názvů serverů (nahraďte skutečnými).
# cat trust.server.list
ecs1-n1
ecs1-n1.dell.com
ecs1-n2
ecs1-n2.dell.com
ecs1-n3
ecs1-n3.dell.com
ecs1-n4
ecs1-n4.dell.com 
ecs1-n5
ecs1-n5.dell.com 
Load_balancer1_IP
Load_balancer1_Hostname
Load_balancer1_FQDN
Load_balancer2_IP
Load_balancer2_Hostname
Load_balancer2_FQDN
  1. Zkontrolujte protokoly a ověřte, zda název serveru neobsahuje chyby 403:  

            Příkaz: 

svc_log -f 'ERROR  HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'

            Příklad:

# 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
Níže uvedený příklad se seznamem názvů serverů (nahraďte skutečnými).
# cat trust.server.list
ecs1-n1
ecs1-n1.dell.com
ecs1-n2
ecs1-n2.dell.com
ecs1-n3
ecs1-n3.dell.com
ecs1-n4
ecs1-n4.dell.com 
ecs1-n5
ecs1-n5.dell.com
ecsdev1-m1
ecsdev1-m2
ecsdev1-m3
Load_balancer1_IP
Load_balancer1_Hostname
Load_balancer1_FQDN
Load_balancer2_IP
Load_balancer2_Hostname
Load_balancer2_FQDN

Přidejte důvěryhodné servery s poskytnutým seznamem dodávajícím <mgmt_user>. Uživatel bude vyzván k zadání hesla k mgmt_user, které poté zadejte a pokračujte stisknutím klávesy Enter.

Příkaz: 
svc_param asn add -u <mgmt_user> -p -f <server.list>
Příklad:
# 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!
  1. Načtěte seznam důvěryhodných serverů. Seznam lze buď a) vytisknout na obrazovku pro rychlou kontrolu, pokud je krátký, nebo b) uložit do souboru pro zálohování nebo kontrolu.
  1. Vytiskněte výsledek na obrazovku. Budete vyzváni k zadání hesla. Pokračujte stisknutím klávesy Enter.
Příkaz:
 svc_param asn list -u <mgmt_user> -p
Příklad:
# 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
  1. Uložte výsledek do souboru. Budete vyzváni k zadání hesla. Pokračujte stisknutím klávesy Enter.
Příkaz: 
svc_param asn list -u <mgmt_user> -p -o <output file>
Příklad:
# 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

Poznámka: V případě, že se Load Balancer nepoužívá a stále se používá stejný nginx 403 Forbidden v uživatelském rozhraní ECS, zkontrolujte, zda zákazník používásíť VLAN. Separace pomocí getrackinfo -n pro krok 1. Pokud ano, přidejte názvy DNS pro správu a IP adresy pro správu ze sítě zákazníka do seznamu důvěryhodných serverů pro všechny jejich uzly.

(Například níže)

Příklad:

# 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 Odstraní seznam externích IP adres.

Pokud je nutné odebrat položky ze seznamu důvěryhodných položek, budete vyzváni k zadání hesla a budete pokračovat stisknutím klávesy Enter. A server.to.remove.list by měly být vytvořeny.

Příklad: 
# cat server.list.to.remove
Load_balancer1_Hostname
Load_balancer2_IP
Příkaz k odebrání:
 svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>
(Budete vyzváni k zadání hesla, pokračujte stisknutím klávesy Enter.)

Příklad:
# 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!

Opětovným výpisem položek potvrďte odebrání položek. 
Příkaz: 
svc_param asn list -u root -p
(Budete vyzváni k zadání hesla, pokračujte stisknutím klávesy Enter.)

Příklad:
# 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

Další podrobnosti a kontext týkající se této změny najdete v následujících dokumentech dostupných na webu podpory Dell:

  • Informace o vydání ECS 3.8.0 nebo ECS 3.8.1
  • Průvodce správou ECS 3.8.0 nebo ECS 3.8.1
  • Průvodce zabezpečením systému ECS 3.8.0 nebo ECS 3.8.1

Affected Products

ECS, ECS Appliance, Elastic Cloud Storage
Article 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.