Sicherheit

Dieses Dokument liefert Informationen zu Passwörtern, Authentifizierung, SSL-Konfiguration, Netzwerktrennung, verschlüsselter Kommunikation, HTTP-Headern und zum TLS-Protokoll des Webservers in Zusammenhang mit dem WhatsApp Business API-Client.

Passwörter und Authentifizierung

Weitere Informationen zu Authentifizierungsschlüsseln und Best Practices für Passwörter findest du in der Dokumentation zu Anmeldung und Authentifizierung.

SSL-Konfiguration

Für den Zugriff auf den WhatsApp Business API-Client ist HTTPS erforderlich.

Beim Erstellen des WhatsApp Business API-Clients erstellt der Client standardmäßig ein selbstsigniertes Zertifikat. Das Zertifikat der Zertifizierungsstelle (Certification Authority, CA), das zur Erstellung des selbstsignierten Zertifikats verwendet wird, wird u. U. benötigt, um den Endpunkt des WhatsApp Business API-Clients zu überprüfen und um eine Sicherheitswarnung hinsichtlich der Vertraulichkeit des Zertifikats zu vermeiden. Alternativ kannst du das CA-Zertifikat anstelle des selbstsignierten Zertifikats hochladen. Weitere Informationen findest du in der Dokumentation CA-Zertifikate.

Webhooks benötigen HTTPS auch für Rückrufe. Daher kannst du eigene CA-Zertifikate verwenden, um SSL-Fehler in der App bei POST-Aufrufen an den konfigurierten Webhook zu vermeiden. Weitere Informationen findest du in der Dokumentation Webhook-CA-Zertifikate.

Netzwerktrennung

Wir empfehlen, Webapp- und Coreapp-Nodes in separaten, voneinander getrennten Netzwerken zu hosten und nur für die erforderlichen Dienste bereitzustellen.

Der Webapp-Node sollte die API und die Webadministrations-Endpunkte nur für Netzwerke bereitstellen, in denen sich WhatsApp Business API-Clients und Arbeitsstationen von Verwaltungsmitarbeitenden befinden.

Die Coreapp-Nodes sollten nur den Kommunikationsdienst für die Webapp-Nodes bereitstellen, und in einer Multiconnect-Einrichtung sollten sie nur den Kontrolldienst für andere Coreapp-Nodes bereitstellen.

Verschlüsselte Kommunikation

Kommunikation von Webapp zu Coreapp

Wir empfehlen, die Umgebungsvariable WA_SECRET in den Coreapp- und Webapp-Containern festzulegen, um sicherzustellen, dass die Kommunikation zwischen den Containern verschlüsselt wird.

Hinweis: Die Coreapp- und Webapp-Hosts müssen ihre Uhren synchronisieren, um eine optimale Verschlüsselung zu ermöglichen. Bei Abweichungen kann der Replay-Schutz (eine Zeitstempelprüfung mit 10 Sekunden Toleranz) Kommunikationsfehler verursachen.

Datenbankkommunikation

Du kannst SSL-Parameter konfigurieren, um die Datenbankverbindung zu verschlüsseln und die Daten bei der Übertragung zu schützen.

Bisher konnte nur die Verbindung von Coreapp zu Datenbank mit der Umgebungsvariablen WA_DB_CONNECTION_OPTION verschlüsselt werden, da in herkömmlichen Einrichtungen nur die Coreapp auf die Datenbank zugegriffen hat. Der Webapp-Container greift jedoch auch auf die Datenbank zu, daher ist es wichtig, die Verbindung von der Webapp zur Datenbank zu verschlüsseln. Dazu ändern wir die SSL-Konfiguration, um den Zugriff für alle Container neutral zu konfigurieren. Du kannst die Verschlüsselung mit den folgenden Umgebungsvariablen konfigurieren:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

WA_DB_SSL_VERIFY kann konfiguriert werden, um die Identität des Servers zu überprüfen. Diese Funktion ist in bestimmten internen Entwicklungseinrichtungen erforderlich, und wir empfehlen dringend, die Überprüfung nicht zu deaktivieren. Wenn dieser Parameter nicht angegeben ist, wird die Überprüfung standardmäßig aktiviert. Mit der folgenden Option kannst du die Überprüfung deaktivieren:

WA_DB_SSL_VERIFY=0

Hinweis:WA_DB_SSL_VERIFY gilt nur für die Webapp.

Aus Gründen der Abwärtskompatibilität wird WA_DB_CONNECTION_OPTION in einem veralteten Modus weiterhin unterstützt und verwendet, um die Verbindung zwischen Coreapp und Datenbank zu verschlüsseln. Wir empfehlen dringend, einen Wechsel auf diese neuen Parameter durchzuführen.

Alle in den Key-, Cert- und CA-Umgebungsvariablen konfigurierten Dateien müssen innerhalb des Containers verfügbar sein. Dazu kannst du ein certs-Verzeichnis unterhalb des Datenvolumes mit den passenden Berechtigungen erstellen. Das Datenvolume wird normalerweise als /usr/local/waent/data eingebunden, und das Zertifikatverzeichnis ist anschließend im Container unter /usr/local/waent/data/certs verfügbar.

Webserver (TLS)

Das TLS-Protokoll und die entsprechenden Verschlüsselungen wurden gemäß den Mozilla-Konfigurationsempfehlungen konfiguriert. Die Webapp unterstützt drei Profile: MODERN (MODERN, Standard), INTERMEDIATE (MITTEL) und OLD (ALT).

Wir empfehlen, die Standardkonfiguration beizubehalten, um die Sicherheit zu verbessern. Du kannst dein Profil jedoch mit der Umgebungsvariablen WA_WEB_SECURITY_LEVEL herabstufen.

HTTP-Header

Die folgenden HTTP-Header werden für den Web-Admin unterstützt, aber nicht für die API-Endpunkte, und hängen vom verwendeten Browser ab.

NameBeschreibung

X-Content-Security-policy

Definiert die Richtlinie, die nur die Ausführung von Skripten von derselben Domain auf dem Web-Admin zulässt.

X-Frame-Options

Dieser Header verbietet es allen Domains, die Web-Admin-Seite als iframe einzubinden.

X-XSS

Dies ist ein Schutz-Header, der die Web-Admin-Seite vor Cross-Site-Scripting-Angriffen schützt, indem Eingaben bereinigt werden, wenn ein Angriff erkannt wird.

X-Content-Type-Options

Garantiert, dass der vom Server empfangene Inhaltstyp mit dem vom Server angeforderten Inhaltstyp übereinstimmt.

Strict-Transport-Security

Garantiert, dass Web-Admin nur über HTTPS erreichbar ist.