Seguridad

En este documento se proporciona información sobre contraseñas, autenticación, configuración de SSL, segregación de red, comunicaciones cifradas, encabezados HTTP y el protocolo TLS del servidor web en relación con el cliente de la API de WhatsApp Business.

Contraseñas y autenticación

Consulta la documentación sobre el inicio de sesión y la autenticación para obtener más información sobre los identificadores de autenticación y las prácticas recomendadas sobre contraseñas.

Configuración de SSL

El acceso al cliente de la API de WhatsApp Business requiere HTTPS.

El cliente de la API de WhatsApp Business genera un certificado autofirmado de manera predeterminada cuando se crea. Para poder verificar el extremo del cliente de la API de WhatsApp Business y evitar una advertencia de confianza de certificado, es posible que se requiera el certificado de la autoridad de certificación (CA) que se usa para generar el certificado autofirmado. También puedes subir el certificado de CA en lugar del certificado autofirmado. Consulta la documentación sobre certificados de CA para obtener más información.

Dado que los webhooks también requieren HTTPS para las devoluciones de llamadas, puedes usar tus propios certificados de CA para evitar que la aplicación se encuentre con errores de SSL cuando intente ejecutar POST en el webhook configurado. Consulta la documentación sobre certificados de CA de webhooks para obtener más información.

Segregación de red

Se recomienda alojar los nodos de la aplicación web y la aplicación principal en redes segregadas distintas y exponerlos solo a los servicios necesarios.

El nodo de la aplicación web debe exponer los extremos de API y administración web únicamente a las redes en las que se alojen clientes de la API de WhatsApp Business y estaciones de trabajo del personal administrativo.

Los nodos de la aplicación principal deben exponer el servicio de comunicación únicamente a los nodos de la aplicación web. Además, en una configuración de conexión múltiple, solo deben exponer el servicio de control a otros nodos de la aplicación principal.

Comunicaciones cifradas

Comunicación de la aplicación web con la aplicación principal

Se recomienda establecer la variable de entorno WA_SECRET tanto en el contenedor de la aplicación principal como en el de la aplicación web para garantizar que las comunicaciones entre ambas esté cifrada.

Nota: Los relojes de los hosts de la aplicación principal y la aplicación web deben estar sincronizados para que el cifrado funcione a la perfección. En caso de que haya diferencias en las horas, la protección contra repeticiones (es decir, una comprobación de la marca de tiempo con diez segundos de margen) puede resultar en un error de comunicación.

Comunicación de la base de datos

Puedes configurar los parámetros de SSL usados para cifrar la conexión de la base de datos a fin de proteger los datos en tránsito.

Anteriormente, solo la conexión de la aplicación principal a la base de datos se podía cifrar usando la variable de entorno WA_DB_CONNECTION_OPTION, ya que, tradicionalmente, solo la aplicación principal tenía acceso a la base de datos. Sin embargo, el contenedor de la aplicación web también accede a la base de datos, por lo que es importante cifrar la conexión de la aplicación web a la base de datos. Por ello, la configuración de SSL se ha cambiado a fin de que el acceso sea neutral para todos los contenedores. El cifrado se puede configurar mediante las siguientes variables de entorno:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFY se puede configurar para verificar la identidad del servidor. Esto es necesario en determinadas configuraciones de desarrollo interno y se recomienda encarecidamente si no se desactiva la verificación. Si no se establece este parámetro, la verificación se activa de forma predeterminada. Para desactivar la verificación, usa:

WA_DB_SSL_VERIFY=0

Nota:WA_DB_SSL_VERIFYsolo es aplicable para la aplicación web.

Para la compatibilidad con versiones anteriores, WA_DB_CONNECTION_OPTION se seguirá admitiendo en modo retirado y se seguirá usando para cifrar la conexión de la aplicación principal a la base de datos. Se recomienda encarecidamente cambiar a estos nuevos parámetros.

Todos los archivos configurados en las variables de entorno Key, Cert y CA deben ser accesibles dentro del contenedor. Para ello, puedes crear un directorio certs en el volumen de datos con los permisos apropiados. Normalmente, el volumen de datos se monta como /usr/local/waent/data y el directorio de certificados entonces es accesible en /usr/local/waent/data/certs dentro del contenedor.

Servidor web (TLS)

El protocolo TLS y los cifrados se han configurado conforme a las configuraciones recomendadas de Mozilla. La aplicación web admite tres perfiles: MODERNO (predeterminado), INTERMEDIO y ANTIGUO.

Se recomienda mantener la configuración predeterminada para mejorar la seguridad. Sin embargo, puedes elegir bajar la categoría del perfil mediante la variable de entorno WA_WEB_SECURITY_LEVEL.

Encabezados HTTP

Los siguientes encabezados HTTP son compatibles con el administrador web pero no con los extremos de la API, y están sujetos al navegador en uso.

NombreDescripción

X-Content-Security-policy

Define la política que solo permite que se ejecuten scripts del mismo dominio en el administrador web.

X-Frame-Options

No permite que ningún dominio incluya la página del administrador web como iframe.

X-XSS

Encabezado de protección que protege la página del administrador web de ataques de uso de scripts entre sitios al corregir las entradas cuando se detecta un ataque.

X-Content-Type-Options

Asegura que el tipo de contenido que recibe el servidor sea el mismo que ha solicitado.

Strict-Transport-Security

Asegura que el administrador web solo pueda accederse mediante HTTPS.