ECS : Comment empêcher l’injection d’en-tête d’hôte sur ECS 3.8.0 et versions ultérieures pour éviter les erreurs de l’API de gestion 403 et l’interface utilisateur Grafana inaccessible
Summary: À partir d’ECS 3.8.0.x, un problème de sécurité a été résolu concernant l’injection d’en-tête d’hôte (reportez-vous aux notes de mise à jour de 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
Qu’est-ce que l’injection d’en-tête d’hôte ?
- L’application fait confiance à l’en-tête d’hôte HTTP fourni par l’utilisateur et utilise l’en-tête d’hôte fourni par l’utilisateur pour rediriger vers une autre page.
- Un attaquant pourrait en tirer parti en modifiant l’en-tête de l’hôte HTTP en un nom d’hôte malveillant et en redirigeant l’utilisateur vers une page Web malveillante.
Remarque : Cela n’affecte que les appels de l’API de gestion via un proxy ou un équilibreur de charge. Cela n’a aucun impact sur les opérations de données.
Quelles sont les modifications mises en œuvre à partir d’ECS 3.8.0.x ?
Dans le cadre du correctif, un nouvel ensemble d’API est implémenté qui permet de définir ou de désassocier la liste des noms de serveur autorisés. La valeur de l’en-tête hôte des demandes entrantes est vérifiée par rapport à cette liste. La demande est rejetée si la valeur de l’en-tête de l’hôte n’est pas présente dans cette liste.
Vous trouverez ci-dessous le nouvel ensemble d’API REST introduites pour l’enregistrement et la gestion de la liste des serveurs acceptés.
| Nom de la ressource | Description |
|---|---|
GET /acceptedservernames/ |
Obtient la liste des noms de serveur de gestion acceptés |
POST /acceptedservernames/ |
Crée ou remplace la liste des noms de serveur de gestion acceptés |
PUT /acceptedservernames/ |
Mettez à jour la liste des noms de serveur de gestion acceptés. |
DELETE /acceptedservernames/ |
Supprime la liste des noms de serveur de gestion acceptés |
Dans quelles circonstances êtes-vous concerné ?
Cas d’utilisation pour implémenter la solution de configuration de la liste des serveurs acceptés sur ECS :
| Mise à niveau à partir de | Mise à niveau vers ou installation sur | Correction |
|---|---|---|
| ECS 3.7 et versions antérieures | ECS 3.8.0.x |
|
| ECS 3.7 et versions antérieures | ECS 3.8.1.x ou version ultérieure |
|
| ECS 3.8.0.x | ECS 3.8.1.x ou version ultérieure |
|
Qu’est-ce qui indique que vous avez rencontré un problème ?
- Toutes les API de connexion de gestion échouent avec le message 403-forbidden après une nouvelle installation ou une mise à niveau vers la version 3.8.0.x à partir de versions 3.8 antérieures.
- Le tableau de bord Grafana peut également être inaccessible.
Quelles erreurs les journaux affichent-ils sur 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.
Récapitulatif de résolution (après la mise à niveau vers la version 3.8.0.x ou une version ultérieure)
- Mettez à niveau le logiciel ECS xDoctor vers la dernière version.
- Ajoutez la liste des adresses IP externes.
- Il n’est pas nécessaire d’enregistrer des serveurs externes effectuant des appels d’API de gestion directement aux nœuds ECS, ou à l’aide des adresses IP des nœuds ECS, car la connexion est déjà établie. La procédure ci-dessous n’est requise que si la connexion est transmise via un serveur proxy ou un équilibreur de charge. Par conséquent, tous les proxys et/ou équilibreurs de charge doivent être ajoutés à la liste des noms de serveur de gestion acceptés.
Mise à niveau 1 x Doctor
- Mettez à niveau votre logiciel ECS xDoctor vers la dernière version disponible.
- Vérifiez la version de xDoctor en cours d’exécution sur votre système. Si la version est 4.8-87.0 ou ultérieure, passez à l’étape « Ajouter une liste d’adresses IP externes ». Dans le cas contraire, suivez les étapes ci-dessous.
Commande :
# sudo xdoctor --version
Exemple :
admin@node1:~> sudo xdoctor --version 4.8-87.0
- Connectez-vous au site de support Dell, connectez-vous directement à cet emplacement de téléchargement ECS Download, recherchez xDoctor à l’aide de la barre de recherche par mot-clé, puis cliquez sur le lien xDoctor 4.8-87.0 RPM pour télécharger le fichier. Pour afficher les notes de mise à jour, accédez directement à la page produit d’ECS, sélectionnez Manuels et documents dans la barre latérale, à partir de laquelle ils seront disponibles au téléchargement.
- Une fois le RPM téléchargé, utilisez n’importe quel programme SCP distant pour télécharger le fichier dans le répertoire /home/admin sur le premier nœud ECS.
- Une fois le téléchargement terminé, envoyez la commande SSH au premier nœud du système ECS à l’aide d’admin.
- Mettez à niveau xDoctor sur tous les nœuds avec la nouvelle version distribuée.
Commande :
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmExemple :
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
- Si l’environnement est un VDC à plusieurs racks, le nouveau package xDoctor doit être installé sur le premier nœud de chaque rack. Pour identifier ces composants primaires du rack, exécutez la commande ci-dessous. Dans ce cas, quatre racks et quatre principaux racks sont mis en surbrillance
- Recherchez les nœuds principaux du rack (surlignés en gras ci-dessous).
Commande :
# svc_exec -m "ip address show private.4 |grep -w inet"Exemple :
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
- Copiez le package à partir du premier nœud du système (R1N1) vers les autres racks primaires ci-dessous :
Exemple :
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~>
- À l'étape 1 ci-dessus, exécutez la même commande d'installation de xDoctor sur chacun des racks primaires ci-dessus identifiés précédemment.
Commande :
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
2-A Ajouter une liste d’adresses IP externes.
- Un utilisateur de gestion doit effectuer cette activité avec un rôle d’administrateur de la sécurité. Dans l’exemple ci-dessous, nous utilisons l’utilisateur root , qui dispose également d’une fonctionnalité d’administration de la sécurité.
- Elle peut être effectuée sur n’importe quel nœud du VDC ECS.
- Dans une fédération avec plusieurs VDC, elle doit être exécutée après la mise à niveau de tous les VDC de la fédération. La procédure peut ensuite être appliquée à chaque VDC.
-
Remarque : La liste autorisée étant répliquée sur les VDC fédérés, l’ajout d’entrées dans la liste autorisée d’un cluster réplique ces entrées sur l’autre cluster et écrase tout ce qui a déjà été ajouté sur l’autre cluster
- L’outil génère une exception « 401 - Non autorisé » si l’utilisateur n’est pas administrateur de la sécurité ou si des informations d’identification incorrectes sont utilisées.
- Préparez la liste des noms de serveur (IP, nom d’hôte et FQDN) à ajouter à la liste de confiance. Consolidez la liste dans un fichier, chaque ligne avec un nom de serveur. Si le réseau de gestion est séparé, le FQDN des nœuds de gestion doit également être ajouté à la liste de confiance. De nombreux clients peuvent être amenés à ajouter les noms des nœuds ; court utilisant svc_exec « hostname -s » et long utilisant svc_exec nom d’hôte
Pour vérifier la séparation du réseau pour la gestion, exécutez la commande ci-dessous et recherchez « mgmt » en surbrillance.
Commande :
# getrackinfo -n
Exemple :
#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
Exemple ci-dessous avec la liste des noms de serveurs (remplacez-les par les vrais).
# 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
- Vérifiez les logs pour vérifier le nom du serveur pour toute erreur 403 :
Commande :
svc_log -f 'ERROR HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'
Exemple :
# 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
Exemple ci-dessous avec la liste des noms de serveurs (remplacez-les par les vrais).
# 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
Ajoutez des serveurs approuvés à l’aide de la liste fournie fournissant le <mgmt_user>. L’utilisateur est invité à saisir le mot de passe du mgmt_user, à le saisir, puis à appuyer sur Entrée pour continuer.
Commande :
svc_param asn add -u <mgmt_user> -p -f <server.list>
Exemple :
# 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!
- Récupérez la liste des serveurs approuvés. La liste peut être soit a) imprimée sur un écran pour vérifier rapidement si elle est courte, soit b) enregistrée dans un fichier à des fins de sauvegarde ou d’inspection.
- Imprimez le résultat à l’écran. Vous êtes invité à saisir le mot de passe. Appuyez sur Entrée pour continuer.
Commande :
svc_param asn list -u <mgmt_user> -p
Exemple :
# 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
- Enregistrez le résultat dans un fichier. Vous êtes invité à saisir le mot de passe. Appuyez sur Entrée pour continuer.
Commande :
svc_param asn list -u <mgmt_user> -p -o <output file>
Exemple :
# 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
Remarque : Dans le cas où un répartiteur de charge n’est PAS utilisé et qu’il obtient toujours le même
nginx 403 Forbidden erreur dans l’interface utilisateur ECS, vérifiez si le client utilisele réseau VLAN. Séparation à l’aide de l’attribut getrackinfo -n Commande par étape 1. Si c’est le cas, ajoutez les noms DNS de gestion et les adresses IP de gestion du réseau du client dans la liste de serveurs de confiance pour tous leurs nœuds.
(Comme ci-dessous)
Exemple :
# 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 Supprime la liste des adresses IP externes.
Si vous devez supprimer des entrées d’une liste de confiance, vous êtes invité à saisir le mot de passe et appuyez sur Entrée pour continuer. A server.to.remove.list devrait être créée.
Exemple :
# cat server.list.to.remove Load_balancer1_Hostname Load_balancer2_IPCommande à supprimer :
svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>(Vous êtes invité à saisir le mot de passe, appuyez sur Entrée pour continuer.)
Exemple:
# 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!
Répertoriez à nouveau les entrées pour confirmer que les entrées ont été supprimées.
svc_param asn list -u root -p(Vous êtes invité à saisir le mot de passe, appuyez sur Entrée pour continuer.)
Exemple:
# 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
Pour plus d’informations et de contexte concernant ce changement, consultez les documents suivants disponibles sur le site de support Dell :
- Notes de mise à jour d’ECS 3.8.0 ou ECS 3.8.1
- Guide d’administration d’ECS 3.8.0 ou ECS 3.8.1
- Guide de sécurité d’ECS 3.8.0 ou 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.