ECS: Sådan forhindres værtsheaderinjektion på ECS 3.8.0 og nyere for at undgå Management API 403-fejl og utilgængelig Grafana-brugergrænseflade

Summary: Fra og med ECS 3.8.0.x er der løst et sikkerhedsproblem vedrørende indsættelse af værtsheader (se produktbemærkninger til 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

Hvad er Host Header Injection?

  • Programmet har tillid til den HTTP-værtsheader, der leveres af brugeren, og bruger den brugerleverede værtsheader til at omdirigere til en anden side. 
  • En hacker kan drage fordel af det ved at ændre HTTP-værtsoverskriften til et ondsindet værtsnavn og omdirigere brugeren til en ondsindet webside. 
Bemærk: Dette påvirker kun Management API-kald via en proxy eller en belastningsjustering. Det påvirker ikke datadriften.


Hvilke ændringer implementeres ved at starte ECS 3.8.0.x?

Som en del af rettelsen implementeres et nyt sæt API'er, der gør det muligt at indstille eller fjerne indstillingen af listen over tilladte servernavne. Værtsheaderværdien for indgående anmodninger kontrolleres i forhold til denne liste. Anmodningen afvises, hvis værtsheaderværdien ikke findes på listen.

Nedenfor er det nye sæt REST API'er, der blev introduceret til registrering og administration af listen over accepterede servere.
 
Ressourcenavn Beskrivelse
GET /acceptedservernames/ Henter listen over accepterede administrationsservernavne
POST /acceptedservernames/ Opretter eller erstatter listen over accepterede administrationsservernavne
PUT /acceptedservernames/ Opdater listen over accepterede administrationsservernavne.
DELETE /acceptedservernames/ Sletter listen over accepterede administrationsservernavne

 

Under hvilke omstændigheder er du berørt?

Brugsscenarier til implementering af løsningen med konfiguration af listen over accepterede servere på ECS:

Opgradering fra Opgradering til eller installation på Afhjælpning
ECS 3.7 og tidligere ECS 3.8.0.x
  • Implementering af løsningen er obligatorisk, hvis du bruger en proxy eller en belastningsbalancer til at sende Management API-kald til ECS.
  • Hvis du ikke implementerer løsningen, betyder det, at du modtager Management API 403-fejl, og Grafana-brugergrænsefladen er utilgængelig.
ECS 3.7 og tidligere ECS 3.8.1.x eller nyere
  • Implementering af løsningen er valgfri, hvis du bruger en proxy eller en belastningsbalancer til at sende Management API-kald til ECS.
  • Hvis løsningen ikke implementeres, betyder det, at du fortsat er sårbar over for denne sårbarhed, og ECS accepterer alle Management API-kald. 
ECS 3.8.0.x ECS 3.8.1.x eller nyere
  • Hvis du allerede har implementeret løsningen på ECS 3.8.0, forbliver løsningen på ECS 3.8.1 eller nyere.
  • Du har mulighed for at gendanne løsningen, så alle IP'er kan foretage Management API-kald.
  • Hvis du vælger at fortryde løsningen, forbliver du sårbar over for denne sårbarhed, og ECS accepterer alle Management API-kald. 



Hvad indikerer, at du er stødt på et problem?

  • Alle administrationslogin-API'er mislykkes med 403-forbidden efter ny installation eller opgradering til 3.8.0.x fra tidligere 3.8-versioner.
  • Grafana-dashboardet kan også være utilgængeligt. 


Hvilke fejl viser logfilerne på 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.

 

Løsningsoversigt (efter opgradering til 3.8.0.x eller nyere)

  1. Opgrader ECS xDoctor-softwaren til den nyeste version.
  2. Tilføj listen over eksterne IP-adresser.
  3. Der er ikke noget krav om at registrere eksterne servere, der foretager Management API-kald direkte til ECS-noderne eller bruger ECS-nodernes IP'er, da forbindelsen allerede ville være vellykket. Nedenstående procedure er kun nødvendig, hvis forbindelsen sendes via en proxyserver eller en Load Balancer. Derfor skal alle proxy- og/eller belastningsjusteringer føjes til administrationsserverens liste over accepter af servernavne.


1-xDoctor-opgradering

  1. Opgrader ECS xDoctor-softwaren til den nyeste tilgængelige version.
  1. Kontroller xDoctor-versionen, der kører på dit system. Hvis versionen er 4.8-87.0 eller nyere, skal du gå til trin "Tilføj liste over eksterne IP-adresser". Hvis ikke, skal du fortsætte med nedenstående trin.
Kommando: 
# sudo xdoctor --version
Eksempel:
admin@node1:~> sudo xdoctor --version
4.8-87.0
  1. Log på Dells supportwebsted, opret forbindelse direkte til denne download ECS-downloadplacering, søg efter xDoctor ved hjælp af nøgleordets søgelinje, og klik på linket xDoctor 4.8-87.0 RPM for at downloade. For at se produktbemærkningerne skal du oprette forbindelse direkte til ECS-produktsiden, vælge Manualer og dokumenter fra sidebjælken, hvorfra de skulle være tilgængelige til download.
  2. Når RPM er downloadet, skal du bruge et eksternt SCP-program til at uploade filen til mappen /home/admin på den første ECS-node.
  3. Når uploaden er fuldført, SSH til den første node i ECS-systemet ved hjælp af admin.
  4. Opgrader xDoctor på alle noder med den nyligt distribuerede version.  
Kommando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
Eksempel:
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. Hvis miljøet er en VDC med flere racks, skal den nye xDoctor-pakke installeres på den første node i hvert rack. For at identificere disse primærvalg skal du køre nedenstående kommando. I dette tilfælde er fire racks og fire rackprimærvalg fremhævet
  1. Find rackets primære noder (fremhævet med fed skrift nedenfor).
Kommando:
# svc_exec -m "ip address show private.4 |grep -w inet"
Eksempel:
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. Kopiér pakken fra systemets første node (R1N1) til de andre rackprimærvalg i henhold til nedenstående:
Eksempel:
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. I henhold til trin 1 ovenfor skal du køre den samme xDoctor-installationskommando på hver af ovenstående rackprimærvalg, der er identificeret tidligere. 
Kommando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm


2-A Tilføj liste over eksterne IP-adresser.

  • En administrationsbruger skal udføre denne aktivitet med rollen Sikkerhedsadministrator. I eksemplet nedenfor bruger vi rodbrugeren , da den også har en sikkerhedsadministrationsfunktion.
  • Det kan gøres på enhver node på ECS VDC.
  • I en føderation med flere VDC'er skal den udføres, efter at alle VDC'er i føderationen er blevet opgraderet. Proceduren kan derefter anvendes på hver VDC.
  • BEMÆRK: Tilladelseslisten replikeres på tværs af VDC'er, der er medlem af organisationsnetværket, så hvis du tilføjer tilladelseslisteposter i én klynge, replikeres disse poster til den anden klynge, og alt, hvad der allerede er tilføjet i den anden klynge, overskrives
  • Værktøjet udsender en "401 - Uautoriseret" undtagelse, hvis brugeren ikke er sikkerhedsadministrator, eller hvis der bruges forkerte legitimationsoplysninger.
  1. Forbered listen over servernavne (IP, værtsnavn og FQDN), der skal føjes til tillidslisten. Konsolider listen i en fil, hver linje med et servernavn. Hvis administrationsnetværket er adskilt, skal FQDN for administrationsnoder også føjes til tillidslisten. Mange kunder skal muligvis tilføje navnene på noderne; både kort ved hjælp af svc_exec "værtsnavn -s" og lang ved hjælp af svc_exec værtsnavn
For at kontrollere, om netværksadskillelse til administration, skal du køre nedenstående og søge efter "mgmt" fremhævet.

Kommando:
# getrackinfo -n
Eksempel:
#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
Eksempel nedenfor med servernavneliste (erstat med de rigtige).
# 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. Kontroller logfilerne for at kontrollere servernavnet for eventuelle 403-fejl:  

            Kommando: 

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

            Eksempel:

# 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
Eksempel nedenfor med servernavneliste (erstat med de rigtige).
# 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

Tilføj servere, der er tillid til, med den medfølgende liste, der leverer mgmt_user<>. Brugeren bliver bedt om at indtaste adgangskoden til mgmt_user, indtaste adgangskoden og derefter trykke på Enter for at fortsætte.

Kommando: 
svc_param asn add -u <mgmt_user> -p -f <server.list>
Eksempel:
# 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. Hent listen over servere, der er tillid til. Listen kan enten a) udskrives på en skærm for hurtig kontrol, hvis den er kort, eller b) gemmes i en fil til sikkerhedskopiering eller inspektion.
  1. Udskriv resultatet til skærmen. Du bliver bedt om at indtaste adgangskoden, tryk på enter for at fortsætte.
Kommando:
 svc_param asn list -u <mgmt_user> -p
Eksempel:
# 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. Gem resultatet i en fil. Du bliver bedt om at indtaste adgangskoden, tryk på enter for at fortsætte.
Kommando: 
svc_param asn list -u <mgmt_user> -p -o <output file>
Eksempel:
# 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

Bemærk: I tilfælde af at en Load Balancer IKKE bruges og stadig får det samme nginx 403 Forbidden fejl i ECS-brugergrænsefladen, skal du kontrollere, om kunden brugerVLAN-netværk. Adskillelse ved hjælp af getrackinfo -n kommando pr. trin 1. Hvis det er tilfældet, skal du tilføje administrations-DNS-navne og administrations-IP-adresser fra kundenetværket til listen over tillidsservere for alle deres noder.

(Såsom nedenfor)

Eksempel:

# 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 Fjern listen over eksterne IP-adresser.

Hvis du skal fjerne poster fra en liste, der er tillid til, bliver du bedt om at indtaste adgangskoden og trykke på enter for at fortsætte. A server.to.remove.list bør oprettes.

Eksempel: 
# cat server.list.to.remove
Load_balancer1_Hostname
Load_balancer2_IP
Kommando til at fjerne:
 svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>
(Du bliver bedt om at indtaste adgangskoden, tryk på enter for at fortsætte.)

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

Angiv posterne igen for at bekræfte, at posterne er fjernet. 
Kommando: 
svc_param asn list -u root -p
(Du bliver bedt om at indtaste adgangskoden, tryk på enter for at fortsætte.)

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

Du kan finde flere oplysninger og kontekst vedrørende denne ændring i følgende dokumenter, der er tilgængelige på Dell Support:

  • Produktbemærkninger til ECS 3.8.0 eller ECS 3.8.1
  • Administrationsvejledning til ECS 3.8.0 eller ECS 3.8.1
  • Sikkerhedsvejledning til ECS 3.8.0 eller 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.