Sécuriser ses applications avec Cosmos Cloud
Sécurité Cosmos Cloud

Sécuriser ses applications avec Cosmos Cloud

Table des matières

Configurez quelques paramètres de sécurité afin d'éviter facilement beaucoup de menaces.

Principales options de sécurité.

On va passer en revue certaines options de sécurité qui sont faciles à mettre en place et efficaces, les indispensables.

Dans l'article Exposer une application sur le web avec Cosmos Cloud, il est simplement expliqué comment ouvrir une application sur le web, à sa plus simple expression.

Sachez qu'il est possible d'ajouter différentes couches de sécurité à une application exposée suivant vos besoins.

Il en est de même pour les applications que l'on souhaite garder exclusivement accessibles en local.

Cosmos Cloud inclut plusieurs stratégies de protection:

  • Anti-DDOS: Protections supplémentaires telles que délais d'attente/limitation variables, limitation du débit IP et liste noire géographique.
  • Anti-Bot: collection d'outils pour empêcher les robots d'accéder à vos applications, tels que la détection de robots courants, la détection basée sur IP, etc.
  • SmartShield technology:  Sécurisez automatiquement vos applications sans ajustements manuels.
  • L'accès aux applications uniquement par VPN.
  • Rendre obligatoire l'authentification avant d'avoir accès à une application et/ou une URL bien précise.
  • Liste blanche des adresses IP entrantes et/ou des plages d'adresses IP.

Du HTTP en local, je ne crains que la mort

On pourrait se croire plus en sécurité sur son réseau local. Hélas ce n'est pas forcément vrai.

Si vous utilisez un service que vous hébergez en HTTP, tout transit en clair sur l'ensemble de votre réseau local.

Quand je dis en clair, ça veut dire que TOUS vos appareils connectés à votre réseau local (WI-FI compris donc) sont susceptibles de sniffer ces informations précieuses. Une application (malintentionnée) installée sur votre smartphone, qui lui-même est sur le réseau local, pourrait aussi piocher les informations qui passent en clair.

Tout de suite c'est moins glamour.

Des applications sous Docker sont pas défaut en HTTP, donc si vous avez pour habitude d'entrer vos identifiants sur ces applications en local, en HTTP, tout passe en clair sur votre réseau local.

Pour une partie des applications sous Docker qui ont un certificat SLL, c'est un self-signed, ça provoque des alertes dans le navigateur, il peut-être falsifié ou tout simplement volé.

Avec Comos Cloud vous pourrez facilement utiliser votre nom de domaine et son certificat SSL certifié en local sans exposer l'application pour autant.

Comme ça toutes les applications, qu'elles soient exposées sur internet ou en local, sont en HTTPS avec un véritable cetificat SSL signé.


Utiliser son domaine en local sans exposer l'application

Vous pouvez le faire à partir d'une URL déjà existante ou en créer une.

Grâce à la configuration ci-dessous:

  • Utilisez en local une URL de votre nom de domaine attribuée à une application, par exemple:
https://mealie.mondomaine.com

Au lieu d'utiliser une URL de ce type:

http://192.168.1.111:7575

Ou encore:

http://localdomain:7575.
  • Le certificat SSL signé et certifié du domaine vous évite les alertes navigateur d'un self-signed.
  • L'application ne sera PAS exposée sur le web car filtrée par IP.
  • Les informations transitent en HTTPS et seront donc chiffrées sur votre réseau local, les autres appareils sur votre réseau ne pourront pas lire ces informations.

Imaginons que vous ne voulez pas ouvrir Mealie sur internet mais que vous voulez joindre le service en local par son nom de domaine, par exemple: https://mealie.mondomaine.com.

Partons du principe que vous ayez déjà créé l'URL pour Mealie.
Si vous créez une nouvelle URL c'est la même chose, Whitelist Inbound IPs est en bas de la fenêtre de création d'URL.

Rendez-vous dans la partie URLs et cliquez dans la zone de l'URL souhaitée pour l'éditer:

Cliquez sur Setup:

Descendez dans le fond, cliquez sur Advanced Settings:

Dans le champ Whitelist Inbound IPs vous ajoutez les IP (séparée par un virgule) ou une plage d'adresses IP qui peuvent avoir accès à ce service.
Celle de votre PC, votre smartphone, le PC de votre hamster,...
C'est encore mieux si ce sont des IP fixes.

Dès le moment ou vous n'ajouter que des IP locales, votre application n'est plus accessible depuis le net, seule la liste indiquée dans le champ Whitelist Inbound peut y avoir accès et uniquement en local.

N'oubliez pas ce paramètre si vous ne souhaitez pas exposer l'application sur internet.

💡
Vous pourrez toujours avoir accès à vos applications de l'extérieur avec le VPN.
⚠️
Si la zone Whitelist Inbound IPs est vide, votre application est directement exposée et accessible sur internet.

Test du filtrage IP de la whitelist

Je fais le test avec une IP qui n'est pas celle de mon PC, l'IP de mon CP étant 192.168.1.27:

J'entre le nom de domaine mealie.mondomaine.com dans mon navigateur, aucun accès possible, même en local. Le filtrage fonctionne bien, il me refuse l'accès car mon IP n'est pas autorisée.

Maintenant j'indique la réelle IP de mon PC:

J'ai bien accès à Mealie sur son nom de domaine, mais en local.

Le filtrage fonctionne, mon PC ayant l'IP dans la whitelist, j'ai accès au service.

Si quelqu'un se connecte à votre W-FI, que ce soit de manière autorisée ou non, il n'aura d'office pas l'autorisation de consulter vos applications sur le réseau local.
Cela peut-être pratique aussi si vous n'avez pas un réseau WI-FI invité par exemple et que vous partagez le code Wi-FI à vos connaissances.


Restreindre l’accès à une application

Dans cette configuration, vous souhaitez que l'application soit accessible par internet mais vous tenez quand même à restreindre son accès à certains utilisateurs uniquement qui ont soit un compte utilisateur ou un accès VPN.

Par authentification

De cette manière seuls les utilisateurs ayant un compte utilisateur sur votre serveur Cosmos Cloud pourront avoir accès.
Quand vous tapez l'URL du service dans votre navigateur, une fenêtre d'authentification vient vérifier l'identité de l'utilisateur, s'il est autorisé, il serez redirigé vers le service.

Si ce n'est pas le cas il est immédiatement abattu l'accès lui sera refusé.

Pour activer cette fonction, rendez-vous dans URLs et cliquez dans la zone de l'URL que vous souhaitez éditer:

Ensuite dans Security, cochez Authentification Required:

On sauve la configuration.

Par VPN

Toujours dans la partie édition d'une URL, vous pouvez restreindre l'accès au service aux personnes ayant un client VPN créé sur votre serveur avec Constellation, un VPN basé sur Nebula.
Il faudra au préalable avoir activé et configuré le VPN. On en parle dans un autre article.

Libre à vous de combiner Authentification + VPN.

Histoire de bien casser les, .... de mieux sécuriser les accès.

Restreindre une page précise

Imaginons que vous ayez Wordpress d'installé, par défaut la page d'authentification est https://ndd.tld/wp-admin.

Vous avez donc déjà ajouté une entré pour rendre accèssible de votre site web mais vous pouvez restreindre l'accès à /wp-admin.

Vous faites exactement de la même manière que pour ajouter une entrée, allez sur URLs:

Ensuite cliquez sur Create:

Remplissez dans Host le nom de domaine de base mais cette fois-ci, vous ajouter le path dont vous voulez restreindre l'accès, dans notre exmeple, /wp-admin:

Et vous cochez au minimum une option comme Authentification Required ou Restrict access to Constellation VPN, ou les deux. Une fois que vous avez terminé, cliquez sur Confirm.

⚠️ Il faut obligatoirement que cette entrée soit située sous celle qui autorise la connexion sur https://ndd.tld. Comme pour belginux, l'entrée qui autorise l'accès à belginux.com est au dessus de cette qui interdit l'accès à sa page d'administration:


SmartShield Protection

Il s'active soit dans URLs, partie Setup ou vous pouvez l'activer dans la partie Security et affiner le niveau.

Pour faire simple et ne pas trop s'éparpiller, SmartShield est un package de protection d'API moderne conçu pour sécuriser votre API.

Il comprend des stratégies anti-bot et anti-DDOS.

SmartShield va pouvoir détecter certains comportement suspects et réagir en fonction.
Par exemple s'il détecte trop de tentatives de connexions dans un temps imparti ou un comportement suspect qu'il peut reconnaître, il va ban l'IP suivant les critères choisis.

Il y a 4 niveaux de sensibilité:

  • Default
  • Strict
  • Normal
  • Lenient

Vous pouvez affiner vous-même les réglages:


Anti bots

Dans Smarshield vous avez également la possibilité de bloquer les bots courants, il suffit de cocher l'option et de valider avec Save:


Admin only

Vous pouvez également, dans l'onglet Security, faire en sorte que l'application ne puisse être accessible que pour le compte administrateur en cochant Admin Only, validez en cliquant sur Save:


zarev

🐧 Passionné de self-hosting, je partage ce que je connais et me nourris des connaissances des bonnes âmes qui partagent avec moi. Soutenons l'utilisation des apps open source et leurs développeurs.