ECS: Hostheader-injectie voorkomen op ECS 3.8.0 en hoger om API 403-fouten en ontoegankelijke Grafana-gebruikersinterface te voorkomen

Summary: Vanaf ECS 3.8.0.x is er een beveiligingsprobleem opgelost met betrekking tot de injectie van de hostheader (zie releaseopmerkingen voor 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

Wat is Host Header Injection?

  • De applicatie vertrouwt de HTTP-hostheader die door de gebruiker is geleverd en gebruikt de door de gebruiker geleverde hostheader om naar een andere pagina om te leiden. 
  • Een aanvaller kan hiervan profiteren door de HTTP Host-header te wijzigen in een kwaadaardige hostnaam en de gebruiker om te leiden naar een schadelijke webpagina. 
Opmerking: Dit heeft alleen gevolgen voor API-aanroepen voor beheer via een proxy of een load balancer. Dit heeft geen invloed op de databewerkingen.


Welke wijzigingen worden er geïmplementeerd vanaf ECS 3.8.0.x?

Als onderdeel van de oplossing wordt een nieuwe set API's geïmplementeerd waarmee de lijst met toegestane servernamen kan worden ingesteld of uitgeschakeld. De hostheaderwaarde van binnenkomende aanvragen wordt gecontroleerd aan de hand van die lijst. De aanvraag wordt afgewezen als de waarde van de hostheader niet aanwezig is in die lijst.

Hieronder vindt u de nieuwe set REST API's die zijn geïntroduceerd voor het registreren en beheren van de lijst met geaccepteerde servers.
 
Naam van bron Beschrijving
GET /acceptedservernames/ Hiermee haalt u de lijst met geaccepteerde namen van beheerservers op
POST /acceptedservernames/ Maakt of vervangt de lijst met geaccepteerde beheerservernamen
PUT /acceptedservernames/ Werk de lijst met geaccepteerde namen van beheerservers bij.
DELETE /acceptedservernames/ Verwijdert de lijst met geaccepteerde namen van beheerservers

 

In welke omstandigheden heeft dit gevolgen voor u?

Gebruiksscenario's voor het implementeren van de oplossing voor het configureren van de lijst met geaccepteerde servers op ECS:

Upgraden vanaf Upgraden naar of installeren op Herstel
ECS 3.7 en eerder ECS 3.8.0.x
  • Het implementeren van de oplossing is verplicht als u een proxy of een load balancer gebruikt om Management API-aanroepen naar ECS te verzenden.
  • Als u de oplossing niet implementeert, ontvangt u Management API 403-fouten en is de Grafana-gebruikersinterface niet toegankelijk.
ECS 3.7 en eerder ECS 3.8.1.x of hoger
  • Het implementeren van de oplossing is optioneel als u een proxy of een load balancer gebruikt om Management API-aanroepen naar ECS te verzenden.
  • Als u de oplossing niet implementeert, blijft u kwetsbaar voor dit beveiligingslek en ECS accepteert alle aanroepen van Management API. 
ECS 3.8.0.x ECS 3.8.1.x of hoger
  • Als u de oplossing al hebt geïmplementeerd op ECS 3.8.0, blijft de oplossing aanwezig op ECS 3.8.1 of nieuwer.
  • U hebt de mogelijkheid om de oplossing terug te zetten, zodat alle IP's Management API-aanroepen kunnen doen.
  • Als u ervoor kiest om de oplossing terug te draaien, blijft u kwetsbaar voor dit beveiligingslek en accepteert ECS alle aanroepen van de Management API. 



Wat geeft aan dat u een probleem bent tegengekomen?

  • Alle API's voor beheeraanmelding mislukken met 403-forbidden na een nieuwe installatie of upgrade naar 3.8.0.x van eerdere 3.8-versies.
  • Het Grafana-dashboard is mogelijk ook ontoegankelijk. 


Welke fouten worden in ECS weergegeven in de logboeken?

"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.

 

Oplossingsoverzicht (na upgrade naar 3.8.0.x of hoger)

  1. Werk uw ECS xDoctor-software bij naar de nieuwste versie.
  2. Voeg de lijst met externe IP-adressen toe.
  3. Het is niet nodig om externe servers te registreren die rechtstreeks API-aanroepen van het beheer rechtstreeks naar de ECS-knooppunten uitvoeren, of de IP-adressen van de ECS-knooppunten gebruiken, omdat de verbinding al tot stand is gebracht. De onderstaande procedure is alleen nodig als de verbinding wordt doorgegeven via een proxyserver of een Load Balancer. Daarom moeten alle proxy's en/of loadbalancers worden toegevoegd aan de lijst Acceptabele namen van beheerservers.


1-xDoctor-upgrade

  1. Upgrade uw ECS xDoctor-software naar de nieuwste beschikbare versie.
  1. Controleer de xDoctor-versie die op uw systeem wordt uitgevoerd. Als de versie 4.8-87.0 of hoger is, gaat u naar stap "Lijst met externe IP-adressen toevoegen". Als dit niet het geval is, gaat u verder met de onderstaande stappen.
Opdracht: 
# sudo xdoctor --version
Voorbeeld:
admin@node1:~> sudo xdoctor --version
4.8-87.0
  1. Meld u aan bij de Dell Support website, maak rechtstreeks verbinding met deze download ECS downloadlocatie, zoek xDoctor met behulp van de zoekbalk op trefwoord en klik op de link xDoctor 4.8-87.0 RPM om deze te downloaden. Als u de releaseopmerkingen wilt bekijken, gaat u rechtstreeks naar de ECS productpagina en selecteert u Handleidingen en documenten in de zijbalk, waar ze kunnen worden gedownload.
  2. Nadat de RPM is gedownload, gebruikt u een extern SCP-programma om het bestand te uploaden naar de map /home/admin op het eerste ECS knooppunt.
  3. Zodra het uploaden is voltooid, SSH naar het eerste knooppunt van het ECS systeem met behulp van admin.
  4. Voer een upgrade uit van xDoctor op alle knooppunten met de nieuw gedistribueerde versie.  
Opdracht:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
Voorbeeld:
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. Als de omgeving een VDC met meerdere racks is, moet het nieuwe xDoctor-pakket op het eerste knooppunt van elk rack worden geïnstalleerd. Voer de onderstaande opdracht uit om deze primaire racks te identificeren. In dit geval zijn er vier racks en vier rack primaries gemarkeerd
  1. Zoek de primaire rackknooppunten (hieronder vetgedrukt gemarkeerd).
Opdracht:
# svc_exec -m "ip address show private.4 |grep -w inet"
Voorbeeld:
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. Kopieer het pakket van het eerste knooppunt van het systeem (R1N1) naar de andere primaire racks zoals hieronder:
Voorbeeld:
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. Voer volgens stap 1 hierboven dezelfde xDoctor-installatieopdracht uit op elk van de hierboven genoemde primaire racks. 
Opdracht:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm


2-A Lijst met externe IP-adressen toegevoegd.

  • Een beheergebruiker moet deze activiteit uitvoeren met de rol van beveiligingsbeheerder. In het onderstaande voorbeeld gebruiken we de rootgebruiker , omdat die ook een Security Administrator-mogelijkheid heeft.
  • Het kan worden gedaan op elk knooppunt op ECS VDC.
  • In een federatie met meerdere VDC's moet dit worden uitgevoerd nadat alle VDC's in de federatie zijn geüpgraded. De procedure kan vervolgens worden toegepast op elke VDC.
  • OPMERKING: De toelatingslijst wordt gerepliceerd over federatieve VDC's, dus het toevoegen van vermeldingen op de toelatingslijst aan het ene cluster repliceert deze vermeldingen naar het andere cluster en overschrijft alles wat al is toegevoegd aan het andere cluster
  • Het hulpprogramma genereert een "401 - Niet geautoriseerd"-uitzondering als de gebruiker geen beveiligingsbeheerder is of als de verkeerde referentie wordt gebruikt.
  1. Bereid de lijst met servernamen (IP, hostnaam en FQDN) voor die aan de vertrouwenslijst moeten worden toegevoegd. Consolideer de lijst in een bestand, elke regel met één servernaam. Als het beheernetwerk gescheiden is, moeten FQDN van beheerknooppunten ook worden toegevoegd aan de vertrouwenslijst. Veel klanten moeten mogelijk de namen van de knooppunten toevoegen; zowel kort met svc_exec "hostnaam -s" als lang met svc_exec hostnaam
Als u wilt controleren of netwerkscheiding voor beheer mogelijk is, voert u het onderstaande uit en zoekt u naar 'mgmt' gemarkeerd.

Opdracht:
# getrackinfo -n
Voorbeeld:
#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
Voorbeeld hieronder met lijst met servernamen (vervang door de echte).
# 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. Controleer de logboeken om de servernaam te verifiëren op eventuele 403-fouten:  

            Opdracht: 

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

            Voorbeeld:

# 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
Voorbeeld hieronder met lijst met servernamen (vervang door de echte).
# 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

Voeg vertrouwde servers toe aan de verstrekte lijst met de <mgmt_user>. De gebruiker wordt gevraagd om het wachtwoord voor de mgmt_user in te voeren, het wachtwoord in te voeren en vervolgens op Enter te drukken om door te gaan.

Opdracht: 
svc_param asn add -u <mgmt_user> -p -f <server.list>
Voorbeeld:
# 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. Haal de lijst met vertrouwde servers op. De lijst kan a) worden afgedrukt op een scherm om snel te controleren of deze kort is, of b) worden opgeslagen in een bestand voor back-up of inspectie.
  1. Druk het resultaat af op het scherm. U wordt gevraagd om het wachtwoord in te voeren. Druk op Enter om door te gaan.
Opdracht:
 svc_param asn list -u <mgmt_user> -p
Voorbeeld:
# 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. Sla het resultaat op in een bestand. U wordt gevraagd om het wachtwoord in te voeren. Druk op Enter om door te gaan.
Opdracht: 
svc_param asn list -u <mgmt_user> -p -o <output file>
Voorbeeld:
# 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

Opmerking: In het geval dat een Load Balancer NIET wordt gebruikt en toch hetzelfde krijgt nginx 403 Forbidden fout in de ECS-gebruikersinterface, controleer dan of de klant VLAN Network gebruikt. Scheiding met behulp van de getrackinfo -n Commando per stap 1. Zo ja, voeg dan de DNS-namen voor het beheer en de IP-adressen van het klantnetwerk toe aan de lijst met vertrouwensservers voor alle knooppunten.

(Zoals hieronder)

Voorbeeld:

# 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 Verwijder de lijst met externe IP-adressen.

Als u vermeldingen uit een vertrouwde lijst moet verwijderen, wordt u gevraagd het wachtwoord in te voeren en op Enter te drukken om door te gaan. A server.to.remove.list moeten worden gecreëerd.

Voorbeeld: 
# cat server.list.to.remove
Load_balancer1_Hostname
Load_balancer2_IP
Opdracht om te verwijderen:
 svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>
(U wordt gevraagd om het wachtwoord in te voeren, druk op Enter om door te gaan.)

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

Bied de vermeldingen opnieuw aan om te bevestigen dat de vermeldingen worden verwijderd. 
Opdracht: 
svc_param asn list -u root -p
(U wordt gevraagd om het wachtwoord in te voeren, druk op Enter om door te gaan.)

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

Raadpleeg de volgende documenten die beschikbaar zijn op Dell Support voor meer informatie en context met betrekking tot deze wijziging:

  • ECS 3.8.0 of ECS 3.8.1 releaseopmerkingen
  • ECS 3.8.0 of ECS 3.8.1 beheerhandleiding
  • Beveiligingshandleiding ECS 3.8.0 of 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.