ECS: Jak zapobiec iniekcjom nagłówka hosta w ECS 3.8.0 i nowszych, aby uniknąć błędów interfejsu API zarządzania 403 i niedostępnego interfejsu użytkownika narzędzia Grafana
Summary: Począwszy od ECS 3.8.0.x, rozwiązano problem z zabezpieczeniami dotyczący iniekcji nagłówka hosta (patrz informacje dotyczące wydania 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
Co to jest iniekcja nagłówka hosta?
- Aplikacja ufa nagłówkowi HTTP Host dostarczonemu przez użytkownika i używa podanego przez użytkownika nagłówka host do przekierowania na inną stronę.
- Osoba atakująca może to wykorzystać, zmieniając nagłówek HTTP Host na złośliwą nazwę hosta i przekierowując użytkownika na złośliwą stronę internetową.
Uwaga: Ma to wpływ tylko na wywołania interfejsu API zarządzania za pośrednictwem serwera proxy lub modułu równoważenia obciążenia. Nie ma to wpływu na operacje na danych.
Jakie zmiany zostaną wprowadzone począwszy od wersji ECS 3.8.0.x?
W ramach poprawki zaimplementowano nowy zestaw interfejsów API, który umożliwia ustawianie lub cofanie listy dozwolonych nazw serwerów. Wartość nagłówka hosta żądań przychodzących jest sprawdzana na tej liście. Żądanie jest odrzucane, jeśli wartość nagłówka hosta nie znajduje się na tej liście.
Poniżej znajduje się nowy zestaw interfejsów API REST wprowadzony do rejestracji i zarządzania listą akceptowanych serwerów.
| Nazwa zasobu | Opis |
|---|---|
GET /acceptedservernames/ |
Pobiera listę zaakceptowanych nazw serwerów zarządzania |
POST /acceptedservernames/ |
Tworzy lub zastępuje listę akceptowanych nazw serwerów zarządzania |
PUT /acceptedservernames/ |
Zaktualizuj listę zaakceptowanych nazw serwerów zarządzania. |
DELETE /acceptedservernames/ |
Usuwa listę zaakceptowanych nazw serwerów zarządzania |
W jakich okolicznościach to dotyczy?
Przypadki użycia do wdrożenia rozwiązania konfiguracji listy akceptowanych serwerów na ECS:
| Uaktualnienie z | Uaktualnianie lub instalowanie | Naprawa szkód |
|---|---|---|
| ECS 3.7 i starsze wersje | ECS 3.8.0.x |
|
| ECS 3.7 i starsze wersje | ECS 3.8.1.x lub nowszy |
|
| ECS 3.8.0.x | ECS 3.8.1.x lub nowszy |
|
Co wskazuje na to, że wystąpił problem?
- Wszystkie interfejsy API logowania do zarządzania ulegną awarii z błędem 403-forbidden po nowej instalacji lub uaktualnieniu do wersji 3.8.0.x z wcześniejszych wersji 3.8.
- Pulpit nawigacyjny narzędzia Grafana może być również niedostępny.
Jakie błędy pokazują dzienniki 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.
Podsumowanie rozwiązania (po uaktualnieniu do wersji 3.8.0.x lub nowszej)
- Zaktualizuj oprogramowanie ECS xDoctor do najnowszej wersji.
- Dodaj listę zewnętrznych adresów IP.
- Nie ma wymogu rejestrowania serwerów zewnętrznych wykonujących wywołania interfejsu API zarządzania bezpośrednio do węzłów ECS lub korzystających z adresów IP węzłów ECS, ponieważ połączenie zostanie już pomyślne. Poniższa procedura jest wymagana tylko wtedy, gdy połączenie jest przekazywane przez serwer proxy lub Load Balancer. W związku z tym wszystkie serwery proxy i/lub moduły równoważenia obciążenia muszą zostać dodane do listy akceptowanych nazw serwerów zarządzania.
Aktualizacja 1-xDoctor
- Uaktualnij oprogramowanie ECS xDoctor do najnowszej dostępnej wersji.
- Sprawdź wersję xDoctor uruchomioną w systemie. Jeśli masz wersję 4.8-87.0 lub nowszą, przejdź do kroku "Dodaj listę zewnętrznych adresów IP". Jeśli nie, postępuj zgodnie z poniższymi instrukcjami.
Polecenie:
# sudo xdoctor --version
Przykład:
admin@node1:~> sudo xdoctor --version 4.8-87.0
- Zarejestruj się w witrynie pomocy technicznej firmy Dell, połącz się bezpośrednio z lokalizacją pobierania ECS pobierania, wyszukaj xDoctor za pomocą paska wyszukiwania słów kluczowych i kliknij łącze xDoctor 4.8-87.0 RPM, aby pobrać. Aby wyświetlić informacje dotyczące wydania, połącz się bezpośrednio ze stroną produktu ECS, wybierz opcję Podręczniki i dokumenty na pasku bocznym, z którego powinny być dostępne do pobrania.
- Po pobraniu RPM użyj dowolnego zdalnego programu SCP, aby przesłać plik do katalogu /home/admin na pierwszym węźle ECS.
- Po zakończeniu przesyłania – SSH do pierwszego węzła systemu ECS przy użyciu uprawnień administratora.
- Uaktualnij oprogramowanie xDoctor na wszystkich węzłach za pomocą właśnie przekazanej wersji.
Polecenie:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmPrzykład:
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
- Jeśli środowisko obejmuje VDC z wieloma szafami serwerowymi, nowy pakiet xDoctor musi zostać zainstalowany na pierwszym węźle każdej szafy serwerowej. Aby zidentyfikować te główne elementy szaf serwerowych, uruchom poniższe polecenie. W tym przypadku wyróżnione są cztery szafy serwerowe i cztery podstawowe szafy serwerowe
- Znajdź podstawowe węzły szafy serwerowej (wyróżnione pogrubioną czcionką poniżej).
Polecenie:
# svc_exec -m "ip address show private.4 |grep -w inet"Przykład:
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
- Skopiuj pakiet z pierwszego węzła systemu (R1N1) do innych elementów głównych szafy serwerowej zgodnie z poniższymi informacjami:
Przykład:
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~>
- Zgodnie z powyższym krokiem 1 uruchom to samo polecenie instalacji oprogramowania xDoctor na każdym z powyższych elementów głównych szafy serwerowej wskazanych wcześniej.
Polecenie:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
2-A Dodanie listy zewnętrznych adresów IP.
- Użytkownik zarządzania musi wykonać to działanie z rolą administratora zabezpieczeń. W poniższym przykładzie użyto użytkownika root , który również ma funkcję administrowania zabezpieczeniami.
- Można to zrobić na dowolnym węźle na VDC ECS.
- W federacji z wieloma VDC należy ją wykonać po uaktualnieniu wszystkich VDC w federacji. Procedurę tę można następnie zastosować do każdego VDC.
-
UWAGA: Lista dozwolonych jest replikowana między federacyjnymi centrami VDC, więc dodanie wpisów na liście dozwolonych w jednym klastrze powoduje zreplikowanie tych wpisów w drugim klastrze i zastąpienie wszystkich wpisów już dodanych w drugim klastrze
- Narzędzie zgłasza wyjątek "401 — brak autoryzacji", jeśli użytkownik nie jest administratorem zabezpieczeń lub użyto nieprawidłowych poświadczeń.
- Przygotuj listę nazw serwerów (IP, nazwa hosta i nazwa FQDN), które mają zostać dodane do listy zaufanych. Skonsoliduj listę w pliku, każdy wiersz z jedną nazwą serwera. Jeśli sieć zarządzania jest oddzielona, do listy zaufania należy również dodać nazwę FQDN węzłów zarządzania. Wielu klientów może być zmuszonych do dodania nazw węzłów; zarówno krótkie używając svc_exec "hostname -s", jak i długie używając svc_exec nazwy hosta
Aby sprawdzić, czy separacja sieci na potrzeby zarządzania, uruchom poniższe polecenie i wyszukaj zaznaczoną opcję "mgmt".
Polecenie:
# getrackinfo -n
Przykład:
#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
Przykład poniżej z listą nazw serwerów (zamień je na prawdziwe).
# 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
- Sprawdź dzienniki, aby zweryfikować nazwę serwera pod kątem błędów 403:
Polecenie:
svc_log -f 'ERROR HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'
Przykład:
# 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
Przykład poniżej z listą nazw serwerów (zamień je na prawdziwe).
# 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
Dodaj zaufane serwery z podaną listą zawierającą <mgmt_user>. Użytkownik zostanie poproszony o wprowadzenie hasła dla mgmt_user. Wprowadź hasło, a następnie naciśnij Enter, aby kontynuować.
Polecenie:
svc_param asn add -u <mgmt_user> -p -f <server.list>
Przykład:
# 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!
- Pobierz listę zaufanych serwerów. Lista może być a) wydrukowana na ekranie w celu szybkiego sprawdzenia, jeśli jest krótka, lub b) zapisana do pliku w celu wykonania kopii zapasowej lub inspekcji.
- Wydrukuj wynik na ekranie. Zostanie wyświetlony monit o wprowadzenie hasła. Naciśnij Enter, aby kontynuować.
Polecenie:
svc_param asn list -u <mgmt_user> -p
Przykład:
# 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
- Zapisz wynik do pliku. Zostanie wyświetlony monit o wprowadzenie hasła. Naciśnij Enter, aby kontynuować.
Polecenie:
svc_param asn list -u <mgmt_user> -p -o <output file>
Przykład:
# 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
Uwaga: W przypadku, gdy Load Balancer NIE jest używany i nadal otrzymuje to samo
nginx 403 Forbidden błąd w interfejsie użytkownika ECS, sprawdź, czy klient korzysta zsieci VLAN. Separacja za pomocą getrackinfo -n Polecenie na krok 1. Jeśli tak, dodaj nazwy DNS zarządzania i adresy IP zarządzania z sieci klienta do listy serwerów zaufania dla wszystkich ich węzłów.
(Takich jak poniżej)
Przykład:
# 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 Usuń listę zewnętrznych adresów IP.
Jeśli konieczne jest usunięcie pozycji z listy zaufanych, zostanie wyświetlony monit o wprowadzenie hasła, a następnie naciśnij Enter, aby kontynuować. A server.to.remove.list powinny zostać utworzone.
Przykład:
# cat server.list.to.remove Load_balancer1_Hostname Load_balancer2_IPPolecenie usunięcia:
svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>(Zostanie wyświetlony monit o wprowadzenie hasła, naciśnij Enter, aby kontynuować).
Przykład:
# 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!
Wyświetl ponownie wpisy, aby potwierdzić, że wpisy zostały usunięte.
svc_param asn list -u root -p(Zostanie wyświetlony monit o wprowadzenie hasła, naciśnij Enter, aby kontynuować).
Przykład:
# 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
Aby uzyskać więcej informacji i kontekst dotyczący tej zmiany, zapoznaj się z następującymi dokumentami dostępnymi w witrynie pomocy technicznej firmy Dell:
- Informacje dotyczące wydania ECS 3.8.0 lub ECS 3.8.1
- Podręcznik administracyjny ECS 3.8.0 lub ECS 3.8.1
- Instrukcja zabezpieczeń ECS 3.8.0 lub ECS 3.8.1
Affected Products
ECS, ECS Appliance, Elastic Cloud StorageArticle 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.