Présentation

 
Bonjour,

freelance, administrateur de base de données et expert sur la plateforme SQL Server, j'interviens auprès de PME ou de Grands Comptes pour auditer leurs serveurs et en améliorer performances, robustesse et sécurité.

Vous pouvez faire appel à mes services pour des missions ponctuelles ou des projets plus longs.

Pascal MESSAGER
mail messager(point)pascal(point).pro(arobase)wanadoo(point)fr
06-63-94-56-97


Navigation

Page d'accueil

Présentation et contact : CV  

Une méthode remarquable : Audit SQL

Liens suggérés :

Un Séminaire de haut niveau http://www.sqlpass.org

Intro

Les bases de données sont au coeur du système d'information de toutes les entreprises. Les applications dépendent directement de leur bon fonctionnement.

Dans ce blog, j'apporte quelques réflexions issues d'une longue expérience. Avec un peu d'humour, blog oblige, mais sans jamais oublier le principal : le système d'information est au service de la productivité de l'entreprise. Pas le contraire.

Pascal MESSAGER

Dimanche 2 septembre 2007

Les missions se suivent... et ne se ressemblent pas. Cette année c'est plutôt des missions courtes, avec une dominante expertise express, voire intervention pompier.

J'en ai fait une, l'autre jour dans le plus pur style "Ghostbuster", vous savez les geeks qui débarquent toutes sirènes hurlantes pour chasser les esprits malfaisants !

Appelé en catastrophe un samedi vers 13 heures alors que je m'apprêtais à profiter paresseusement du week-end,  par un client affolé. Les performances  du serveur se sont effondrées et les abonnés (un site web très spécialisé) n'accédent plus à leurs comptes !

Je saute sur mon scooter et fonce vers Paris-centre. Moins d'une heure après l'appel téléphonique, j'ai déjà lancé mon script d'analyse magique et regarde ce qui se passe, en relation étroite avec l'administrateur système et le programmeur web, également convoqués d'urgence.

On a bossé non-stop jusqu'à 23h... et ça a remarché ! Les perfs étaient redevenues normales. Un réglage de config du serveur web à corriger, mais l'analyse SQL a permis de cerner le problème

C'est là qu'on apprécie d'avoir préparé à l'avance toute une procédure d'analyse. Pour ne pas perdre de temps et foncer direct vers les points les plus pertinents.

Il y a des jours où on est content du travail efficace :-)

par Pascal MESSAGER publié dans : dba-sqlserver
ajouter un commentaire commentaires (0)    créer un trackback recommander
Mercredi 27 juillet 2005
Lorsque l'on crée une sauvegarde il est capital de se poser la question de la restauration. En particulier : "Dans quel cas de figure est-on amené à faire une restauration, et qu'est-ce que ça règle comme problème ?"

Dans l'imagerie d'Epinal des informaticiens, le risque de perte de données est symbolisé par la perte du disque dur. Vieille réminiscence d'un temps où les coûteux disques de quelques Méga octets avaient une fiabilité douteuse.

Or ce n'est plus le cas aujourd'hui. Les disques approchent le Tera octets avec une fiabilité remarquable, et pour un prix suffisament faible pour qu'on puisse les dupliquer (mirroring, RAID...)

En réalité, la perte physique du disque contenant les dnnées est aujourd'hui un scénario presque négligeable. Mais d'autres événements ont pris le relais. Dont l'erreur humaine qui n'est pas le moindre.

Voici une petite liste non exhaustive de scénarios de 'perte' de données, ou d'appel à une restauration :

 Matériel
 
 Disque défectueux
Perte physique du disque contenant sql server.
 Disque défectueux Perte physique du disque contenant des bases de données.
 Electronique serveur
 Machine physique défectueuse.
 Site  Incendie ou destruction totale de la salle serveur.
 SQL
 
 Corruption base Fichiers de la base physiquement corrompus.
 Perte login
Perte de droits d’accès, admin ou utilisateur.
 Erreur humaine
 Bug applicatif Découverte d’un bug après mise en prod qui affecte la cohérence des données.
 Opération inopinée  Destruction involontaire de données (delete sauvage…)
 Malveillance
 Modification volontaire des données par un attaquant. Peut remonter loin dans le temps.
 Virus Virus corrompant les données et programmes.
 Maintenance
 
 Duplication
Demande de duplication de la base vers une autre machine (de test notamment)
 Retour version Annulation d’une mise à jour logicielle qui s’avère défectueuse.
 Déplacement
Changement de machine physique supportant le serveur sql.
 Mode dégradé  
 Coupure électricité
En cas de coupure d’électricité, les onduleurs ont une autonomie très limitée. Or certaines applications sont  plus prioritaires que d'autres.
 Performances
Baisse de performances subite.

Il est clair que pour certains scénarios une application bête et méchante de la restauration ne suffit pas. Par exemple (cas le plus difficile) si un virus a lentement corrompu les données. Il faut appliquer alors une stratégie adaptée.

La préparation de ces scénarios et la mise en en place de procédures semi-automatiques de restauration facilite et accélère le travail de reprise.
par Pascal MESSAGER publié dans : dba-sqlserver
ajouter un commentaire commentaires (0)    créer un trackback recommander
Mardi 5 juillet 2005
Il ne suffit pas de faire des sauvegardes pour se sentir en sécurité. Outre que j'ai trop vu de serveurs mal voire pas sauvegardés du tout, j'en ai vu aussi où la capacité de reprise du travail normal suite à un plantage était douteuse.

Lors d’un incident, le stress est particulièrement important. La perte de temps et les erreurs qui en découlent peuvent être pires que l’incident lui-même. D’où l’importance de savoir restaurer une base dans la sérénité, donc de réaliser la manipulation de temps en temps.

Mais même en situation optimum :
  • L'incident est repéré tout de suite.
  • Les responsables peuvent facilement décider de restaurer la base affectée.
  • Il n'y a pas de manip de matériel à changer.
  • Les sauvegardes sont gentiment planifiées, y-compris le journal de transaction.
  • Le DBA sait faire une restauration en sifflotant.
  • Les fichiers sont en ligne...
... le temps incompressible d'interruption de productivité n'est pas négligeable.

A noter qu'on a ici affaire à un bug gentil, il est même plutôt coopératif. Ce n'est pas toujours le cas !

Le diagramme ci-dessous exprime l'enchainement des événements dans un cas favorable.



Malgré la bonne volonté de tous, le temps d'interruption est de cinq heures.

Or on a très vite un dérapage si un quelconque des intervenants n'accomplit pas sa tâche dans le temps minimum théorique imparti. Autant dire que le dérapage est inéluctable.

Ce qui se traduit par une perte sèche d'activité = Nombre employés (ou clients !) * Durée d'interruption.

Conclusion : Sachez mettre en place un mécanisme d'intervention d'urgence. La sérénité qui en découle n'a pas de prix.
par Pascal MESSAGER publié dans : dba-sqlserver
ajouter un commentaire commentaires (0)    créer un trackback recommander
Lundi 27 juin 2005
C'est un classique. Dans les dix premières leçons de l'apprenti-pirate pré-adolescent. Pour pirater un site web, il suffit de taper ces deux mots "injection sql" dans Google, et il nous tombe 500 000 hits. 500 000 modes d'emploi de hack. Et ça marche !

Parce que c'est simple. Simple à pleurer. Il suffit de connaître un caractère présent sur le clavier. Un tout petit, à peine quelques pixels à l'écran. Mais il ouvre la porte de quantité de sites web aussi peu protégés qu'un vieux moulin abandonné en Haute-Provence, dans lequel entrent et sortent des nuées de cigales stridulentes.

Une vulgaire apostrophe. Située sous le chiffre 4 d'un clavier AZERTY. Voilà la clé magique qui menace la sécurité de votre serveur de bases de données.

Vous ne me croyez pas ? Vous avez tort. C'est simple à pleurer vous dis-je.

Travaux Pratiques

Oncques estoit votre beau site web, chargé de tous vos espoirs de richesse e-commerciale. Evidemment, vous prévoyâtes à l'endroit de vos estimés clients zé partenaires, un accès privilégié. Privilèges abolis un Quatre-Août pour les naïfs, soit dit en passant.

Pour accéder à ce club de nantis, les susdits se doivent de décliner leur identité. Le programmeur que vous chargeâtes de cette vile tâche étant fainéant par nature, il copicolla le code html d'un site concurrent et proposa deux minuscules zones de saisie. L'une baptisée "Login" et l'autre "Password", à moins qu'il ne s'astreignit à la francisation.

L'internaute honnête et cynophile saisira donc son sésame. Par exemple
Login = dupond
Password = medor
Et la chevillette cherra.

Mais supposons notre internaute, privilégié disions-nous donc non concerné par le Quatre-Août, être de cette noble engeance aristocratique et disposer d'une particule en son nom (et vaguement irlandais de plus).

Login = O'Neil d'Estrées d'Harcourt
Password = n'importe nawak

Hélas, ô rage, ô désespoir, s'abat alors le couperet fatal du bug et, au lieu d'afficher la page web due à son rang, voici qu'apparait une absconse insulte :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Ligne 1 : syntaxe incorrecte vers 'Neil d'.
/identification.asp, line 10

Perdu ! Votre site a cédé sous les coups de butoir de l'apostrophe scélérate et révélé sa vulnérabilité. Le pirate y est désormais comme chez lui.

Que c'est-il passé ?
L'apostrophe est chez SQL, le langage d'accès à la base de données, le délimiteur de chaine de caractères. Le programmeur a construit la requête autour du login, sans envisager le cas de l'apostrophe présente. Résultat, tout ce qui est après cette apostrophe est interprété par SQL comme du code exécutable. Dans l'exemple ci-dessus "Neil d" provoque une erreur de syntaxe d'où le message peu amène.

Mais si au lieu d'une instruction erronée après l'apostrophe, l'internaute saisit une instruction SQL valide ?

Login = ' or 1=1 --
Password = onsenfout

Je vous passe les détails techniques, mais la saisie ci-dessus suffit à tromper le contrôle de sécurité et donner accès à la page web protégée. Mais on peut faire bien pire et pénétrer le système entier.

Allons ! Est-ce vraiment une menace sérieuse ?
Oui, hélas. Pour avoir fait des petits essais, un site web sur dix est ainsi vulnérable. Y-compris des sites très prestigieux dans le secteur de la haute finance !

Faites le test sur votre site web. Insérez une petite apostrophe, une toute petite. Si ça plante, vous serez bientôt visité par un horrible bot aux intentions mafieuses venu du tréfond du Balozhikstan...


par Pascal MESSAGER publié dans : dba-sqlserver
ajouter un commentaire commentaires (0)    créer un trackback recommander
Dimanche 26 juin 2005
D'autres on 'fait' Katmandou en 72, moi j'ai fait 'San-Francisco SQL PASS' en 2000. Kesaqo? dites-vous. (Ne niez pas j'vous entend d'ici)

C'est un séminaire pour les pros de SQL Server. Mais un truc bien hein ! De classe internationale. Le truc qu'on dit en soufflant sur ses ongles la bouche en cul de poule, faussement modeste : "Oui, j'y étais". Bon c'est pas pour les débutants non plus. Moi petit DBA, avec ma certif MCP SQL et la batterie de serveurs inflationnistes que je gérais déjà à l'époque, je n'en menais pas large à côté des mahousses de quelques To en ligne.

Mais ça m'a donné un sacré coup de boost ! D'ailleurs, je vis encore aujourd'hui sur cet acquis, five years after.

Et devinez skisspass à Dallas en septembre 2005 ? Bravo vous avez gagné, la cuvée 2005 de SQL PASS http://www.sqlpass.org. Et kicéki a envie d'y aller, hmmm ? C'est bibi. J'en reviendrai la tête pleine de concepts qui ont encore cinq ans d'avance. De quoi apporter des solutions pragmatiques à des clients pendant une demi-décennie.

Certes c'est pas encore sûr. Entre le pétrole à 60 dollars et d'autres contingences, je n'ai pas encore pris mon billet d'avion. Mais j'ai déjà repéré quelques fameux rodéos du Lone Star State...

par Pascal MESSAGER publié dans : dba-sqlserver
ajouter un commentaire commentaires (0)    créer un trackback recommander
Blog : Photo sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur avec TF1 Network - Signaler un abus