Les mécanismes mis en oeuvre pour la sécurité

publicité
Sécurité des systèmes et des SGBDs
La sécurité n’est pas seulement la confidentialité. De nombreux autres concepts sont
impliqués dans la gestion de la sécurité. Ils sont souvent applicables autant aux OS qu’aux
SGBDs, ces deux domaines étant extrêmement proches.






confidentialité
Tout ne doit pas être accessible à tout le monde. En effet, se connecter à l'OS ou à la
base de données donne un certain nombre de droits et de ressources en fonction d’un
profil défini et maintenu par un administrateur. La granularité d’accès peut aller
jusqu’à la vision unique d’un champ d’un enregistrement d’une table particulière.
disponibilité
C’est la faculté de délivrer correctement un service en terme de délai et de qualité à
l'utilisateur. Se mesure en pourcentage du temps de fonctionnement total.
fiabilité
Des mécanismes de sauvegarde variés (physique, logique, off-line, on-line, totale,
partielle, incrémentale), ainsi que des mécanismes de journalisation, et de reprise
permettent de restaurer une information sans pratiquement aucune perte, dans tous les
cas de problème matériel ou logiciel.
intégrité
Que les données soient réparties ou non (dans ce dernier cas les mécanismes mis en
jeux seront plus complexes) elles doivent être cohérentes. Cela sous entend, d’une part
que les accès concurrents d’utilisateurs, notamment lors de mises à jour, ne doivent
pas compromettre la cohérence des données et d’autre part que ces dernières
satisfassent aux contraintes d’intégrité du modèle, et / ou aux règles de gestion de
l’entreprise.
tracabilité
En cas de problème important ou d’attaque du système, on peut recourir à l’analyse de
traces ou de logs (journaux). Le niveau de détail de ces traces est paramétrable, et
concerne soit les aspects système, soit réseaux, soit l’accès aux données élémentaires
elles-mêmes.
maintenabilité
C’est l’aptitude à la réparation, l’évolution, la maintenance du système. Mesuré en
temps de reprise après panne (Mean Time To Recover)
Les mécanismes mis en oeuvre pour la sécurité
Les SGBDs fournissent un certain nombre de mécanismes internes ou de fonctionnalités
assurant un niveau satisfaisant de sécurité.

L'authentification, est le processus qui permet de vérifier qu'un utilisateur réclamant
un accès est bien celui qu'il prétend être, ou plus simplement le processus qui contrôle
l'identité de l'utilisateur. Cette action (login) se fait en général via la fourniture du
couple
nom
d'utilisateur
/
mot
de
passe.
Dans certains cas l'authentification peut être implicite et héritée d'une authentification
précédente, ou reconnue automatiquement (@IP du user sur le réseau par exemple),
bien que simplifiant les accès ce choix peut évidemment s'avérer dangereux.
La multiplication des couches logicielles et l'inflation d'applications sur les postes
utilisateur fait que ce dernier est fréquemment amené à s'authentifier des dizaines de
fois par jour. La signature unique (Single Sign On ou SSO) est un objectif intéressant
mais difficile à mettre en œuvre.
Il est recommandé d'établir des connexions au serveur avec le protocole SSL, pour
chiffrer les échanges clients/serveur, afin d'améliorer la sécurité. On peut aussi utiliser
un client SSH pour chiffrer la connexion entre les clients et le serveur de bases de
données. Si l'une de ces deux protections est mise en place, il sera difficile de
surveiller votre trafic et de comprendre les informations échangées.

Les droits et privilèges : une fois correctement identifié l'utilisateur doit pouvoir
accéder aux informations et ressources auxquelles il a droit (et uniquement à celle là)
Ce problème est résolu le plus simplement avec la gestion de droits élémentaires
accordé à un utilisateur, ou plus efficacement avec des rôles et / ou profils affectés à
des groupes d’utilisateurs...
Lors de la création de la base de données, un utilisateur propriétaire en est responsable.
Généralement, seul le propriétaire (et le super utilisateur) peuvent intervenir avec les
tables de cette base, et il faut que ce dernier donne des droits à tous les intervenants
qui auront à travailler sur cette base.
Les applications ne doivent jamais se connecter au serveur de bases de données sous le
nom du propriétaire ou de l'administrateur, car ces utilisateurs ont des droits très
importants, et pourront exécuter n'importe quelle requête, comme la modification de
tables, l'effacement de lignes ou même encore, la destruction de la base.
Il faut créer différents utilisateurs de bases de données pour chaque aspect de
l’application, avec des droits limités aux seules actions planifiées. Il faut alors éviter
que le même utilisateur dispose des droits de plusieurs cas d'utilisation. Cela permet
que si des intrus obtiennent l'accès à la base avec l'un de ces jeux de droits, ils ne
puissent pas affecter toute l'application.




Les LOGs ou traces : permet d'enregistrer tout ou partie des informations concernant
les accès (réussis ou échoués). Cette trace pourra être plus ou moins détaillée et son
volume étroitement surveillée. De ce fait on l'utilisera de manière ciblée sur des
périodes de temps spécifiques
tolérance aux pannes : permet par du matériel ou du logiciel redondant (CPUs,
disques, IOs) de supporter de manière partiellement ou complètement transparentes
différents types de pannes, tant au niveau du client, que du réseau, que du serveur. Une
tolérance totale est cependant coûteuse.
sauvegarde et restauration : permet de sauvegarder les données sur des supports
externes (disques, bandes, etc.) et pouvoir les restituer, le plus à jour possible. Le but
est de ne pas perdre de données suite à un problème matériel (panne disque), logiciel
(bug) ou une fausse manipulation d'un utilisateur.
mécanismes
transactionnels
l'atomicité des transactions, par définition assure la cohérence des données, même
dans des environnements distribués. L'image avant modification, stockée de manière
redondante dans ou hors de la BD, permet de faire d'éventuels retours arrière pour
retrouver le dernier état cohérent, ou de s'assurer qu'il n'y a pas eu d'opérations
partielles ou incomplètes (transaction bancaires par exemple)
Aspect sécurité
mécanisme mis en oeuvre


confidentialité

traçabilité
fiabilité,
maintenabilité
disponibilité,
exemple d'implémentation
au niveau SGBD
authentification
 référentiel utilisateur /
indépendance logique
mot de passe
/ physique
 tables
de
user
applicatifs
 identification externe
 tables / fichiers
 vues (1)
 virtual
private
database chez Oracle

droits d’accès
données
rôles

droits et privilèges

logs et traces


tables d’audit
log Oracle Net

tolérance de panne


stand by DB
cluster logiciels

sauvegarde
restauration

physique : sauvegarde
+ journalisation +
restauration
logique : export /
import
et

intégrité
aux


transaction atomique
contraintes d'intégrité



Two Phase Commit
(2PC)
contraintes 'reference'
read consistancy
Les principales menaces
Au delà des attaques accidentelles ou les défaillances du système, les attaques 'malveillantes'
nous
intéresserons
plus
particulièrement.
Les menaces les plus connues visent à paralyser, ou détruire tout ou partie du système
d'information. Elles ne ciblent pas particulièrement les SGBDs mais nous les citerons
néanmoins parce qu’un SGBD est hébergé sur une machine pouvant y être vulnérable.
Quelques définitions données par le grand glossaire de la sécurité de ECHU.ORG :
(http://www.echu.org/portail/modules/glossaire/)



Virus : Au sens large du terme, on qualifie généralement de virus tout programme
capable de se reproduire (techniquement, se recopier) lui-même et d'endommager des
données informatiques. On les classe en plusieurs catégories, principalement: parasite,
compagnon, amorce, multiformes, résident mémoire ou non, furtifs, polymorphes,
réseau et flibustier. Pour plus de détails reportez-vous aux définitions correspondantes.
Ver (ou Worm) : programme qui peut s'auto-reproduire et se déplacer à travers un
réseau en utilisant les mécanismes réseau, sans avoir réellement besoin d'un support
physique ou logique (disque dur, programme hôte, fichier ...) pour se propager; un ver
est donc un virus réseau.
Cheval de Troie : (en anglais trojan horse) un programme informatique effectuant des
opérations malicieuses à l'insu de l'utilisateur : vol des mots de passe, copie de
données sensibles, exécution d'action nuisible ...
Un peu moins connus mais plus probables dans le domaine des SGBDs :

Back doors : ("Portes dérobées") : Programmes usurpateurs qui détournent des
fonctionnalités systèmes dans le but d'ouvrir des accès utiles aux pirates pour contrôler
à distance les machines ciblées (modification des programmes de login avec
user/passwd en dur, ouverture de ports particuliers, etc.). Ces programmes sont la
plupart du temps installés par le biais d'un "cheval de Troie". Parmi les plus
« célèbres », on peut citer BackOrifice (BO) ou encore NetBus.
Les accès illicites via ces backdoors pouvant être facilement détectés par des
commandes système standards (liste des process connectés, des ports ouverts) ils sont
parfois utilisés conjointement avec des rootkits, ensemble de commandes standards
modifiées
pour
masquer
les
intrusions.

Certaines back doors peuvent être inclues dans le code d'applications standards, sans
intention forcément malveillante mais pour réserver au développeur du programme, un
accès 'privé' à toute les machines hébergeant son code. L'accès au code source d'un
logiciel libre peut nous prémunir contre ce genre d'indélicatesse.
Altération du SQL : L'altération SQL (souvent restreinte à l'injection SQL) est une
technique permettant de récupérer des informations confidentielles de la base de
données, ou simplement des méta données, en outrepassant les droits applicatifs
'normaux'.
Le principes et de modifier indirectement les ordres SQL envoyés au serveur, en y
incluant des chaînes de caractères spéciales en lieu et place des paramètres attendus
par l'applicatif.
Buffer Overflow : Un buffer overflow (BOF) est littéralement un dépassement de la
capacité d'un buffer de données. Cela arrive fréquemment lorsque l'on programme
sans
trop
de
précautions.
La conséquence est généralement un 'crash' du programme, qui tente un accès à des
zones
en
dehors
de
son
espace
d'adressage.
La saturation ou le crash de serveur n'est généralement pas le but ultime des hackers.
L'acquisition de privilèges ou l'ouverture de backdoor est plus souvent ciblée.


Dans le domaine de la sécurité cette technique du BOF est utilisée pour 'dérouter' la
séquence normale des instructions d'un programme et le forcer à exécuter une routine
spécifique, permettant généralement l'obtention de droits 'super utilisateur'. Cette
routine ou ce programme exploitant la faille est appelée un "exploit" (en Anglais dans
le texte)
Les principales failles de sécurité






« portes » ouvertes : (pas seulement les 'back doors’)
porte de la salle machine ouverte, poste ou serveur sans mot de passe ou mot de passe
faible, poste sans veille, post it…
Solution : fermer les portes, mettre en oeuvre la gestion de mots de passe
Installation par défaut :
- les valeurs de paramètres sont connues (port 80 / 1525, mot de passe SYS et
SYSTEM),
- des services superflus sont accessibles (serveur ftp, serveur samba, serveur d'admin,
etc…),
- les communications ne sont pas chiffrées (ftp, telnet, pop)
Solution : se documenter, auditer les serveurs
mauvaise politique de gestion des droits:
- installation confortable : tous les logiciels sont installés sous root, tous les utilisateurs
de l'applicatif sont DBAs
- allow all implicite... (dans un firewall…)
- utilisation abusive de l'héritage
Solution : maîtriser la gestions des droits des OS / logiciels serveurs / bases de données
bugs (qui peuvent provoquer un simple déni de service voire l'arrêt du système)
Solution : faire de la veille, patcher régulièrement les applications
mauvais codage (paramètres en clair dans les URLs, connexion non chiffrées, etc.)
Solution : se documenter (best practices, test des programmes)
contrôle d'accès au niveau applicatif, qui peut facilement être court circuité
Solution : centraliser (et factoriser) les contrôles au niveau données : contraintes
d'intégrité…
C'est le maillon le plus faible de la chaîne qui cassera immanquablement. On peut mettre en
place un système très complexe, il sera bien inutile si un administrateur est resté 'loggé' root
sur son poste (Statistiquement la majorité des attaques provient de l'intérieur des entreprises)
Cependant, on n'oubliera pas de rester pragmatique. Les besoins et les objectifs doivent être
clairement définis au départ et l'adéquation de la solution vérifiée. Un certains nombres
d'utilitaires libres sont disponibles sur internet pour vérifier la fiabilité d’un système
d'information.
Il faudra de plus trouver un équilibre entre niveau de sécurité satisfaisant et confort (voire
simple possibilité) de travail des autres acteurs.
Sources
ECHU.org : http://www.echu.org/modules/glossaire/index.php
CERT : http://www.cert.org
Site de D.Deleglise : http://didier.deleglise.free.fr/
Glossaire :
OS : Operating System = système d’exploitation : typiquement, Windows, Linuw, Mac OS…
SGBD : Système de Gestion de Bases de Données : typiquement, Oracle, PostgreSQL, SQL…
Téléchargement