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

Sammanfattning: 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).

Den här artikeln gäller för Den här artikeln gäller inte för Den här artikeln är inte kopplad till någon specifik produkt. Alla produktversioner identifieras inte i den här artikeln.

Instruktioner

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

Ytterligare 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

Berörda produkter

ECS, ECS Appliance, Elastic Cloud Storage
Artikelegenskaper
Artikelnummer: 000205031
Artikeltyp: How To
Senast ändrad: 14 nov. 2024
Version:  30
Få svar på dina frågor från andra Dell-användare
Supporttjänster
Kontrollera om din enhet omfattas av supporttjänster.