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
  • Implementacja rozwiązania jest wymagana, jeśli używasz serwera proxy lub modułu równoważenia obciążenia do wysyłania wywołań interfejsu API zarządzania do ECS.
  • Brak wdrożenia rozwiązania oznacza, że występują błędy 403 interfejsu API zarządzania, a interfejs użytkownika narzędzia Grafana jest niedostępny.
ECS 3.7 i starsze wersje ECS 3.8.1.x lub nowszy
  • Implementacja rozwiązania jest opcjonalna, jeśli używasz serwera proxy lub modułu równoważenia obciążenia do wysyłania wywołań interfejsu API zarządzania do ECS.
  • Brak wdrożenia rozwiązania oznacza, że użytkownik jest narażony na tę lukę, a ECS akceptuje wszystkie wywołania interfejsu API zarządzania. 
ECS 3.8.0.x ECS 3.8.1.x lub nowszy
  • Jeśli rozwiązanie zostało już wdrożone w ECS 3.8.0, pozostanie ono dostępne w ECS 3.8.1 lub nowszym.
  • Możesz przywrócić rozwiązanie, aby zezwolić wszystkim adresom IP na wykonywanie wywołań interfejsu API zarządzania.
  • Jeśli zdecydujesz się przywrócić rozwiązanie, pozostaniesz narażony na tę lukę, a ECS zaakceptuje wszystkie wywołania interfejsu API zarządzania. 



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)

  1. Zaktualizuj oprogramowanie ECS xDoctor do najnowszej wersji.
  2. Dodaj listę zewnętrznych adresów IP.
  3. 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

  1. Uaktualnij oprogramowanie ECS xDoctor do najnowszej dostępnej wersji.
  1. 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
  1. 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.
  2. Po pobraniu RPM użyj dowolnego zdalnego programu SCP, aby przesłać plik do katalogu /home/admin na pierwszym węźle ECS.
  3. Po zakończeniu przesyłania – SSH do pierwszego węzła systemu ECS przy użyciu uprawnień administratora.
  4. 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.rpm
Przykł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
  1. 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
  1. 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
  1. 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~>
  1. 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ń.
  1. 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.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. 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.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

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!
  1. 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.
  1. 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
  1. 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_IP
Polecenie 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. 
Polecenie: 
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 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.