Aller au contenu principal

Utiliser le WAF avec des WebSockets

Cet article vous permettra de configurer Visiativ Cyber WAF pour fonctionner dans un environnement applicatif utilisant le protocole WebSocket.

Préambule

WebSocket est un protocole de communication utilisé pour établir une connexion interactive en temps réel entre un client (comme un navigateur web) et un serveur. Contrairement au modèle classique HTTP où le client doit demander les informations au serveur, les WebSockets permettent une communication bidirectionnelle. La plupart des navigateurs modernes prennent en charge WebSocket, notamment Chrome, Firefox, Microsoft Edge, Opera et Safari.

Le protocole WebSocket est différent du protocole HTTP, mais son utilisation est pleinement compatible avec HTTP ce qui permet aux applications utilisant WebSocket de s'intégrer plus facilement dans les infrastructures existantes en utilisant les ports HTTP standards 80 et 443, permettant ainsi l'utilisation des règles de pare-feu existantes.

Le mécanisme utilisé pour mettre à niveau la connexion de HTTP vers WebSocket utilise les en-têtes Upgrade et Connection. Il est à noter que l'en-tête Upgrade est un en-tête de type saut par saut, donc lorsqu'un serveur proxy (comme Visiativ Cyber WAF) intercepte une demande de mise à niveau d'un client, il doit envoyer sa propre demande de mise à niveau au serveur destinataire.

Le paramétrage nécessaire pour une utilisation avec Visiativ Cyber WAF est réalisé à l'aide de la fonctionnalité En-têtes HTTP.

Paramétrage des en-têtes HTTP

Création du groupe de sécurité

La première étape consiste à créer un nouveau groupe de sécurité avec un paramétrage des en-têtes HTTP permettant la mise à niveau de la connexion HTTP vers WebSocket. Les en-têtes sont à positionner comme ci-dessous.

SensOpérationEn-têteValeurProtocoleDescription
RequêteAjoutUpgradeValeur de l'en-tête Upgrade fournit par le clientHTTPSL'en-tête Upgrade doit être explicitement transmis au serveur applicatif
RequêteAjoutConnectionUpgradeHTTPSMise à niveau de la connexion
RéponseAjoutServer-HTTP + HTTPSLe type de serveur est masqué par sécurité

Création du groupe d'URL

Une fois le nouveau groupe de sécurité créé, il vous suffit de l'affecter à un nouveau groupe d'URL's correspondant aux WebSockets de votre application. Si vous avez de multiples URL's concernées par des WebSockets, il est conseillé de cibler les URL's par une expression régulière.

Dans l'exemple ci-dessous, les WebSockets sont activées pour les URL's commençant par /api/websocket et /backoffice-websocket.

ParamètreValeur
TypeExpression régulière sensible à la casse
URL^/(api/websocket|backoffice-websocket)
DescriptionWebSockets URL's
WAFActivé
CacheDésactivé
Groupe de serveursBackend concerné
Groupe de sécuritéNouveau groupe de sécurité créé précédement