ECS: Cómo evitar la inyección de encabezado de host en ECS 3.8.0 y versiones posteriores para evitar errores 403 de la API de administración y una interfaz de usuario de Grafana inaccesible
Summary: A partir de ECS 3.8.0.x, se aborda un problema de seguridad relacionado con la inserción de encabezados de host (consulte las notas de la versión 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é es la inyección de encabezado de host?
- La aplicación confía en el encabezado de host HTTP proporcionado por el usuario y utiliza el encabezado de host proporcionado por el usuario para redirigir a otra página.
- Un atacante podría aprovecharse de esto cambiando el encabezado del host HTTP a un nombre de host malicioso y redirigiendo al usuario a una página web maliciosa.
Nota: Esto solo afecta a las llamadas de la API de administración a través de un proxy o un balanceador de carga. No afecta las operaciones de datos.
¿Qué cambios se implementarán a partir de ECS 3.8.0.x?
Como parte de la corrección, se implementa un nuevo conjunto de API que permite configurar o anular la configuración de la lista de nombres de servidor permitidos. El valor del encabezado del host de las solicitudes entrantes se verifica con esa lista. La solicitud se rechaza si el valor del encabezado del host no está presente en esa lista.
A continuación, se presenta el nuevo conjunto de API REST presentadas para registrar y administrar la lista de servidores aceptados.
| Nombre del recurso | Descripción |
|---|---|
GET /acceptedservernames/ |
Obtiene la lista de nombres aceptados de servidores de administración |
POST /acceptedservernames/ |
Crea o reemplaza la lista de nombres aceptados de servidores de administración |
PUT /acceptedservernames/ |
Actualice la lista de nombres aceptados de servidores de administración. |
DELETE /acceptedservernames/ |
Elimina la lista de nombres aceptados de servidores de administración |
¿En qué circunstancias se ve afectado?
Casos de uso para implementar la solución de configuración de la lista de servidores aceptados en ECS:
| Actualización de | Actualización o instalación en | Corrección |
|---|---|---|
| ECS 3.7 y versiones anteriores | ECS 3.8.0.x |
|
| ECS 3.7 y versiones anteriores | ECS 3.8.1.x o superior |
|
| ECS 3.8.0.x | ECS 3.8.1.x o superior |
|
¿Qué indica que ha encontrado un problema?
- Todas las API de inicio de sesión de administración fallarán con 403-forbidden después de una nueva instalación o actualización a 3.8.0.x desde versiones 3.8 anteriores.
- También es posible que no se pueda acceder al panel de Grafana.
¿Qué errores muestran los registros en 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.
Resumen de la resolución (después de la actualización a 3.8.0.x o posterior)
- Actualice el software ECS xDoctor a la versión más reciente.
- Agregue la lista de direcciones IP externas.
- No es necesario registrar servidores externos que realicen llamadas a la API de administración directamente a los nodos de ECS o que utilicen las IP de los nodos de ECS, ya que la conexión ya se realizó correctamente. El siguiente procedimiento solo es necesario si la conexión se pasa a través de un servidor proxy o un balanceador de carga. Por lo tanto, todos los proxy o balanceadores de carga se deben agregar a la lista de aceptación de nombres de servidores de administración.
Actualización de 1-xDoctor
- Actualice el software ECS xDoctor a la versión más reciente disponible.
- Compruebe la versión de xDoctor que se ejecuta en el sistema. Si la versión es 4.8-87.0 o posterior, vaya al paso "Agregar lista de direcciones IP externas". Si ese no es el caso, continúe con los pasos que se indican a continuación.
Comando:
# sudo xdoctor --version
Ejemplo:
admin@node1:~> sudo xdoctor --version 4.8-87.0
- Inicie sesión en el sitio de soporte de Dell, conéctese directamente a esta ubicación de descarga de ECS Download, busque xDoctor mediante la barra de búsqueda de palabras clave y haga clic en el enlace xDoctor 4.8-87.0 RPM para descargar. Para ver las notas de la versión, conéctese directamente a la página del producto ECS y seleccione Manuales y documentos en la barra lateral desde donde deberían estar disponibles para su descarga.
- Una vez descargado el RPM, utilice cualquier programa SCP remoto para cargar el archivo en el directorio /home/admin en el primer nodo de ECS.
- Una vez finalizada la carga, acceda mediante el protocolo SSH al primer nodo del sistema ECS mediante el usuario administrador.
- Actualice xDoctor en todos los nodos con la versión recientemente distribuida.
Comando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpmEjemplo:
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 el entorno es un VDC de múltiples racks, el nuevo paquete de xDoctor se debe instalar en el primer nodo de cada rack. Para identificar estos primeros racks, ejecute el siguiente comando. En esta instancia, hay cuatro racks y cuatro racks principales resaltados
- Busque los nodos primarios del rack (resaltados en negrita a continuación).
Comando:
# svc_exec -m "ip address show private.4 |grep -w inet"Ejemplo:
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
- Copie el paquete del primer nodo del sistema (R1N1) en los otros primeros racks según se indica a continuación:
Ejemplo:
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~>
- Según el paso 1 anterior, ejecute el mismo comando de instalación de xDoctor en cada uno de los racks principales identificados anteriormente.
Comando:
# sudo xdoctor --upgrade --local=/home/admin/xDoctor4ECS-4.8-87.0.noarch.rpm
2-A Agrega una lista de direcciones IP externas.
- Un usuario de administración debe realizar esta actividad con una función de administrador de seguridad. En el siguiente ejemplo, usamos el usuario raíz , ya que también tiene la funcionalidad de administración de seguridad.
- Se puede realizar en cualquier nodo de ECS VDC.
- En una federación con varios VDC, se debe realizar después de que se hayan actualizado todos los VDC de la federación. A continuación, el procedimiento se puede aplicar a cada VDC.
-
NOTA: La lista de permitidos se replica en todos los VDC federados, por lo que agregar entradas de la lista de permitidos en un clúster replica esas entradas en el otro clúster y sobrescribe todo lo que ya se haya agregado en el otro clúster
- La herramienta produce una excepción "401: no autorizado" si el usuario no es el administrador de seguridad o se utiliza una credencial incorrecta.
- Prepare la lista de nombres de servidores (IP, nombre de host y FQDN) que se agregarán a la lista de confianza. Consolide la lista en un archivo, cada línea con un nombre de servidor. Si la red de administración está separada, el FQDN de los nodos de administración también se debe agregar a la lista de confianza. Es posible que muchos clientes deban agregar los nombres de los nodos; Corto con svc_exec "hostname -s" y largo con svc_exec nombre de host
Para comprobar la separación de la red para la administración, ejecute lo siguiente y busque "mgmt" resaltado.
Comando:
# getrackinfo -n
Ejemplo:
#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
Ejemplo a continuación con la lista de nombres de servidores (reemplácelos por los reales).
# 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
- Revise los registros para verificar el nombre del servidor en busca de errores 403:
Comando:
svc_log -f 'ERROR HostHeaderAcceptListFilter.java' -sr objcontrolsvc -start '2 hours ago'
Ejemplo:
# 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
Ejemplo a continuación con la lista de nombres de servidores (reemplácelos por los reales).
# 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
Agregue servidores de confianza con la lista proporcionada que suministra el <mgmt_user>. Se solicita al usuario que ingrese la contraseña para el mgmt_user, ingrese la contraseña y, a continuación, presione Intro para continuar.
Comando:
svc_param asn add -u <mgmt_user> -p -f <server.list>
Ejemplo:
# 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!
- Recupere la lista de servidores de confianza. La lista puede ser a) impresa en una pantalla para una rápida comprobación si es corta, o b) guardada en un archivo para su copia de seguridad o inspección.
- Imprime el resultado en la pantalla. Se le solicitará que ingrese la contraseña; presione Intro para continuar.
Comando:
svc_param asn list -u <mgmt_user> -p
Ejemplo:
# 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
- Guarde el resultado en un archivo. Se le solicitará que ingrese la contraseña; presione Intro para continuar.
Comando:
svc_param asn list -u <mgmt_user> -p -o <output file>
Ejemplo:
# 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
Nota: En el caso de que NO se utilice un equilibrador de carga y siga obteniendo lo mismo
nginx 403 Forbidden error en la interfaz de usuario de ECS, compruebe si el cliente está utilizandola red VLAN. Separación mediante el método getrackinfo -n por paso 1. Si es así, agregue los nombres DNS de administración y las direcciones IP de administración de la red del cliente a la lista de servidores de confianza para todos sus nodos.
(Como se muestra a continuación)
Ejemplo:
# 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 Elimina la lista de direcciones IP externas.
Si debe eliminar entradas de una lista de confianza, se le solicitará que ingrese la contraseña y presione Intro para continuar. Aparece un banner de server.to.remove.list debe crearse.
Ejemplo:
# cat server.list.to.remove Load_balancer1_Hostname Load_balancer2_IPComando para eliminar:
svc_param asn remove -u <mgmt_user> -p -f <server.to.remove.list>(Se le solicitará que ingrese la contraseña; presione Intro para continuar).
Ejemplo:
# 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!
Vuelva a enumerar las entradas para confirmar que se hayan eliminado las entradas.
svc_param asn list -u root -p(Se le solicitará que ingrese la contraseña; presione Intro para continuar).
Ejemplo:
# 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
Para obtener más detalles y contexto sobre este cambio, consulte los siguientes documentos disponibles en el soporte de Dell:
- Notas de la versión de ECS 3.8.0 o ECS 3.8.1
- Guía de administración de ECS 3.8.0 o ECS 3.8.1
- Guía de seguridad de ECS 3.8.0 o 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.