GUIDE DE BONNES PRATIQUES EN SÉCURITÉ DES APPLICATIONS WEB .NET

Recommandations Générales

 

–  Effectuez des backups régulièrement et sécurisez leurs emplacement physique

  • La sécurité physique est tout aussi importante que la sécurité logique !

– Gardez les serveurs web dans des emplacements sécurisés physiquement

  • Disposer d’une politique de sécurité physique est primordial !

– Utilisez NTFS à la place du FAT32 au niveau des serveurs Web puisque ce dernier fournit plus de sécurité.

– Mettez en place une politique de mots de passe sécurisés

  • Exemple : Expiration, complexité …

–  Sécurisez votre serveur IIS

– Désactivez les ports et services non utilisés

– Mise en place d’une politique de sécurité dans un workspace/bureau

  • On retrouve souvent des mots de passe d’accès écrits sur des post-it …

– Configurez de manière sécurisée le  Firewall

– Adoptez une politique de Patch et mises à jour

– Analysez régulièrement les logs en exploitant l’observateur d’événements ou une application de centralisation des logs

 

Quelle architecture pour une application web?

  • Les applications sont généralement hébergées dans un modèle reposant sur trois couches (dit 3 tiers).

– La couche de présentation : c’est l’interface utilisateur
– La couche « métier/applicative » : accédée depuis la couche de présentation, elle  traite l’information
– La couche de données : c’est le stockage de l’information, accédée par la couche applicative

  • La maîtrise des flux réseau circulant au sein de cette architecture 3 tiers est essentielle.

– installer un pare-feu réseau et utiliser des DMZ

  • Mettre en place un pare-feu réseau est indispensable pour cloisonner les couches au sein de zones démilitarisées différentes (DMZ). Il est important de contrôler l’ouverture des flux sur ces pare-feu. Par exemple, il est absolument déconseillé d’ouvrir des flux depuis Internet vers la couche « données », cela irait à l’encontre de la sécurité du modèle 3 tiers car les couches
    « présentation » et « application » sont contournées.

– Chiffrer les flux

  • Il est aussi important de vérifier que les flux inter couches soient chiffrés à l’aide de protocoles tels que le HTTPS. Cela permet d’éviter des attaques de l’homme du milieu au sein de ce modèle. Il est à noter qu’il est très important de sensibiliser les utilisateurs à vérifier le certificat du site web. Cela permet d’éviter qu’un utilisateur se retrouve sur un site pirate.

– Limiter les protocoles à risque

  • Certains protocoles fortement utilisés au sein des environnements Microsoft sont vecteurs de propagations virales. Par exemple, le protocole Netbios est à éviter au sein d’une infrastructure. Si toutefois, il faut ouvrir ce type de flux, il convient de parfaitement cloisonner les différents éléments et de mettre en place un plan d’actions en cas d’attaques virales (par exemple, la possibilité de pouvoir arrêter ce type de flux rapidement en cas de danger à l’aide d’un poste d’administration lui aussi cloisonné). La mise en œuvre d’IPS est aussi un moyen intéressant pour contrer les attaques qui pourraient véhiculer par ce type de flux.

– installer un pare-feu applicatif (WAF ou Web Application Firewall en anglais)

  • Cet équipement est déployé en amont de la couche présentation afin de filtrer les attaques applicatives potentielles, telles que des Injection SQL ou les failles XSS.
  • Le pare-feu applicatif permet de se protéger contre les failles de l’OWASP (Open Web Application Security Projecten anglais), qui est un organisme qui recense les dix risques de sécurité applicatifs les plus critiques sur Internet.

– Comment fonctionne un pare-feu applicatif (WAF)?

  • Le pare-feu applicatif se place devant la couche présentation. Tous les flux applicatifs de type HTTP et HTTPS passent donc par lui avant d’accéder à la couche présentation de l’application.
  • Le filtrage se réalise de deux manières : soit par liste blanche, soit par liste noire.

Accès aux données

 

– Utilisez des requêtes sql paramétrées sans exception

– Ne pas utiliser SqlCommand avec des paramètres concaténés (String)

– Mettre en place des Whitelist pour les valeurs autorisées (Inputs utilisateurs).

– Appliquez le principe de privilèges moindres au niveau de la BDD

– Exploitez l’Entity Framework (mécanisme intéressant pour éviter les injections SQL)

– Dans le cas d’utilisation d’un serveur SQL, exploiter une authentification intégrée

– Toujours chiffrer les données sensibles

 

Le chiffrement

– Ne Jamais utiliser son propre algorithme de chiffrement

– Utilisez Windows Data Protection API (DPAPI) pour le stockage sécurisé des données sensibles

– Utilisez des algorithmes de hachage puissants

– Assurez-vous que votre application/protocoles supportent les évolutions en cryptographie.

– Exploitez Nuget afin de garder vos packages à jour.

 

Gestion des privilèges

– Executez votre application avec le moins de privilèges

– Configurez proprement le context d’execution de votre application

– Ne jamais executer les applications en mode Administrateur

– Configurez des listes de contrôles d’accès

– Ne jamais lancer votre application depuis le repertoire root

 

Gestion des controles d’accès

 

 

– Implémentez la sécurité côté serveur

  • Les mécanismes de sécurité effectués côté client par le navigateur ne sont pas robustes. Les attaquants peuvent utiliser des outils différents des navigateurs et ne sont donc pas bloqués par ces mécanismes. Les vérifications de sécurité doivent donc être effectuées sur le serveur, où l’attaquant n’a pas accès.

– Utilisez une approche par liste blanche

  • Pour éviter d’avoir des lacunes dans le contrôle d’accès, l’idéal est de mettre en place une politique par défaut qui interdit l’accès, puis d’autoriser explicitement les comportement autorisés.

– Ne cachez pas les informations sensibles

  • Cacher des informations ou des pages de l’application ne suffit pas à les sécuriser. Il faut mettre en place une contrôle d’accès pour toutes les fonctionnalités, qu’elles soient présentes ou non dans l’interface proposées aux utilisateurs.

Gestion des configurations

– Mettez en place des procédures de durcissement

  • Une procédure de durcissement est un ensemble de règles de configuration des environnements permettant de garantir un bon niveau de sécurité. Cette procédure doit être formalisée, répétable et dans l’idéal automatisée.

– Déployez les mises à jour

  • L’ensemble des composants, y compris les bibliothèques logicielles, doivent être régulièrement mises à jour, afin d’éviter de s’exposer à une vulnérabilité connue.

– Auditez vos applications

  • Les audits effectués par des experts en cybersécurité externes permettent d’avoir un œil neuf sur le niveau de sécurité de vos applications et d’identifier les éventuelles vulnérabilités présentes.

L’OWASP

 

– Exploitez les meilleurs pratiques fournies par l’OWASP