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 de servidor web, en relación con el cliente de la API de WhatsApp Business.

Contraseñas y autenticación

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

Configuración de SSL

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

De manera predeterminada, cuando se crea el cliente de la API de WhatsApp Business, este genera un certificado autofirmado. Es posible que se solicite el certificado de la entidad de certificación (CA) que se usa para generar el certificado autofirmado para verificar el punto de conexión del cliente de la API de WhatsApp Business y evitar una advertencia de confianza relacionada con el certificado. Como alternativa, 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.

Debido a que Webhooks también requiere HTTPS en las devoluciones de llamada, puedes usar tus propios certificados de CA para evitar que la aplicación se encuentre con errores de SSL cuando intente enviar una solicitud POST al webhook configurado. Consulta la documentación sobre certificados de CA de Webhooks para obtener más información.

Segregación de la red

Te recomendamos alojar los nodos de la app web y la app principal por separado, en redes segregadas, y exponerlos solo ante servicios obligatorios.

El nodo de la app web debería exponer la API y los puntos de administración web solo a las redes en las que se encuentran alojados los clientes de la API de WhatsApp Business y las estaciones de trabajo del personal de administración.

Los nodos de la app principal solo deberían exponer el servicio de comunicación a los nodos de la app web y, en una configuración de conexión múltiple, solo deberían exponer el servicio de control a otros nodos de la app principal.

Comunicaciones cifradas

Comunicación entre la app web y la app principal

Te recomendamos configurar la variable de entorno WA_SECRET en los contenedores de la app web y la app principal con el objetivo de asegurarte de que las comunicaciones entre ellos sean cifradas.

Nota: Los organizadores de la app principal y la app web deben tener sus relojes sincronizados para que el cifrado funcione a la perfección. En caso de desplazamientos temporales, la protección de reproducción (es decir, un control de marca de tiempo con 10 segundos de gracia) podría ocasionar una falla de comunicación.

Comunicación de la base de datos

Puedes configurar parámetros de SSL que se usan para cifrar la conexión de la base de datos con el objetivo de proteger los datos en tránsito.

Antes solo se podía cifrar la app principal para la conexión de la base de datos mediante la variable de entorno WA_DB_CONNECTION_OPTION, ya que, tradicionalmente, solo la app principal tenía acceso a la base de datos. Sin embargo, el contenedor de la app web también accede a la base de datos, por lo que es importante cifrar la app web para la conexión de la base de datos. En este caso, la configuración de SSL se cambia a fin de que todos los contenedores puedan acceder de manera neutral. 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. Se requiere en determinadas configuraciones internas de desarrollo y se recomienda si no inhabilitas la verificación. Si no se configura este parámetro, la verificación se activa de forma predeterminada. Para inhabilitar la verificación, usa lo siguiente:

WA_DB_SSL_VERIFY=0

Nota:WA_DB_SSL_VERIFYsolo se aplica a la app web.

Con el fin de que siga siendo compatible con versiones anteriores, WA_DB_CONNECTION_OPTION se seguirá admitiendo en un modo obsoleto y se usará para cifrar la app principal para la conexión de la base de datos. Te recomendamos activar estos parámetros nuevos.

Es necesario que se pueda acceder a todos los archivos configurados en variables de entorno KEY, CERT y CA dentro del contenedor. Para ello, puedes crear un directorio certs en el volumen de datos con los permisos correspondientes. El volumen de datos se suele montar como /usr/local/waent/data, de modo que es posible acceder al directorio de certificados en /usr/local/waent/data/certs dentro del contenedor.

Servidor web (TLS)

Los códigos y el protocolo TLS se configuraron en función de las configuraciones recomendadas por Mozilla. La app web admite tres perfiles: MODERNO (predeterminado), INTERMEDIO y ANTIGUO.

Te recomendamos conservar la configuración predeterminada por razones de seguridad. Sin embargo, puedes elegir una configuración inferior con la variable de entorno WA_WEB_SECURITY_LEVEL.

Encabezados HTTP

Los siguientes encabezados HTTP son compatibles en el caso de la administración web, pero no en 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

El encabezado impide que cualquier dominio incluya la página del administrador web como iframe.

X-XSS

Es un encabezado que protege la página del administrador web ante ataques con scripts de varios sitios saneando las entradas si se detecta un ataque.

X-Content-Type-Options

Garantiza que el tipo de contenido que recibe el servidor coincida con el que solicitó.

Strict-Transport-Security

Garantiza que solo se pueda acceder al administrador web a través de HTTPS.