ЕКС: Як запобігти впровадженню заголовка хоста на ECS 3.8.0 та пізніших версіях, щоб уникнути помилок API управління 403 та недоступного інтерфейсу Grafana
Summary: Починаючи з ECS 3.8.0.x, вирішено проблему безпеки щодо впровадження заголовка хоста (див. Примітки до випуску для 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
Що таке Host Header Injection?
- Програма довіряє заголовку хоста HTTP, наданому користувачем, і використовує наданий користувачем заголовок хоста для переспрямування на іншу сторінку.
- Зловмисник може скористатися цим, змінивши заголовок HTTP Host на шкідливе ім'я хоста та перенаправивши користувача на шкідливу веб-сторінку.
Примітка: Це впливає лише на виклики API керування через проксі-сервер або розподілювач навантаження. Це не впливає на роботу з даними.
Які зміни впроваджуються з ECS 3.8.0.x?
В рамках виправлення реалізовано новий набір API, який дозволяє встановлювати або знімати список дозволених імен серверів. Значення заголовка хоста вхідних запитів звіряється з цим списком. Запит відхиляється, якщо значення заголовка вузла відсутнє в цьому списку.
Нижче представлений новий набір REST API для реєстрації та управління списком прийнятих серверів.
| Найменування ресурсу | Опис |
|---|---|
GET /acceptedservernames/ |
Отримує список допустимих імен серверів керування |
POST /acceptedservernames/ |
Створює або замінює список допустимих імен серверів керування |
PUT /acceptedservernames/ |
Оновіть список допустимих імен серверів керування. |
DELETE /acceptedservernames/ |
Видаляє список допустимих імен серверів керування |
За яких обставин це впливає на вас?
Use-cases для реалізації рішення конфігурації списку прийнятих серверів на ECS:
| Оновлення з | Оновлення до або встановлення на | Санація |
|---|---|---|
| ECS 3.7 і раніше | ECS 3.8.0.x |
|
| ECS 3.7 і раніше | ECS 3.8.1.x або пізнішої версії |
|
| ECS 3.8.0.x | ECS 3.8.1.x або пізнішої версії |
|
Що вказує на те, що ви зіткнулися з проблемою?
- Усі API входу в систему керування зазнають невдачі з 403-forbidden після нової інсталяції або оновлення до 3.8.0.x з більш ранніх версій 3.8.
- Приладова панель Grafana також може виявитися недоступною.
Які помилки показують журнали на 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.
Підсумок роздільної здатності (після оновлення до версії 3.8.0.x або пізнішої)
- Оновіть програмне забезпечення ECS xDoctor до останньої версії.
- Додайте список зовнішніх IP-адрес.
- Немає необхідності реєструвати зовнішні сервери, які здійснюють виклики Management API безпосередньо до вузлів ECS або використовуючи IP-адреси ECS-вузлів, оскільки з'єднання вже буде успішним. Наведена нижче процедура потрібна лише в тому випадку, якщо з'єднання проходить через проксі-сервер або балансувальник навантаження. Тому всі проксі-сервери та/або розподілювачі навантаження повинні бути додані до списку прийняття імен серверів керування.
Оновлення 1-xDoctor
- Оновіть програмне забезпечення ECS xDoctor до останньої доступної версії.
- Перевірте версію xDoctor, запущену у вашій системі. Якщо версія 4.8-87.0 або новіша, перейдіть до кроку "Додати список зовнішніх IP-адрес". Якщо ні, виконайте наведені нижче дії.
Команда:
# sudo xdoctor --version
Приклад:
admin@node1:~> sudo xdoctor --version 4.8-87.0
- Увійдіть на сайт підтримки Dell, підключіться безпосередньо до цього місця завантаження ECS, знайдіть xDoctor за допомогою рядка пошуку ключових слів і натисніть посилання xDoctor 4.8-87.0 RPM, щоб завантажити. Щоб переглянути примітки до випуску, підключіться безпосередньо до сторінки продукту ECS, виберіть «Посібники та документи» на бічній панелі, звідки вони мають бути доступні для завантаження.
- Після завантаження RPM використовуйте будь-яку віддалену програму SCP, щоб завантажити файл до директорії /home/admin на першому вузлі ECS.
- Як тільки завантаження буде завершено, SSH на перший вузол системи ECS за допомогою admin.
- Оновіть xDoctor на всіх вузлах за допомогою нової розподіленої версії.
Команда:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmПриклад:
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
- Якщо середовище являє собою багатостійковий VDC, новий пакет xDoctor повинен бути встановлений на першому вузлі кожної стійки. Щоб визначити ці основні параметри стійки, запустіть наведену нижче команду. У цьому випадку виділено чотири стійки та чотири основні стійки
- Знайдіть основні вузли стійки (виділені жирним шрифтом нижче).
Команда:
# svc_exec -m "ip address show private.4 |grep -w inet"Приклад:
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
- Скопіюйте пакет з першого вузла системи (R1N1) на інші основні компоненти стійки, як показано нижче:
Приклад:
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 вище, запустіть ту саму команду встановлення xDoctor на кожному з вищезазначених основних компонентів стійки, визначених раніше.
Команда:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
2-A Додайте список зовнішніх IP-адрес.
- Користувач із керуванням має виконувати цю дію з роллю адміністратора безпеки. У наведеному нижче прикладі ми використовуємо користувача root , оскільки він також має можливість адміністрування безпеки.
- Це можна зробити на будь-якому вузлі на ECS VDC.
- У федерації з кількома VDC це має бути виконано після того, як усі VDC у федерації були оновлені. Потім процедуру можна застосувати до кожного VDC.
-
ПРИМІТКА. Білий список реплікується в об'єднаних VDC, тому додавання записів білого списку в одному кластері реплікує ці записи в інший кластер і перезаписує все, що вже додано в іншому кластері
- Інструмент викидає виняток «401 - Неавторизований», якщо користувач не є адміністратором безпеки або використовується неправильний обліковий запис.
- Підготуйте список імен серверів (IP, ім'я хоста та FQDN), які будуть додані до списку довіри. Об'єднайте список у файл, кожен рядок з одним іменем сервера. Якщо мережа управління відокремлена, то в список довіри слід додати і FQDN вузлів управління. Багатьом клієнтам може знадобитися додати назви вузлів; обидва короткі з використанням svc_exec "hostname -s" і довгі з використанням svc_exec hostname
Щоб перевірити, чи є поділ мережі для керування, запустіть наведене нижче та знайдіть виділено «mgmt».
Команда:
# 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
- Перевірте журнали, щоб перевірити ім'я сервера на наявність будь-яких помилок 403:
Команда:
svc_log -f 'ERROR HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'
Приклад:
# 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
Додайте довірені сервери з наданим списком, що постачає <mgmt_user>. Користувачу буде запропоновано ввести пароль для mgmt_user, ввести пароль, а потім натиснути клавішу Enter, щоб продовжити.
Команда:
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!
- Отримайте список довірених серверів. Список може бути а) надрукований на екран для швидкої перевірки, якщо він короткий, або б) збережений у файл для резервного копіювання або перевірки.
- Роздрукуйте результат на екрані. Вам буде запропоновано ввести пароль, натисніть enter, щоб продовжити.
Команда:
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
- Збережіть результат у файл. Вам буде запропоновано ввести пароль, натисніть enter, щоб продовжити.
Команда:
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
Примітка: У випадку, коли балансувальник навантаження НЕ використовується і все одно отримує те саме
nginx 403 Forbidden помилку в інтерфейсі користувача ECS, перевірте, чи використовуєклієнт мережу VLAN. Поділ за допомогою getrackinfo -n Команда на крок 1. Якщо так, то додайте імена DNS керування та IP-адреси керування з мережі клієнта до списку серверів довіри для всіх їхніх вузлів.
(Наприклад, нижче)
Приклад:
# 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 Видалити список зовнішніх IP-адрес.
Якщо вам потрібно видалити записи зі списку надійних, вам буде запропоновано ввести пароль і натиснути клавішу Enter, щоб продовжити. A server.to.remove.list повинні бути створені.
Приклад:
# cat server.list.to.remove Load_balancer1_Hostname Load_balancer2_IPКоманда для видалення:
svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>(Вам буде запропоновано ввести пароль, натисніть enter, щоб продовжити.)
Приклад:
# 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!
Перерахуйте записи ще раз, щоб підтвердити, що записи видалено.
svc_param asn list -u root -p(Вам буде запропоновано ввести пароль, натисніть enter, щоб продовжити.)
Приклад:
# 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
Щоб отримати докладнішу інформацію та контекст щодо цієї зміни, перегляньте наведені нижче документи, доступні в службі підтримки Dell.
- Примітки до випуску ECS 3.8.0 або ECS 3.8.1
- Посібник з адміністрування ECS 3.8.0 або ECS 3.8.1
- Посібник з безпеки ECS 3.8.0 або 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.