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 |
|
| ECS 3.7 e versioni precedenti | ECS 3.8.1.x o versione successiva |
|
| ECS 3.8.0.x | ECS 3.8.1.x o versione successiva |
|
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)
- Aggiornare il software ECS xDoctor alla versione più recente.
- Aggiungere l'elenco degli IP esterni.
- 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
- Aggiornare il software ECS xDoctor alla versione più recente disponibile.
- 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
- 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.
- Una volta scaricato l'RPM, utilizzare un programma SCP remoto per caricare il file nella directory /home/admin sul primo nodo ECS.
- Al termine dell'upload, accedere tramite SSH al primo nodo del sistema ECS come utente admin.
- Aggiornare xDoctor su tutti i nodi con la nuova versione.
Comando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmEsempio:
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
- 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
- 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
- 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~>
- 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.
- 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.comecs1-n4 ecs1-n4.dell.comecs1-n5 ecs1-n5.dell.comLoad_balancer1_IPLoad_balancer1_HostnameLoad_balancer1_FQDNLoad_balancer2_IPLoad_balancer2_HostnameLoad_balancer2_FQDN
- 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.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
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!
- 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.
- 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
- 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_IPComando 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.
svc_param asn list -u root -pViene 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 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.