Cyril Voisin Chef de programme Sécurité Microsoft France Défense en profondeur Cyril Voisin Chef de programme Sécurité Microsoft France
Contenu de la session Un aperçu de la sécurité de bout en bout Authentification, Autorisation, Audit, Chiffrement Produits - Windows Server 2003, ISA Server 2003, ASP.NET, .NET Framework, SQL Server 2000 Cette sessions ne traite pas de Programmation .NET Programmation ASP.NET Conception de site Web Pratiques de codage sécurisé
Sommaire Évolution des menaces Risques & Moyens d’atténuation .NET Framework Windows Server 2003 ISA Server L’exemple OpenHack IV Résumé
Nous vivons une période de choc frontal Généralisation de l’usage Augmentation des menaces Défi de la gestion des systèmes Augmentation des transactions en ligne Installations par défaut insuffisamment sécurisées Augmentation de la responsabilité juridique et de la transparence
Evolution des menaces Internet Internet (IP) Mobilité E-mail Web Paradigme « accessible par défaut » Mobilité Messagerie instantanée Réseaux sans fil
Le défi de la sécurité Vous permettre de fournir des services… Les sociétés qui utilisent Internet font face au défi qui consiste à s’assurer que leur système d’information est sécurisé tout en assurant un accès rapide et facile aux informations Le bon accès au bon contenu par les bonnes personnes Vous permettre de fournir des services… Accès Web, e-mail, accès fichiers, messagerie,… tout en protégeant vos actifs Données financières, cycles CPU, ressources réseau, propriété intellectuelle, informations client, espace disque,…
L’avantage de l’attaquant et le dilemme du défenseur Principe n°1 Le défenseur doit défendre tous les points; l’attaquant peut choisir le point le plus faible Principe n°2 Le défenseur ne peut défendre que ce qu’il connaît; l’attaquant peut rechercher des points vulnérables Principe n°3 Le défenseur se doit d’être vigilant en permanence; l’attaquant peut attaquer quand il le veut Principe n°4 Le défenseur doit respecter les règles; l’attaquant peut faire ce qu’il veut
Cyber-criminalité Étude réalisée par le Computer Security Institute et le FBI (2002 Computer Crime and Security Survey) http://www.gocsi.com/pdfs/fbi/FBI2002.pdf
La menace est-elle réelle ? Croissance des activités hostiles Et la progression continue… Informations issues du site http://www.cert.org/stats
Données supplémentaires D’après le CERT (centre de coordination de l’université de Carnegie Mellon autour de la sécurité), la non installation des patches de sécurité est la cause de pratiquement 99 % des pénétrations de système (2001, 95% en 2002) Il faut faire attention à son propre code : toujours d’après le CERT, 25 % des CERT advisories sont liés à des problèmes de buffer overflows
Pas simplement des technos…
Les 3 facettes de la sécurité Technologies Windows 2000/XP/2003 Active Directory Service Packs Correctifs IPSEC Kerberos PKI DFS EFS SSL/TLS Clusters Détection d’intrusion SMS MOM ISA Antivirus GPO RMS Archivage Politique d’accès Installation Réparation Gestion des événements Gestion des perfs Gestion du Changement / de la Configuration Processus Restauration Sauvegarde Réponse à Incident Microsoft Operations Framework Evaluation de risques Protection Détection Défense Récupération Gestion Architecture sécurisée Personnes Admin. de l’Entreprise Admin. Du Domaine Service/ Support Développeur Utilisateur
Architecture applicative 6 2 3 4 1 5 7 4 Application 5 Base de données Pare-feu 6 Annuaire d’utilisateurs 1 Clients 3 Frontal Web 7 Gestion de systèmes
Risques Spoofing Tampering Repudiation Information Disclosure Un utilisateur non autorisé se fait passer pour un utilisateur valide Tampering Un attaquant change ou détruit des données de manière illicite Repudiation Possibilité pour un utilisateur de nier avoir effectué une action Information Disclosure Fourniture de données à des utilisateurs non autorisés Denial of Service Rendre indisponible le système aux utilisateurs valides Elevation of Privilege Un attaquant obtient de manière illicite un niveau d’accès plus élevé
Méthodologie d’attaque Reconnaissance Recherche de vulnérabilités existantes Identification des faiblesses applicatives Exploitation Téléchargement d’outils Exécutions d’actions interdites Maquillage des traces
Méthodologies d’attaque 5 4 3 1 2 6 7 5 Défiguration 4 Élévation de Privilèges 1 Scan de ports 7 Effacement des audits 6 Vol de données Spoofing de paquet 3 Attaque dictionnaire
Diminution des risques Spoofing Authentification forte Tampering Autorisation pour éviter les modifications illicites de données Repudiation Événements d’audit pour les opérations autorisées et non autorisées Information Disclosure Sécurisation des données sensibles pendant le transit et durant le stockage Denial of Service Maîtrise de la bande passante pour interdire les requêtes malicieuses Elevation of Privilege Exécution des services avec les moindres privilèges
Stratégie de sécurité en profondeur Supposer l’échec des couches précédentes Défenses du périmètre Défenses réseau Défenses hôtes Défenses application Données & ressources
Stratégie de sécurité en profondeur 5 4 3 1 2 6 7 1 Réseau sécurisé 6 Chiffrement de données 5 Autorisations sur ressources et code 4 Autorisations basées sur les rôles 2 Limitation de la bande passante 3 Authentification 7 Audit
Réseau sécurisé SSL/TLS IPSec 802.1x Port Access Protocol Sécurise les couches applicatives (HTTP, LDAP) IPSec Trafic chiffré, signé & authentifié Filtrage au niveau de l’hôte 802.1x Port Access Protocol Connexions réseau authentifiées Authentification via RADIUS Authentifie les utilisateurs distants VPN utilisant L2TP/IPSec
Sécurisation du périmètre ISA Server Filtrage de ports Filtrage de paquets Inspection de paquets Détection d’intrusion Authentification de session Publication d’applications (Web, E-Mail, FTP)
Flux de trafic ISA Deny All Allow Port 80 Request port 80 Accept port 80 Send data Send response Create port rules Packet Filtering Packet Inspection
Inspection de paquets Filtre les requêtes entrantes d’après un ensemble de règles Assure que seules les requêtes valides sont traitées La plupart des attaques font intervenir des requêtes formées de manière inhabituelles Extrêmement longues Demandant une action non habituelle Codées en utilisant un jeu de caractères alternatif Exemples simplifiés : http://<validURL>?%2e%2e%2f%2e%2e%2f<cmd> (Rappel : %2e = . %2f = /) http://<valid URL>?../../<cmd> C:\inetpub\wwwroot\index.html
Filtres ISA Server Exchange SOAP/XML Inspecte les messages MAPI RPC Rejette les requêtes mal formées Gère la pré-authentification SOAP/XML Limite la taille des requêtes Rejet si le message SOAP est trop long Valide l’intégrité des requêtes SOAP/XML Peut-on la parser ? Sa structure est-elle valide ? Autorisation au niveau des méthodes Web
Authentification Windows Kerberos Permet la délégation Associe des credentials à des principals NTLM – pour la compatibilité avec l’existant RADIUS – utilisateurs distants Active Directory Annuaire LDAP Stockage sécurisé de credentials Associe des credentials à un security principal X.509 PKI – support des cartes à puce & des certificats
Authentification ASP.Net Authentification Windows (via IIS) Standards d’authentification HTTP (RFC 2617) Basic Digest Authentification Windows intégrée NTLM Kerberos SSL/TLS avec des certifications X.509 clients Authentification personnalisée ASP.NET supporte la sécurité au niveau applicatif Modèle de programmation unifié pour toutes les formes d’authentification Passport
Authentification .NET Framework Principals Generic: utilisateurs et rôles non authentifiés Windows: utilisateurs / comptes Windows Custom: principals définis par l’application Classe PrincipalPermission Effectue les vérifications vis-à-vis du principal actif Authentification et autorisation
Flux d’authentification 2 Demande un Ticket de session 2 4 Delègue l’accès 4 3 Impersonifie l’utilisateur 3 1 Demande le TGT 1 1
Autorisation Autorisation système Autorisation .NET Framework Permissions sur les ressources (ACL sur fichiers, imprimantes, …) ACL ASP.NET sur des chemins d’URL Autorisation .NET Framework Code Security Rôles & Permissions Autorisation au niveau de l’application Permissions basées sur les rôles
Sécurité .NET Framework Code access security Protection contre le code malicieux Application Domains et assemblies Policies et Evidence Les hôtes comprennent les : Shell, Browser, Server Le modèle de sécurité est basé sur les permissions Sécurité basé sur les rôles Principals Autorisation de l’utilisateur
Code Access Security Le code fournit des preuves au runtime (hash, strong name, publisher, url etc.) Demandes de permissions déclaratives Attribut Security au niveau de l’assembly, la classe ou du membre Imports Namespace=System.Security.Permissions FileIOPermissionAttribute( SecurityAction.Demand) Requête impérative de permissions Code explicite évalué à l’exécution Imports Namespace=System.Security.Permissions Dim FileIOPermission myPerm =_ new FileIOPermission(...) myPerm.Demand()
Permissions & Policies Code d’accès aux zones restreintes Objets de contrôle des restrictions sur le managed code Security policy Règles, que le runtime doit suivre pour vérifier des permissions
Accès basé sur les rôles Principals Generic: utilisateurs et rôles non authentifiés Windows: utilisateurs / comptes Windows Custom: principals définis par l’application Classe PrincipalPermission Effectue les vérifications vis-à-vis du principal actif Authentification et autorisation
Autorisation niveau application Frontal Web Services Application LOB Application E-Commerce URL Authorization Windows Authorization API Windows Authorization API Windows Authorization API Authorization Administration Manager Policy Store (XML or Active Directory) Common Roles Management UI
Séquence d’autorisation 2 2 Rôles assignés 1 Authentifie 1 4 4 Accès autorisé 3 3 Politique évaluée
Securisation des données Transmission sécurisée de données SSL/TLS IPSec Stockage sécurisé de données EFS (Encrypting File System) de Windows Data Protection API (DPAPI) .NET Framework Isolated Storage .NET Cryptography
.NET Framework Cryptography Conception orientée Stream Algorithmes symétriques Une opération pour une entrée de données périodique Fonctionne avec une seule clé secrète Exemple : chiffrement de message Algorithmes asymétriques Tampon fixe Paire de clé Publique/Privée Exemple : signatures numériques Cryptographic Service Provider (CSP)
.NET Cryptography Hashing Génération de nombre aléatoire MD5, SHA1 Génération de nombre aléatoire Algorithmes symétriques RC2, DES, TripleDES, AES Algorithmes asymétriques DSA, algorithmes RSA à clé publique
Audit & Gestion Événements d’audit intégrés dans Windows Accès programmatique simple Windows Management Instrumentation .NET Framework namespace for WMI Microsoft Operations Manager Consolide les journaux d’événements Exécute des règles distribuées Base de connaissance Génère des alertes vers les consoles centrales
OpenHack IV Description rapide de la configuration mise en œuvre par Microsoft pour remporter le dernier concours OpenHack
Composants mis en jeu Application Web IIS 5.0 Windows 2000 Advanced Server Stratégies IPSec Gestion et surveillance à distance SQL Server 2000 Mots de passe Remarque: aucun pare-feu utilisé!
Architecture routeur Administrateur IIS SQL Server RRAS Terminal Services
OpenHack - SQL Server Interaction avec la base de données uniquement via des procédures stockées Typage fort des paramètres. Ceux-ci sont vérifiés avant tout autre chose Toutes les données qui seront renvoyées à l’utilisateur sont encodées en HTML (but : éviter une attaque de cross site scripting)
OpenHack - SQL Server Chaîne de connexion Non codée en dur dans l’application !! Utilisation de l’authentification intégrée Windows La chaîne ne contient alors que le nom du serveur et celui de la base de données Chiffrée en utilisant les fonctions de l’API de protection de données (DPAPI) CryptProtectData et CryptUnprotectData Intérêt : chiffre des secrets sans avoir à gérer ou stocker des clés Stockée dans le registre Permission sur cette clé accordée Aux administrateurs Au processus ASPNET
OpenHack – SQL Server Réduction de la surface d’attaque Logiciels installés Authentification Compte de service Protocoles de communication Permissions de l’application
OpenHack – SQL Server Logiciels Service pack 2 + les derniers correctifs de sécurité (Remarque : à l’époque le SP3 n’était pas disponible) Non installés Outils de mise à jour (Upgrade tools) Symboles de débogage Support de la réplication Documentation en ligne Outils de développement Désactivés Msdtc Agent SQL Server Microsoft search
OpenHack – SQL Server Modification de la stratégie de sécurité locale pour n’autoriser que NTLMv2 Configuration en mode intégré Windows seulement Pas besoin de stocker un identifiant et son mot de passe sur le serveur Web (y compris SA) Mise en place d’un mot de passe SA très très complexe Au cas où quelqu’un changerait “par erreur” le mode d’authentification Mise en place de l’audit des “Echecs” Preuves des tentatives d’attaques Mode paranoïaque : activer les “Succès” aussi au cas où le pirate ait deviné le mot de passe…
OpenHack – SQL Server Compte de service Par défaut : LocalSystem Bien trop permissif ! Création d’un compte local non privilégié pour le service SQL Mot de passe fort Que l’utilisateur ne peut pas changer Aucun accès à Terminal Server Si l’accès au réseau avait été nécessaire, il aurait alors fallu utiliser un compte non privilégié du domaine
OpenHack – SQL Server Protocoles de communication Dans l’utilitaire réseau serveur (server network utility) : cacher SQL Server des broadcasts de clients Enlever le protocole canaux nommés (on a besoin uniquement de TCP/IP) Suppression des bases exemples (Northwind, Pubs) Création de la base de l’application Accorder au compte de l’application les permissions sur les procédures stockées plutôt que sur les tables elles-même Interdire l’exécution de requêtes ad hoc S’assurer que ce compte n’a pas de permissions ailleurs dans SQL Server
OpenHack – SQL Server Stratégies IPSec Traffic Serveur Web SQL Server Serveur d’administration SQL Server (carte réseau privé) SQL Server partages de fichier du serveur d’administration Protection Certificats numériques Forcer l’authentification de toutes les machines Chiffrement et signature (confidentialité et intégrité)
OpenHack – SQL Server Propriétés des stratégies IPSec Par défaut, bloquer tout le traffic IP et ICMP Serveur Web SQL Server “Authentifier et signer” : IPSec AH Serveur d’admin SQL Server “Authentifier, signer, chiffrer” : IPSec ESP+AH
Stratégie IPsec routeur Permit 443 Administrateur L2TP+IPsec IIS SQL Server SHA1/3DES 445, 3389 SHA1 2443 RRAS Terminal Services Permit 445, 3389
Une Solution de bout en bout Offre une solution complète sécurisée à tous les niveaux Déploiement aisé pour toutes les audiences Utilisateurs finaux Administrateurs Développeurs Basée sur les standards de l’industrie pour promouvoir l’interopérabilité Kerberos, X.509 XML/SOAP, WS-Security, SAML
Références ISA Server www.microsoft.com/isa Windows Server 2003 www.microsoft.com/windows .NET Framework www.microsoft.com/netframework Design, Deployment & Management www.microsoft.com/technet/security Microsoft Operations Manager www.microsoft.com/mom OpenHack http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/openhack.asp
Présentations Microsoft 9H15 à 10H15 Défense en profondeur 10H30 à 11H30 Gestion des correctifs de sécurité 11H30 à 12H30 Sécurité des réseaux Wi-Fi 13H30 à 14H30 NGSCB (ex-Palladium) 14H45 à 15H45 Gestion de droits numériques en entreprise (RMS) 15H45 à 16H45 Présentations sécurité : http://www.microsoft.com/france/securite/evenements