ECS: Så här förhindrar du inmatning av värdrubrik på ECS 3.8.0 och senare för att undvika hanterings-API 403-fel och otillgängligt Grafana-användargränssnitt

Summary: Från och med ECS 3.8.0.x finns det ett säkerhetsproblem som åtgärdats angående injicering av värdhuvud (se versionskommentarer för 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

Vad är Host Header Injection?

  • Programmet litar på HTTP-värdhuvudet som tillhandahålls av användaren och använder värdhuvudet som tillhandahålls av användaren för att omdirigera till en annan sida. 
  • En angripare kan dra nytta av det genom att ändra HTTP-värdhuvudet till ett skadligt värdnamn och omdirigera användaren till en skadlig webbsida. 
Obs! Detta påverkar endast Management API-anrop via en proxy eller en lastbalanserare. Det påverkar inte dataåtgärder.


Vilka ändringar implementeras från och med ECS 3.8.0.x?

Som en del av korrigeringen implementeras en ny uppsättning API:er som gör det möjligt att ställa in eller ta bort listan över tillåtna servernamn. Värdhuvudets värde för inkommande begäranden kontrolleras mot listan. Begäran avvisas om värdhuvudets värde inte finns i listan.

Nedan visas den nya uppsättningen REST-API:er som introduceras för registrering och hantering av listan över godkända servrar.
 
Resursnamn Beskrivning
GET /acceptedservernames/ Hämtar listan över godkända hanteringsservernamn
POST /acceptedservernames/ Skapar eller ersätter listan över godkända hanteringsservernamn
PUT /acceptedservernames/ Uppdatera listan över godkända hanteringsservernamn.
DELETE /acceptedservernames/ Tar bort listan över godkända hanteringsservernamn

 

Under vilka omständigheter påverkas du?

Användningsfall för att implementera lösningen att konfigurera listan över godkända servrar på ECS:

Uppgradera från Uppgradera till eller installera på Åtgärd
ECS 3.7 och tidigare ECS 3.8.0.x
  • Implementering av lösningen är obligatorisk om du använder en proxy eller en lastbalanserare för att skicka hanterings-API-anrop till ECS.
  • Om du inte implementerar lösningen får du Management API 403-fel och att Grafana-användargränssnittet inte är tillgängligt.
ECS 3.7 och tidigare ECS 3.8.1.x eller senare
  • Det är valfritt att implementera lösningen om du använder en proxy eller en lastbalanserare för att skicka hanterings-API-anrop till ECS.
  • Om du inte implementerar lösningen är du fortfarande sårbar för den här säkerhetsrisken och ECS accepterar alla API-anrop för hantering. 
ECS 3.8.0.x ECS 3.8.1.x eller senare
  • Om du redan har implementerat lösningen på ECS 3.8.0 finns lösningen kvar på ECS 3.8.1 eller senare.
  • Du har möjlighet att återställa lösningen så att alla IP-adresser kan göra Management API-anrop.
  • Om du väljer att återställa lösningen är du fortfarande sårbar för det här säkerhetsproblemet och ECS accepterar alla Management API-anrop. 



Vad tyder på att du har stött på ett problem?

  • Alla API:er för hanteringsinloggning misslyckas med 403-forbidden efter ny installation eller uppgradering till 3.8.0.x från tidigare 3.8-versioner.
  • Grafana-instrumentpanelen kan också vara otillgänglig. 


Vilka fel visar loggarna 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.

 

Sammanfattning av lösning (efter uppgradering till 3.8.0.x eller senare)

  1. Uppgradera din ECS xDoctor-programvara till den senaste versionen.
  2. Lägg till listan över externa IP-adresser.
  3. Det finns inget krav på att registrera externa servrar som gör hanterings-API-anrop direkt till ECS-noderna direkt, eller använda ECS-nodernas IP-adresser, eftersom anslutningen redan skulle lyckas. Proceduren nedan krävs endast om anslutningen skickas via en proxyserver eller en lastbalanserare. Därför måste alla proxy- och/eller lastbalanserare läggas till i listan över godkända hanteringsservernamn.


1 xDoctor-uppgradering

  1. Uppgradera din ECS xDoctor-programvara till den senaste tillgängliga versionen.
  1. Kontrollera xDoctor-versionen som körs på ditt system. Om versionen är 4.8-87.0 eller senare går du vidare till steg "Lägg till lista över externa IP-adresser". Om inte, fortsätt med stegen nedan.
Kommando: 
# sudo xdoctor --version
Exempel:
admin@node1:~> sudo xdoctor --version
4.8-87.0
  1. Logga in på Dells supportwebbplats, anslut direkt till den här nedladdningsplatsen, sök efter xDoctor med hjälp av nyckelordssökfältet och klicka på länken xDoctor 4.8-87.0 RPM för att ladda ner. Om du vill visa versionskommentarerna ansluter du direkt till ECS-produktsidan och väljer Handböcker och dokument i sidofältet där de ska vara tillgängliga för nedladdning.
  2. När RPM-minnet har laddats ner använder du valfritt fjärr-SCP-program för att ladda upp filen till katalogen /home/admin på den första ECS-noden.
  3. När uppladdningen är klar SSH-anslut till den första noden i ECS-systemet med admin.
  4. Uppgradera xDoctor på alla noder med den nyligen distribuerade versionen.  
Kommando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
Exempel:
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. Om miljön är en VDC med flera rack måste det nya xDoctor-paketet installeras på den första noden i varje rack. Om du vill identifiera dessa primära rackversioner kör du kommandot nedan. I det här fallet är fyra rack och fyra primära rack markerade
  1. Hitta de primära racknoderna (markerade i fetstil nedan).
Kommando:
# svc_exec -m "ip address show private.4 |grep -w inet"
Exempel:
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. Kopiera paketet från den första noden i systemet (R1N1) till de andra primära rackinställningarna enligt nedan:
Exempel:
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. Enligt steg 1 ovan kör du samma xDoctor-installationskommando på var och en av ovanstående rackprimärer som identifierades tidigare. 
Kommando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm


2-A Lägg till en lista över externa IP-adresser.

  • En hanteringsanvändare måste utföra den här aktiviteten med rollen Säkerhetsadministratör. I exemplet nedan använder vi rotanvändaren eftersom den också har en säkerhetsadministrationsfunktion.
  • Det kan göras på valfri nod på ECS VDC.
  • I en federation med flera VDC:er måste det utföras efter att alla VDC: er i federationen har uppgraderats. Proceduren kan sedan tillämpas på varje VDC.
  • Obs! Tillåtelselistan replikeras över federerade virtuella datacenter, så om du lägger till godkännandelisteposter i ett kluster replikeras dessa poster till det andra klustret och allt som redan har lagts till i det andra klustret skrivs över
  • Verktyget genererar undantaget "401 – Obehörig" om användaren inte är säkerhetsadministratör eller om fel autentiseringsuppgifter används.
  1. Förbered listan över servernamn (IP, värdnamn och FQDN) som ska läggas till i listan över betrodda användare. Konsolidera listan i en fil, där varje rad har ett servernamn. Om hanteringsnätverket är separerat ska även FQDN för hanteringsnoder läggas till i listan över betrodda noder. Många kunder kan behöva lägga till namnen på noderna. Både kort med svc_exec "värdnamn -s" och lång med svc_exec värdnamn
Om du vill kontrollera om nätverksseparation för hantering kör du nedanstående och söker efter "mgmt" markerat.

Kommando:
# getrackinfo -n
Exempel:
#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
Exempel nedan med servernamnslista (ersätt med de riktiga).
# 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. Kontrollera loggarna för att kontrollera servernamnet för eventuella 403-fel:  

            Kommando: 

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

            Exempel:

# 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
Exempel nedan med servernamnslista (ersätt med de riktiga).
# 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

Lägg till betrodda servrar med den medföljande listan som tillhandahåller <mgmt_user>. Användaren uppmanas att ange lösenordet för mgmt_user, ange lösenordet och sedan trycka på Retur för att fortsätta.

Kommando: 
svc_param asn add -u <mgmt_user> -p -f <server.list>
Exempel:
# 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. Hämta listan över betrodda servrar. Listan kan antingen a) skrivas ut på en skärm för snabb kontroll om den är kort, eller b) sparas i en fil för säkerhetskopiering eller inspektion.
  1. Skriv ut resultatet på skärmen. Du uppmanas att ange lösenordet. Tryck på Retur för att fortsätta.
Kommando:
 svc_param asn list -u <mgmt_user> -p
Exempel:
# 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. Spara resultatet i en fil. Du uppmanas att ange lösenordet. Tryck på Retur för att fortsätta.
Kommando: 
svc_param asn list -u <mgmt_user> -p -o <output file>
Exempel:
# 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

Obs! Om en lastbalanserare INTE används och fortfarande får samma nginx 403 Forbidden fel i ECS-användargränssnittet, kontrollera om kunden använderVLAN-nätverket. Separering med hjälp av getrackinfo -n kommando per steg 1. I så fall lägger du till hanterings-DNS-namnen och IP-adresserna för hantering från kundnätverket i listan över betrodda servrar för alla noderna.

(Som nedan)

Exempel:

# 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 Ta bort listan över externa IP-adresser.

Om du måste ta bort poster från en lista över betrodda användare uppmanas du att ange lösenordet och trycka på Retur för att fortsätta. A server.to.remove.list bör inrättas.

Exempel: 
# cat server.list.to.remove
Load_balancer1_Hostname
Load_balancer2_IP
Kommando för att ta bort:
 svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>
(Du uppmanas att ange lösenordet, tryck på enter för att fortsätta.)

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

Lista posterna igen för att bekräfta att posterna har tagits bort. 
Kommando: 
svc_param asn list -u root -p
(Du uppmanas att ange lösenordet, tryck på enter för att fortsätta.)

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

Mer information och sammanhang om den här ändringen finns i följande dokument som finns på Dells support:

  • ECS 3.8.0 eller ECS 3.8.1 versionskommentarer
  • ECS 3.8.0 eller ECS 3.8.1 – Administrationsmanual
  • ECS 3.8.0 eller ECS 3.8.1 säkerhetsmanual

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.