ECS: Come impedire l'inserimento dell'intestazione host su ECS 3.8.0 e versioni successive per evitare errori dell'API di gestione 403 e un'interfaccia utente di Grafana inaccessibile

Summary: A partire da ECS 3.8.0.x, è stato risolto un problema di sicurezza relativo all'aggiunta di intestazione host (vedere le note di rilascio per 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

Che cos'è l'inserimento di intestazione host?

  • L'applicazione considera attendibile l'intestazione host HTTP fornita dall'utente e utilizza l'intestazione host fornita dall'utente per reindirizzare a un'altra pagina. 
  • Un utente malintenzionato potrebbe trarne vantaggio modificando l'intestazione host HTTP con un nome host dannoso e reindirizzando l'utente a una pagina Web dannosa. 
Nota: Ciò influisce solo sulle chiamate all'API di gestione tramite un proxy o un servizio di bilanciamento del carico. Non influisce sulle operazioni di dati.


Quali modifiche vengono implementate a partire da ECS 3.8.0.x?

Come parte della correzione, è stato implementato un nuovo set di API che consente di impostare o annullare l'impostazione dell'elenco dei nomi di server consentiti. Il valore dell'intestazione host delle richieste in ingresso viene confrontato con tale elenco. La richiesta viene rifiutata se il valore dell'intestazione host non è presente in tale elenco.

Di seguito è riportato il nuovo set di API REST introdotte per la registrazione e la gestione dell'elenco dei server accettati.
 
Nome risorsa Descrizione
GET /acceptedservernames/ Ottiene l'elenco dei nomi dei server di gestione accettati
POST /acceptedservernames/ Crea o sostituisce l'elenco dei nomi dei server di gestione accettati
PUT /acceptedservernames/ Aggiornare l'elenco dei nomi dei server di gestione accettati.
DELETE /acceptedservernames/ Elimina l'elenco dei nomi dei server di gestione accettati

 

In quali circostanze sei colpito?

Casi d'uso per implementare la soluzione di configurazione dell'elenco dei server accettati su ECS:

Aggiornamento da Aggiornamento o installazione su Correzione
ECS 3.7 e versioni precedenti ECS 3.8.0.x
  • L'implementazione della soluzione è obbligatoria se si utilizza un proxy o un load balancer per inviare chiamate all'API di gestione a ECS.
  • Se non si implementa la soluzione, si ricevono errori Management API 403 e l'interfaccia utente di Grafana non è accessibile.
ECS 3.7 e versioni precedenti ECS 3.8.1.x o versione successiva
  • L'implementazione della soluzione è opzionale se si utilizza un proxy o un sistema di bilanciamento del carico per inviare chiamate all'API di gestione a ECS.
  • La mancata implementazione della soluzione implica la vulnerabilità a questa vulnerabilità e l'ECS accetta tutte le chiamate all'API Management. 
ECS 3.8.0.x ECS 3.8.1.x o versione successiva
  • Se la soluzione è già stata implementata in ECS 3.8.0, la soluzione rimane in vigore in ECS 3.8.1 o versione successiva.
  • È possibile ripristinare la soluzione per consentire a tutti gli IP di effettuare chiamate all'API di gestione.
  • Se si sceglie di ripristinare la soluzione, si rimane vulnerabili a questa vulnerabilità e ECS accetta tutte le chiamate all'API Management. 



Cosa indica che hai riscontrato un problema?

  • Tutte le API di accesso alla gestione avranno esito negativo con 403-Forbidden dopo una nuova installazione o l'aggiornamento a 3.8.0.x da versioni 3.8 precedenti.
  • Anche il dashboard di Grafana potrebbe essere inaccessibile. 


Quali errori mostrano i registri su 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.

 

Riepilogo della risoluzione (dopo l'aggiornamento alla versione 3.8.0.x o successiva)

  1. Aggiornare il software ECS xDoctor alla versione più recente.
  2. Aggiungere l'elenco degli IP esterni.
  3. Non è necessario registrare i server esterni che effettuano chiamate all'API Management direttamente ai nodi ECS o utilizzando gli IP dei nodi ECS, in quanto la connessione avrebbe già esito positivo. La procedura riportata di seguito è necessaria solo se la connessione passa attraverso un server proxy o un sistema di bilanciamento del carico. Pertanto, tutti i proxy e/o i bilanciatori del carico devono essere aggiunti all'elenco dei nomi dei server di gestione accettati.


Upgrade 1-xDoctor

  1. Aggiornare il software ECS xDoctor alla versione più recente disponibile.
  1. Controllare la versione di xDoctor in esecuzione sul sistema. Se la versione è 4.8-87.0 o successiva, andare al passaggio "Aggiungi elenco di IP esterni". In caso contrario, procedere come indicato di seguito.
Comando: 
# sudo xdoctor --version
Esempio:
admin@node1:~> sudo xdoctor --version
4.8-87.0
  1. Accedere al sito del supporto Dell, connettersi direttamente alla posizione di download di ECS Download, cercare xDoctor utilizzando la barra di ricerca per parole chiave e cliccare sul link xDoctor 4.8-87.0 RPM per scaricarlo. Per visualizzare le note di rilascio, connettersi direttamente alla pagina del prodotto ECS, selezionare Manuali e documenti dalla barra laterale da cui dovrebbero essere disponibili per il download.
  2. Una volta scaricato l'RPM, utilizzare un programma SCP remoto per caricare il file nella directory /home/admin sul primo nodo ECS.
  3. Al termine dell'upload, accedere tramite SSH al primo nodo del sistema ECS come utente admin.
  4. Aggiornare xDoctor su tutti i nodi con la nuova versione.  
Comando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
Esempio:
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. Se l'ambiente è un VDC a più rack, il nuovo pacchetto di xDoctor deve essere installato sul primo nodo di ogni rack. Per identificare i rack principali, eseguire il comando riportato di seguito. In questo caso, sono evidenziati quattro rack e quattro rack primari
  1. Individuare i nodi primari del rack (evidenziati in grassetto di seguito).
Comando:
# svc_exec -m "ip address show private.4 |grep -w inet"
Esempio:
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. Copiare il pacchetto dal primo nodo del sistema (R1N1) negli altri rack principali come indicato di seguito:
Esempio:
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. In base al passaggio 1 precedente, eseguire lo stesso comando per installare xDoctor su ciascuno dei rack principali identificati in precedenza. 
Comando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm


2-A Aggiunta di un elenco di IP esterni.

  • Un utente di gestione deve eseguire questa attività con un ruolo di Security Administrator. Nell'esempio riportato di seguito viene utilizzato l'utente root , che dispone anche di una funzionalità Security Administration.
  • Questa operazione può essere eseguita su qualsiasi nodo del VDC ECS.
  • In una federazione con più VDC, deve essere eseguita dopo che tutti i VDC della federazione sono stati aggiornati. La procedura può quindi essere applicata a ogni VDC.
  • NOTA: L'elenco consentiti viene replicato tra VDC federati, pertanto l'aggiunta di voci nell'elenco consentiti in un cluster replica tali voci nell'altro cluster e sovrascrive qualsiasi elemento già aggiunto nell'altro cluster
  • Lo strumento genera un eccezione "401 - Unauthorized" se l'utente non è Security Administrator o se vengono utilizzate credenziali errate.
  1. Preparare l'elenco dei nomi di server (IP, nome host e FQDN) da aggiungere all'elenco dei server attendibili. Consolidare l'elenco in un file, ogni riga con un nome di server. Se la rete di gestione è separata, è necessario aggiungere anche l'FQDN dei nodi di gestione all'elenco dei certificati attendibili. Molti clienti potrebbero dover aggiungere i nomi dei nodi; Sia breve che utilizza svc_exec "hostname -s" che lungo che svc_exec nome host
Per verificare se la separazione di rete è necessaria per la gestione, eseguire quanto segue e cercare "mgmt" evidenziato.

Comando:
# getrackinfo -n
Esempio:
#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
Esempio riportato di seguito con l'elenco dei nomi dei server (sostituire con quelli reali).
# 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. Controllare i registri per verificare la presenza di errori 403 nel nome del server:  

            Comando: 

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

            Esempio:

# 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
Esempio riportato di seguito con l'elenco dei nomi dei server (sostituire con quelli reali).
# 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

Aggiungere server attendibili con l'elenco fornito che fornisce il <mgmt_user>. All'utente viene richiesto di inserire la password per il mgmt_user, inserire la password, quindi premere Invio per continuare.

Comando: 
svc_param asn add -u <mgmt_user> -p -f <server.list>
Esempio:
# 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. Recuperare l'elenco dei server attendibili. L'elenco può essere a) stampato su uno schermo per un controllo rapido se è corto oppure b) salvato in un file per il backup o l'ispezione.
  1. Stampare il risultato sullo schermo. Viene richiesto di inserire la password, premere Invio per continuare.
Comando:
 svc_param asn list -u <mgmt_user> -p
Esempio:
# 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. Salvare il risultato in un file. Viene richiesto di inserire la password, premere Invio per continuare.
Comando: 
svc_param asn list -u <mgmt_user> -p -o <output file>
Esempio:
# 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

Nota: Nel caso in cui un Load Balancer NON sia utilizzato e continui a ottenere lo stesso nginx 403 Forbidden errore nell'interfaccia utente ECS, verificare se il cliente utilizza la reteVLAN. Separazione mediante getrackinfo -n comando per passaggio 1. In tal caso, aggiungere i nomi DNS di gestione e gli indirizzi IP di gestione della rete del cliente nell'elenco dei server attendibili per tutti i relativi nodi.

(Come di seguito)

Esempio:

# 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 Rimuovere l'elenco degli IP esterni.

Se è necessario rimuovere voci da un elenco di attendibilità, viene richiesto di immettere la password e premere Invio per continuare. A server.to.remove.list dovrebbe essere creata.

Esempio: 
# cat server.list.to.remove
Load_balancer1_Hostname
Load_balancer2_IP
Comando per rimuovere:
 svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>
Viene richiesto di inserire la password; premere Invio per continuare.

Esempio:
# 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!

Elencare nuovamente le voci per confermare che quelle siano state rimosse. 
Comando: 
svc_param asn list -u root -p
Viene richiesto di inserire la password; premere Invio per continuare.

Esempio:
# 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

Per ulteriori dettagli e contesto relativi a questa modifica, consultare i seguenti documenti disponibili sul supporto Dell:

  • Note di rilascio di ECS 3.8.0 o ECS 3.8.1
  • Guida all'amministrazione di ECS 3.8.0 o ECS 3.8.1
  • Guida alla sicurezza di ECS 3.8.0 o 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.