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).
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.
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 |
|
| ECS 3.7 en eerder | ECS 3.8.1.x of hoger |
|
| ECS 3.8.0.x | ECS 3.8.1.x of hoger |
|
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)
- Werk uw ECS xDoctor-software bij naar de nieuwste versie.
- Voeg de lijst met externe IP-adressen toe.
- 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
- Upgrade uw ECS xDoctor-software naar de nieuwste beschikbare versie.
- 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.
# sudo xdoctor --version
admin@node1:~> sudo xdoctor --version 4.8-87.0
- 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.
- 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.
- Zodra het uploaden is voltooid, SSH naar het eerste knooppunt van het ECS systeem met behulp van admin.
- Voer een upgrade uit van xDoctor op alle knooppunten met de nieuw gedistribueerde versie.
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmVoorbeeld:
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
- 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
- Zoek de primaire rackknooppunten (hieronder vetgedrukt gemarkeerd).
# 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
- Kopieer het pakket van het eerste knooppunt van het systeem (R1N1) naar de andere primaire racks zoals hieronder:
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~>
- Voer volgens stap 1 hierboven dezelfde xDoctor-installatieopdracht uit op elk van de hierboven genoemde primaire racks.
# 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.
- 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
Opdracht:
# getrackinfo -n
#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
# 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
- 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
# 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
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.
svc_param asn add -u <mgmt_user> -p -f <server.list>
# 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!
- 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.
- Druk het resultaat af op het scherm. U wordt gevraagd om het wachtwoord in te voeren. Druk op Enter om door te gaan.
svc_param asn list -u <mgmt_user> -p
# 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
- Sla het resultaat op in een bestand. U wordt gevraagd om het wachtwoord in te voeren. Druk op Enter om door te gaan.
svc_param asn list -u <mgmt_user> -p -o <output file>
# 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.
# cat server.list.to.remove Load_balancer1_Hostname Load_balancer2_IPOpdracht 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.
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