Windows NT et sécurité

publicité
Introduction à Windows NT 4.0
Eric Lapaille
[email protected]
Jean-Gabriel Debaille [email protected]
pour le Centre Telecoms - Technothèque 1997 (c)
1
Table des matières
Table des matières
2
Historique
4
Windows NT et sécurité
1) Les mécanismes de sécurité.
2) Les mesures d'assurance de sécurité
7
7
7
Compression au vol
10
Registry : la base de registres
11
I/O et File Systems
12
Multitâche préemptif, mémoire virtuelle et Multithread
13
OpenGL
14
Domaine
Replication
15
15
Différences NT Server et Workstation
16
Permissions répertoires partagés
17
Permissions fichiers partagés
17
Attributs fichiers
17
Windows NT en réseau
NetBIOS
Universal Naming Conventions
Protocole IPX/SPX
Protocole NETBEUI
SMB
Browse Master
SAP
ODI
NDIS - Network Driver Interface Specification (3.0)
The Transport Driver Interface (TDI)
Compatibilité réseau
18
18
18
18
19
19
20
20
20
21
22
22
Outils d’administration
23
Les grandes nouveautés dans Windows NT 3.5
Performance
Compatibilité
Taille
OLE 2.01
Graphisme, multimédia
Connectivité
Remote Access Services
24
24
24
24
24
24
24
25
2
Stabilité
25
NT 4.O
26
Appendice A : MICROKERNEL
1) Les processus
2) Threads
3) Objets Mémoire
4) Ports
27
27
28
28
29
Appendice B : MIPS
Error! Bookmark not defined.
3
Historique
Dès la parution de la version 1.0 de OS/2, Microsoft s'est attelé à une nouvelle
tâche ambitieuse: créer un système d'exploitation digne des années 90. Fin
1988, Bill Gates débauche chez Digital Equipment Corporation le fameux Dave
Cutler, auteur remarqué du système VAX/VMS et de plusieurs compilateurs pour
les stations DEC. Dave Cutler se voit confier les rênes d'un projet baptisé à
l'époque 'NT OS/2', ou 'OS/2 3.0' ou encore 'Portable OS/2'. Ce n'est qu'en 1990,
année de tous les succès pour Windows 3.0, que le projet acquiert son nom
définitif de 'Microsoft Windows NT'. Le cahier de charges est revu la même année
et met principalement l'accent sur les points suivants :
 Conception révolutionnaire
NT est un système d'exploitation modulaire, conçu comme une série de
couches indépendantes et inspiré du système Mach développé par la
Carnegie-Mellon University. Entièrement écrit en C pour des raisons de
portabilité, NT repose sur une architecture 32-bit. Ses 32 bits confèrent à NT
un adressage mémoire linéaire de maximum 4 GB. Ses 3 millions de lignes
de code sont le fruit d'un mariage, quelque peu hors nature, entre Windows,
l'interface graphique hérité des ordinateurs personnels et des fonctionnalités
originaires du monde des 'minis'. David Cutler dit de son système
d'exploitation qu'il n'est pas vraiment un système micro-kernel mais plutôt un
OS client/serveur. Ici, le terme de serveur est appliqué à tout sous-système
qui fournit des services à d'autres sous-systèmes, celui de client est associé
à tout programme faisant appel à un de ces services. NT a été conçu pour
remédier aux limitations d'OS comme Dos ou Windows qui ne sont ni sûrs, ni
portables. L'architecture client/serveur de Windows NT fait qu'aucune
application n'a le droit d'accéder directement au hardware ou à des portions
sensibles du système d'exploitation. Tous ces accès sont contrôlés par la
couche executive de NT. Tous les systèmes d'exploitation disposent d'un
noyau ou kernel comprenant un jeu de fonctions minimum qui doivent rester
en mémoire. Dans le DOS par exemple, le kernel est constitué du BIOS (
Basic Input/Output System), du BDOS ( Basic Disk Operating System). Sous
Windows NT, le noyau est en fait un microkernel qui comprend les seuls
services qui doivent absolument rester en mémoire. Il a été désigné pour être
aussi petit que possible. Le microkernel est même si petit que, dans le cas
d'une machine multiprocesseurs, une copie du micronoyau est exécutée sur
chaque CPU. C'est ce qui permet à Windows NT d'être un véritable OS à
symmetric multiprocessing. Les seuls autres OS SMP sont le Mach de
Carnegie-Mellon, le Dynix de Sequent et le Solaris de Sun.

Portabilité
Prévu pour les PC traditionnels à base de processeurs INTEL 80386 ou
80486, NT vise aussi le créneau des ordinateurs équipés de processeurs
RISC R4000 de la firme MIPS. Ces processeurs à jeu réduit d'instructions
ont été sélectionnés comme pièce maîtresse du nouveau standard ACE/ARC
édicté par Microsoft, Compaq, Digital et consorts. Digital a aussi manifesté
son attachement à Windows NT qui équipera en standard ses nouvelles
stations de travail dotées du processeur RISC et 64-bit ALPHA. Le
processeur Power PC est supporté depuis la version 3.51 de NT. Lors du
portage vers un nouveau processeur, seul le noyau, ou 'micro-kernel', d'une
cinquantaine de KB est à réécrire pour tirer parti des spécifités du nouvel
environnement. Pour rendre NT disponible sur un nouveau type de machine,
son concepteur doit simplement réécrire un HAL (Hardware Abstraction
Layer) spécifique, disposer d'un compilateur C compatible avec celui de
Microsoft, obtenir les sources de Microsoft et les recompiler pour cette
4



nouvelle architecture. Cette portabilité n'a pas que des avantages. Pour
fonctionner sur différentes machines, une application doit être compilée
plusieurs fois mais il n'est pas rare qu'une compagnie ne développe et
maintienne qu'une seule version Intel de son programme. Ensuite, il y a une
perte de performance importante lorsqu'on fait tourner des applications Dos
ou Windows 16 bits sur d'autres processeurs que celui d'Intel. Enfin, il n'est
pas possible avec cette philosophie portable d'optimiser certaines portions du
code en assembleur, le langage C n'offrant pas une optimisation idéale pour
certaines tâches intensives.
Sécurité
Les concepts de sécurité et de protection des données de Windows NT
ont été largement inspirées des directives et recommandations émises par le
National Computer Security System du Département Américain de la
Défense. NT répond au niveau de sécurité C2. A ce niveau, un contrôle
d'accès discrétionnaire est spécifié par le créateur d'un objet. Il y détermine
quels sont les utilisateurs ou groupes d'utilisateurs qui ont l'autorisation
d'utiliser cet objet. Un autre mécanisme de sécurité s'assure que les
données résiduelles sont complètement effacées de la mémoire et des
disques lorsqu'elles ne sont plus indispensables ou lorsqu'elles sont
assignées à un nouvel utilisateur. Chaque démarrage d'une station de travail
passe par une procédure d'identification de l'utilisateur qui garantit aux
données leur confidentialité. Une nouvelle gestion des fichiers, appelée
NTFS, fournit à NT un nombre impressionnant de mécanismes pour la
tolérance de fautes : disques en miroir et/ou en duplex, système de
récupération des données etc.
Le modèle de sécurité de Windows NT est basé sur le concept d'objet. Un
objet sécurité peut représenter n'importe quelle ressource système : un
fichier, un périphérique, un programme, un utilisateur. Chaque objet
transporte sa propre information sur ce qu'il lui est permis de faire ou non.
Multi Processeurs
NT a été conçu pour supporter plusieurs processeurs à la fois au sein
d'une seule et unique machine. Il ne s'agit pas d'une rudimentaire gestion
asymétrique des processeurs où un processeur graphique, par exemple,
délivre le processeur central d'une série de tâches accessoires. Il s'agit ici
d'une véritable gestion symétrique de processeurs identiques où chaque
processeur gère une sous-tâche,ou 'thread', particulière. L'ajout d'un
processeur débouche sur une augmentation linéaire des performances. NT
peut gérer jusqu'à trente processeurs dans une seule machine.
Compatibilité
Au dessus de la couche responsable de l'interaction avec le hardware,
Windows NT peut accueillir toute une série d'autres couches, appelées soussystèmes, d'autres personnalités qui assurent la compatibilité avec d'autres
systèmes d'exploitation. Les applications Windows NT en mode 32-bit
cotoient, sans le moindre heurt, des programmes MS-DOS, des
programmes Windows 16-bit, des applications OS/2 1.3 en mode caractère
et même des logiciels conformes aux normes POSIX. Pour reprendre
l'expression consacrée par IBM, Windows NT est lui aussi un meilleur
Windows que Windows puisque chaque programme dispose de son propre
espace mémoire et est incapable de bloquer le système ou de corrompre les
données provenant d'autres applications. Mieux encore, il est possible
d'échanger des données entre ces programmes hétéroclites via le pressepapier, de simples pipes ou les mécanismes DDE et OLE. Seules les
applications Dos, Windows et OS/2 1.x correctement écrites pourront tourner
dans l'environnement NT. Ces applications ne pourront pas, par exemple,
faire des accès de bas niveau au contrôleur du disque dur, écrire
directement sur le port série, attaquer la mémoire de la carte graphique. Ce
genre de comportement est régulièrement utilisé par les programmeurs MSDOS pour accélérer certaines tâches qui seraient trop lentes si elles étaient
5

gérées uniquement par l'API du BIOS. Les applications Windows 16 bits
faisant appel à des fonctions non-documentées ou à des pilotes de
périphérique propriétaires n'auront pas plus de chances de fonctionner sous
NT.
Réseau
Tout simple mais efficace: NT permet le partage des imprimantes et des
fichiers logés sur des disques durs locaux avec d'autres utilisateurs du
réseau. Pour le travail en groupe, un système de courrier électronique est
disponible en standard. Pour les utilisateurs plus exigeants, NT s'est plié au
standard Distributed Computing Equipment ( DCE ) émis par l'Open
Systems Foundation. Grâce au DCE, NT se connecte et interagit sans
problèmes avec des serveurs Unix, VMS ou autres. Les supports NETBIOS
et TCP/IP sont bien entendu présents. Microsoft collabore avec Digital,
Novell et Banyan pour mettre sur pied un nouvelle norme, baptisée
Windows Open Systems Architecture, qui s'efforce de standardiser les
services réseaux tels que partage d'imprimante, courrier électronique,
administration du système, accès aux bases de données, le tout dans un
environnement multi-vendeurs.
6
Windows NT et sécurité
Les concepts de sécurité et de protection des données de Windows NT ont été
largement inspirées des directives et recommandations émises par le National Computer
Security System du Département Américain de la Défense. Dans le document 'Trusted
Computer System Evaluation Criteria' ( baptisé familièrement 'The Orange Book' ), le
département distingue sept niveaux de confiance pouvant être attribués à un
environnement informatique distribué: D1, C1, C2, B1, B2, B3 et A1. D1 correspond au
degré zéro de sécurité tandis qu'A1 représente le niveau maximal. Le livre orange
distingue deux composants: les mécanismes de sécurité et les mesures d'assurance de
sécurité.
1) Les mécanismes de sécurité.
Les mécanismes de sécurité sont relatifs aux niveaux C1, C2 et B1. Ils prennent
la forme de contrôle d'accès aux objets et données pour chaque utilisateur et groupe
d'utilisateurs. Aux niveaux C1 et C2, un contrôle d'accès discrétionnaire ( DAC pour
Discretionary Access Control) est spécifié par le créateur d'un objet. Il y détermine quels
sont les utilisateurs ou groupes qui ont l'autorisation d'utiliser cet objet. Ces informations
sont stockées sous forme de listes de contrôle d'accès ( ACL pour Access Control List ).
Le livre orange définit un second mécanisme de sécurité consacré à la gestion de
numéros de compte. Typiquement, un numéro de compte permet d'identifier un utilisateur
de manière univoque. Le numéro de compte est associé à un mot de passe ou à un objet
physique tel qu'un badge. L'administrateur du réseau doit disposer d'une méthode
rétrospective de vérification des comptes ou des tentatives d'accés au réseau.
La réutilisation des objets est un autre mécanisme de sécurité s'assurant que les
données résiduelles sont complètement effacées de la mémoire et des disques lorsqu'elles
ne sont plus indispensables ou lorsqu'elles sont assignées à un nouvel utilisateur.
DAC, gestion des comptes et réutilisation des objets sont requis pour obtenir les
mentions C1 ou C2. Au niveau B1, il faut en plus disposer de labels de sécurité et de
contrôle d'accès par mandat. Les labels de sécurité, gérés par le système pour chaque
utilisateur et objet, représentent des niveaux hiérarchiques d'accès à l'information ( ex: top
secret, secret, accessible à tous). Le contrôle d'accès par mandat ( MAC pour Mandatory
Access Control) se fonde sur les labels de sécurité pour limiter l'accès aux objets et
fichiers. Un utilisateur n'obtient l'accès à un objet que si son niveau de sécurité est
supérieur ou égal au niveau requis. Un objet de niveau plus élevé lui est interdit même si
un mécanisme de type ACL ou DAC en autorise expressément l'accès. Le MAC est
prioritaire par rapport au DAC. De cette façon, un utilisateur disposant de privilèges
élevés se voit empêcher de rendre un objet accessible pour des utilisateurs disposant de
privilèges insuffisants.
2) Les mesures d'assurance de sécurité
Les niveaux B2, B3 et A1 s'appuient sur le concept de mesures d'assurance de
sécurité lui-même articulé sur trois critères:
- l'architecture du système avec ses exigences de protection entre applications,
- l'intégrité du système obtenue par validation du matériel et du code source,
7
- la mise à l'épreuve des mécanismes de sécurité garantissant une concordance avec les
directives du Département de la Défense.
Windows NT a d'ores et déjà reçu du gouvernement Américain un certificat de
conformité au niveau C2 et pourrait dans de futures versions être agréé pour le niveau B.
La gestion des processus, l'appel aux procédures locales et l'initialisation des threads sont
tous soumis à l'approbation du système de sécurité de NT qui s'avère théoriquement
inviolable. Le système d'exploitation assure la protection de tous les objets et ressources
via des listes de contrôle d'accès. Ni les fichiers systèmes de NT, ni les fichiers critiques
de configuration ne peuvent être détruits.
Plusieurs processus de login peuvent être actifs à la fois, chacun se chargeant de
surveiller un périphérique particulier: une combinaison de touches au clavier, un clic
souris ou une connexion sur le réseau. Le processus de login, dès qu'il a intercepté une
demande d'accès au système, passe l'information relative à l'utilisateur au sous-système
chargé de la sécurité. Le sous-système compare l'information introduite par l'utilisateur
avec celle qui figure dans sa base de données sécurité. En cas d'identification correcte, le
sous-système génère un objet unique qui identifiera l'utilisateur pour toutes les
transactions suivantes. L'objet, appelé jeton d'accès, signale à NT quelles ressources
seront accessibles à l'utilisateur. Après la création du jeton d'accès, le sous-système de
sécurité engendre un processus, lui attache le jeton d'accès et passe le processus au soussystème Win32 qui, en réponse, lance l'exécution de ProgMan, le gestionnaire de
programmes. A partir de ce moment, le sous-système Win32 prend le contrôle de l'écran,
du clavier, de la souris et de tout autre périphérique d'entrée.
Même après la procédure de login, les utilisateurs n'ont accès qu'aux seuls objets
pour lesquels ils ont un niveau de permission approprié. Cela permet à plusieurs
utilisateurs disposant de privilèges différents de se succéder à une même station de travail
en guarantissant une confidentialité totale à chaque utilisateur. Par la même occasion, un
utilisateur retrouve son propre environnement de travail quelle que soit la machine où il se
connecte.
Lorsque NT utilise l'ancien système de gestion de fichiers FAT ( Table
d'Allocation de Fichiers ) hérité du MS-DOS, la plupart des mécanismes de sécurité sont
indisponibles puisqu'ils sont intimement liés au gestionnaire de fichiers NT ( NTFS ). Les
permissions associées aux fichiers sont modifiables par l'intermédiaire du programme File
8
Manager. Dans le Menu Sécurité, l'option Permissions permet de sélectionner un
utilisateur ou un un groupe et de lui associer un jeu de permissions. Grâce à l'option
Propriété, l'administrateur du réseau peut parcourir le réseau et s'approprier des droits sur
un fichier particulier de façon à contrôler son niveau de sécurité.
La gestion des utilisateurs s'opère via le programme User Manager du groupe
'Outils Administratifs'. La boîte de dialogue 'Nouvel utilisateur' offre la possibilité
d'introduire un pseudonyme unique, le nom complet de l'utilisateur, son mot de passe et
une description accessoire. Le compte ainsi créé est unique et est stocké dans le système
sous la forme d'un identificateur de sécurité ( SID pour Security identifier). Un SID est
composé de deux parties: un préfixe unique sert à identifier la machine sur laquelle a lieu
la connexion; le suffixe est défini par le numéro de compte de l'utilisateur.
9
Compression au vol
Autre nouveauté intéressante dans Windows NT 3.51: l’apparition d’un moteur de
compression pour les partitions de type HPFS. Il ne s’agit pas d’un outil à la “ Stacker ”
ou “ DriveSpace ” comprimant au vol tout un disque mais d’un outil de compression
agissant sur chaque fichier ou chaque répertoire séparément. Les risques sont donc
moindres en cas de problèmes majeurs d’endommager tout un volume comprimé. L’autre
atout de taille d’un tel système est que l’espace libre sur un disque dur est toujours
annoncé correctement et n’est pas le résultat d’une estimation ou d’une projection. Pour
compresser une série de fichiers, l’utilisateur les sélectionne dans le File Manager et
choisit l’option Compress/Uncompress dans le menu déroulant. Pendant la compression,
d’une durée plus qu’acceptable, le programme affiche la taille du fichier avant et après la
procédure. Ensuite, les fichiers compressés sont affichés en bleu dans le FileManager et
affublés d’un nouveau flag C pour Compressed. La taille affichée en regard des fichiers
est toujours la taille réelle non compressée. Pour connaître la taille compressée, il faut
aller dans le menu et choisir l’option “ Propriétés ” qui affiche le taux de compression
moyen. On y repère un taux de compression moyen variant entre 30 à 50 % de la taille
originelle. Notre meilleur résultat concernait un fichier graphique de type BMP qui est
passé de 480 à 69 KB soit 14 %. Si la différence d’exécution entre fichiers compressés ou
non est à peine perceptible, la restauration d’un fichier dans son état original demande un
temps fort long. Le gain obtenu en accès disque compense la surchage de travail
provoquée par l’algorithme de décompression. Il nous aura fallu moins de dix minutes
pour convertir un volume de 100 MB et nous y avons gagné 25 MB. Cette opération
s’avère très aisée et fortement appréciable pour des fichiers de type bitmap ou DBF. Pas
de facteur estimé de compression, pas de modification de la taille des clusters, pas de
réorganisation disque à chaque modification du volume compressé, tous les inconvénients
liés à Stacker ou DriveSpace ont ici disparus.
10
Registry : la base de registres
La base de données centrale où Windows NT stocke tous ses paramètres de configuration
s’appelle le Registry. C’est une base de données hiérarchique stockée sous forme binaire
qui évite à Windows de recourir comme par le passé à une myriade de fichiers INI. Les
fichiers INI dans les précédentes versions de Windows étaient dispersés un peu partout sur
le disque, très lent à l’accès et limités en taille à 64 KB. Via Remote Procedure Call, il est
désormais possible à un administrateur réseau d’accéder à une base de données Registry à
travers le réseau.
La façon la plus simple d’accéder à cette information est d’utiliser le Registry Editor
fourni par Microsoft. Il suffit en fait de lancer la commande Regedt32. Regedit affiche
alors une arborescence composée de quatre branches principales.
Hkey_Local_machine contient tous les paramètres spécifiques à un ordinateur (
configuration matérielle et logicielle ) et valables pour tous les utilisateurs se connectant
sur cette machine.
Hkey_Classes_Root énumère toutes les objets OLE, les associations et les raccourcis
Windows NT
Hkey_Users renferme pour chaque utilisateur qui se logge à un ordinateur une liste de
préférences pour la configuration bureau, les applications etc.
Hkey_Current_User pointe en fait sur la branche Hkey_Users correspondant à
l’utilisateur connecté.
11
I/O et File Systems
Windows NT fournit un modèle indépendant du hardware pour toutes ses Entrées/Sorties
reposant sur le concept de multilayered device driver. Le DOS lui, ne dispose que de
drivers monolithiques. NT peut utiliser une large variété de formats de fichiers. Aucun
programme ne peut donc partir du principe qu'il va interagir avec un format de fichier
particulier. Une application ne peut dialoguer directement avec un pilote de périphérique,
elle doit plutôt négocier avec une portion de l'OS baptisée I/O Manager qui à son tour
communique avec le device driver approprié.
Sous NT, toutes les opérations d'entrée et sortie peuvent être asynchrones. Si une lecture
doit être opérée dans un fichier, il n'est pas nécessaire d'attendre la fin de l'opération, il
suffit de poster une demande de lecture, de faire autre chose en attendant et de traiter la
notification qui sera adressée au programme par l'OS quand la lecture sera complète. NT
est un système multitâches préemptif, c'est donc du gaspillage de passer son temps à
attendre la fin d'une opération de lecture disque alors que quelque chose d'autre peut être
réalisé pendant ce temps.
Notons également que tous les drivers Windows NT ont été pensés pour résister au perte
de courant.
Windows NT supporte les File Allocation Table (FAT) traditionnelles du MS-DOS plus
son propre NT File System baptisé NTFS incluant de nouveaux attributs de sécurité plus
la tolérance de fautes. D'autres File System peuvent être chargés dynamiquement comme
le CDFS ( CD-ROM File System), le HPFS (High Performance File System) de l'OS/2 et
le file system du Macintosh. Enfin, n'importe quel service réseau est traité comme un file
system sous Windows NT. NTFS fournit une fonctionnalité unique de data-logging qui lui
permet de récupérer un fichier en cas de perte de courant ou d'erreurs disque. Un examen
intensif d'un volume NTFS ou FAT a lieu à chaque démarrage de la machine. NTFS
supporte les longs noms de fichiers jusqu'à 256 caractères. Ces longs noms sont
automatiquement convertis au format 8.3 lorsqu'ils sont utilisés par un sous-système
Windows 16 bits ou MS-DOS.
Pour les programmeurs, Windows NT fournit une fonction intéressante : les memorymapped files. Elle fournit la possibilité d'ouvrir un fichier de n'importe quelle taille et de
le traiter comme une simple zone mémoire continue même si la taille du fichier dépasse
celle de la mémoire vive, le surplus étant paginé sur disque.
Windows NT offre une fonction de mirroring qui permet de maintenir deux images d'un
même disque sur deux partitions différentes couplées à un seul contrôleur. La première
partition, appelée partition primaire, reçoit les informations disque comme à l'accoutumée.
La seconde partition reçoit une copie de sauveagrde, NT se chargeant de vérifier la
conformité des informations contenues sur les deux partitions.
Un niveau supplémentaire de sécurité des données est le duplexing où deux disques
physiques sont couplés à deux contrôleurs différents qui recoivent et traitent la même
information. cela garantit une sécurité optimale avec simplement une légère pénalité au
niveau des accès disque en écriture.
Le fin du fin est la technologie RAID (Redundant Array of Inexpensive Disks). A chaque
écriture, les données sont distribuées sur l'ensemble des disques secteur par secteur avec
un contrôle de parité supplémentaire sur l'un des disques. En cas d'erreur sur un disque, les
données sont reconstruites en fonction de cette information de parité.
12
Multitâche préemptif, mémoire virtuelle et Multithread
Depuis l'apparition de l'Intel 386, l'utilisation simultanée de plusieurs tâches est devenue
possible. Windows 3.x est un système multitâche mais de type coopératif. Cela signifie
que toutes les applications se partagent une seule queue de messages et que chaque
application a la responsabilité de passer la main aux autres tâches. Si une application ne
prend pas soin de rendre la main aux autres, si elle se perd dans une boucle de longue
durée ou contient un bug qui l'empêche de se comporter correctement, l'ensemble des
autres tâches n'a plus accès au temps CPU. Dans un système multitâche préemptif, c'est le
système d'exploitation lui-même qui, via le Task Scheduler, détermine quelle application
prend le contrôle du processeur en fonction de niveaux de priorité. C'est ce même Task
Scheduler qui distribue le temps CPU entre toutes les tâches. Cela signifie que, même en
cas d'applications errantes ou buggées, les autres tâches peuvent reprendre le contrôle du
CPU sans un fatal Ctrl-Alt-Del. L'application qui tourne en avant-plan a toujours une
priorité un peu plus élevée et les Entrées/Sorties en temps réel ( la saisie au clavier par
exemple) ont toujours une priorité maximale.
Un thread est un processus qui peut être activé ou désactivé par le Task Scheduler sans la
surcharge de travail causée par le démarrage et la terminaison d'une complète application.
Un thread hérite des ressources de l'application parente. Si un programme de traitement de
texte est découpé en threads, cela signifie qu'un correcteur orthographique peut être activé
pendant qu'un autre thread se charge de l'impression en tâche de fond et un autre de la
correction orthographique.
Chaque programme a à sa disposition un espace mémoire adressable linéaire de 2 GB
découpé en pages de 4 KB. Ces pages peuvent être chargées et déchargées de la mémoire,
placées sur disque par le memory manager via une procédure appelée page fault. Chaque
fois qu'une application tente d'accéder à une page qui n'est pas physiquement présente en
mémoire, une page fault est générée. L'executive de NT se charge alors de la charger en
mémoire en déchargeant éventuellement de la mémoire des pages qui n'ont plus été
utilisées depuis longtemps pour faire de la place à la nouvelle application. Le memory
manager fournit un mécanisme de protection de la mémoire empêchant une application de
manipuler un espace mémoire qui appartient à une autre application.
13
OpenGL
Pour entrer en compétition avec les stations de travail graphiques, Windows NT incorpore
un API OpenGL qui fournit du rendu 3D rapide incluant ombrage, texture, positionnement
de l'éclairage. OpenGL est implémenté au niveau du kernel ce qui lui donne des
performances comparables aux meilleures stations Unix. Des cartes graphiques spéciales
commencent à apparaître qui incorporent les fonctions OpenGL au niveau du hardware.
14
Domaine
Un domaine est un groupe arbitraire de serveurs NT. Un de ces serveurs est désigné
comme contrôleur primaire de domaine (PDC ou Primary Domain Controller) . C'est lui
qui centralise une base de données utilisateurs valable pour tous les serveurs du domaine.
Cela évite qu'un utilisateur ne doivent disposer d'un compte et d'un mot de passe différents
sur chaque serveur qui complexifient la tâche de l'administrateur système. Dans un
domaine, chaque utilisateur n'a besoin que d'un seul compte lui fournissant les privilèges
requis sur chaque machine appartenant au domaine voire même sur plusieurs domaines.
Les informations utilisateur sont centralisées sur le PDC qui se charge de toutes les
authentifications.
Replication
Toutes les cinq minutes, le PDC examine sa base de données à la recherche de
changements. S'ils existent, il les transmet à tous les serveurs NT du domaine. ce
mécanisme d'account replication permet de survivre à des défaillances réseau. Une
replication de szervice est également disponible qui permet de copier des informations
entre serveurs comme des logon scripts par exemple ou des données d'utilisateurs. Ces
informations spéciales sont conservées dans deux répertoires particuliers définis comme
import et export. (\WINNT\SYSTEM32_REPL\EXPORT).
15
Différences NT Server et Workstation
Plus de dix connexions simultanées à des fichers et ressources
Compte utilisateur valable sur plusieurs serveurs
Outil administratif de gestion des profils utilisateurs
Réplication de répertoires
Support disque à tolérance de pannes
Support File System Macintosh
Service d'accès distant multi-utilisateur
Support TCP/IP étendu (DHCP, WINS etc...)
Support Netware étendu ( GSNW, FPNW etc ...)
Mise à jour à partir de Lan Manager 2.x
16
Permissions répertoires partagés
No Access
aucun accès au répertoire
List
affiche un répertoire de fichiers et permet de naviguer dans les sous-répertoires
Read
List + utilisateur peut connaître le propriétaire et les permissions d'un directory
Add and Read
Read + possibilité de créer des sous-répertoires, ajouter des fichiers dans un
répertoire ou lui changer ses attributs.
Change
Add et Read + utilisateur peut supprimer le répertoire ou ses sous-répertoires
Full Access
Change + utilisateur peut changer les permissions
Permissions fichiers partagés
No acces
aucun accès au fichier
Read
lire un fichier, voir ses attributs
Change
lire, exécuter un programme, changer attributs, afficher le propriétaire et les
permissions
Full Access
changer ou ajouter des données
Attributs fichiers
D
O
P
R
W
X
Delete
take Ownership
change Permissions
Read
Write
eXecute
17
Windows NT en réseau
NetBIOS
Les couches réseaux de NT sont conçues de manière modulaire, comme un empilement de
briques LEGO. La couche supérieure est généralement gérée via NetBIOS utilisé par
toutes les applications comme le NetDDE, le ClipBook, Chat ou le Messenger. NetBIOS
n’est pas un protocole mais plus une interface software. Il peut exister au-dessus de IPX
ou TCP/IP. S'il faut faire tourner des applications NetBIOS sur un réseau LAN complexe
ou un WAN, les services NetBIOS doivent être reliés au protocole TCP/IP. C'est ce qu'on
appelle NetBIOS-on-TCP/IP ou NBT. NetBIOS n'est pas routable, ne peut fonctionner que
sur un seul segment de réseau mais devient partiellement routable lorsqu'il est utilisé audessus du TCP/IP. La conversion des noms NetBIOS vers des adresses IP s'opère via un
fichier texte LMHOSTS.
Pour tous les échanges d'information entre stations, NetBIOS recourt aux noms de
machines afin d'identifier les membres d'un réseau. Tout se passe par une méthode de
broadcasting où chaque nouvel arrivant sur le réseau diffuse le nom qui lui a été attribué.
Si ce nom n'entre en conflit avec aucun autre nom du réseau, il conserve ce nom. Quand
une machine veut communiquer avec une autre, elle a besoin de faire un autre
broadcasting pour trouver le destinataire. NetBIOS n'est qu'un API, indépendant d'un
protocole.
NetBT utilise les ports TCP et UDP suivants:



UDP port 137 (name services)
UDP port 138 (datagram services)
TCP port 139 (session services)
Universal Naming Conventions
Méthode universelle d’accès à une ressource réseau : \\machine\ressource
Ex : net use d: \\client3\disquec\autoexec.bat
Protocole IPX/SPX
Il s’agit d’un protocole conçu par Novell pour son réseau NetWare. Il signifie
Internetwork Packet Exchange/Sequential Packet Exchange.
Il permet la détection automatique du type de frame ou des adresses réseaux. Il permet la
connexion tant à des réseaux NetWare que NT Server 3.5.
Il est routable et permet donc la connectivité de stations séparées par des bridges ou
routeurs.
Son désavantage le plus marquant est de générer beaucoup de trafic réseau (paquet
broadcast, spoofing etc).
18
Là où un réseau NT utilise SMB (Server Message Block), Netware utilise NCP (Netware
Core Protocol). Les paquets émanant d'une machine NT peuvent être reçus par un serveur
Netware mais le format de paquet ne sera pas reconnu.
Les segments IPX ne sont pas numérotés par défaut et le numéro de réseau doit rester 0
dans la plus grande majorité des cas. Si le numéro de réseau est à 0, NWLink envoit un
paquet broadcast RIP (Routing Information Program) qui recevra une réponse de tous les
serveurs locaux.
Windows NT Server 3.51
Application Server
Communications Server
NetWare 2.x/3.x/4.x
Remote client
NCPs
SMBs
TCP/IP-based
machine
Protocole NETBEUI
NetBEUI signifie NetBIOS Extended User Interface. Il s’agit d’un protocole inventé par
IBM en 1985. A l’époque, l’idée était qu’un réseau LAN devait être segmenté en groupes
de travail de 20 à 200 ordinateurs et que des passerelles devaient être utilisées pour
connecter ces segments ou groupes entre eux.
On retrouve le support NetBEUI dans Windows for Workgroups, Windows NT Server,
Lan Manager et Windows 95 où il est surtout intéressant lorsqu’il est employé dans des
LANs départementaux ou des segments de LAN.
NETBEUI n’est pas routable car il n'a aucun moyen d'identifier un numéro de segment.
C’était le gros problème de la première version de Windows for Workgroups qui
empêchait deux stations de deux segments différents de communiquer entre elles.
NetBEUI est le protocole de transport utilisé par défaut par Windows NT. Il est basé sur
un protocole X/Open appelé SMB pour Server Message Block au-dessus d'un API
NetBIOS. Il est très poerformant pour de petits réseau où des flux bruts d'informations
voyagent très vite entre un client et un serveur via des circuits virtuels.
SMB
Le protocole SMB est utilisé par toutes les solutions réseau Microsoft depuis le début des
années 80. L'ancêtre était le produit MS-Net revendu sous forme de licence à IBM pour
19
son IBM PC Lan ou 3Com pour son 3Plus. Ensuite en 87, IBM et Microsoft ont annoncé
conjointement une solution réseau pour OS/2 compatible avec MS-Net. C'était l'OS/2
LAN Manager. Puis sont encore venus Windows for Workgroups, NT et Windows 95.
Browse Master
Plutôt que de couteux broadcast lors du login, Wfwg et NT utilisent un nouveau concept
de browse master. Une station du réseau ( le PDC ou une machine élue) maintient une
liste de tous les autres serveurs et stations d'un domaine ou d'un groupe de travail. Au
démarrage, une station ne communique plus sa présence qu'à ce browse master, qui à son
tour communique les coordonnées de la station à tous les autres serveurs sans passer par
un paquet broadcast. Si le browse master n'est pas allumé ou connecté au réseau, une
machine, généralement celle disposant des meilleures performances, sera élue comme
nouveau browse master.
SAP
SAP est utilisé par les réseaux Netware depuis la version 2.15. Il s’agit de la méthode
utilisée par un serveur pour annoncer sa présence dans un réseau. Il a une limite théorique
de 7000 stations mais la limite pratique est à peu près de 1500 systèmes.
ODI
ODI est une solution créée par Novell avec la collaboration d’Apple en 1989. ODI
signifie Open Datalink Interface et a pour but d’intégrer les couches transport, réseau et
data-link du modèle OSI. ODI recoure à trois modules correspondant à ces trois couches
pour obtenir les mêmes fonctionnalités que IPX.COM :
 LSL.COM, pour Link Support Layer, qui fournit la conversion entre le driver de la
carte NIC (Network Ethernet Card) et la pile du protocole réseau.
 MLID ou Media Layer Interface Device qui se charge du contrôle de la carte NIC et
régit la communication entre la carte NIC et le module LSL. MLID envoit des paquets
à LSL qui se charge de les communiquer au bon protocole. Le module MLID se
compose de deux parties : MSM, Media Support Module, et HSM, Hardware Specific
Module. Novell fournit le code MSM mais le fabricant de carte doit développer son
HSM : c’est par exemple le NE2000.COM de Novell, SMC8000.COM de Western
Digital ou 3C509.COM de 3Com.
 IPXODI.COM est le composant qui contrôle le protocole IPX/SPX pour la
communication avec le serveur Netware. Au-dessus, il faudra encore utiliser le shell
netx.com pour la connexion à un serveur Netware. D’autres stacks supportant TCP/IP
et/ou AppleTalk peuvent se substituer ou venir compléter IPXODI.
Un fichier batch classique intégrant toutes ces couches ODI ressemble à ceci :
Net Start
cd \NWClient
Lsl
RplOdi
Ne2000
-> ajouté par Windows
-> optionnel, utilisé uniquement par les
stations diskless
-> ou tout autre driver fourni par le
constructeur de cartes NIC
IpxOdi
20
Odihlp
netx
F:
login
-> un patch appliqué par Windows
La configuration des drivers ODI est concentrée dans un fichier NET.CFG dont voici un
exemple :
Link Support
Max Boards 4
Buffers 8 1500
MemPool 4096
show dots=on
#toutes les anciennes commandes acceptées
par l’ancien shell.cfg
file handles=70
Link Driver SMC8000
Frame Ethernet_802.3
Frame Ethernet_II
Frame Ethernet_802.2
Frame Ethernet_SNAP
PORT 280
#l’adresse I/O utilisée par la carte NIC
INT 15
# IRQ utilisée par la carte NIC
MEM c8000
# adresse de la RAM de la carte
NDIS - Network Driver Interface Specification (3.0)
NT communique avec les cartes réseau via la norme NDIS. NDIS permet à plusieurs
protocoles réseau d’être connectés à une seule carte réseau ou, à l’inverse, à un protocole
d’être lié à plusieurs cartes réseau.. NDIS ne gère que des paquets bruts, c’est le protocol
stack qui est chargé de construire des frames, y compris les en-têtes Mac.
Windows Sockets
NetBIOS Support
User Mode
TDI Interface
Kernel Mode
NetBT
TCP
ICMP
UDP
IP
IGMP
ARP
NDIS Interface
Network Card Driver(s)
Network Media
21
The Transport Driver Interface (TDI)
Le Transport Driver Interface a été développé par Microsoft pour fournir une plus grande
flexibilité que des interfaces comme NetBIOS. Il fournit un API de fonctions de base.
Compatibilité réseau
Windows NT Server est capable de collaborer avec:

Novell NetWare

Microsoft Windows for Workgroups

AppleTalk

DEC PATHWORKS™

IBM LAN Server

IBM SNA networks

Microsoft LAN Manager

NFS networks

Remote access services via ISDN, X.25, and standard phone lines

TCP/IP networks, such as UNIX-based networks

The Internet
22
Outils d’administration










User Manager
Server Manager
Disk Administrator
Performance Monitor
Backup
Event Viewer
User Profile Editor
Windows NT Diagnostics
License Manager
Network Client Administrator..
23
Les grandes nouveautés dans Windows NT 3.5
Performance
 réécriture Kernel et GDI
 nouveaux drivers video
 réécriture du sous système 16 bits pour éviter un maximum de thunks vers le
32 bits.
 réécriture des LPC et de la communication InterProCess
 performance réseau
 exigences mémoire réduites
monde
Compatibilité




support étendu bus PCI
support de lecteurs CD-ROM non SCSI comme les Mitsumi, Sony ou Panasonic
compatibilité binaire avec Windows 95
support de multiples VDM (Virtual Dos Machine) pour accroôite la compatibilité Dos
et Windows 16 bits
 chaque application Windows 16 bits peut disposer de son espace adressable séparé
supporte les LFN (Long File Name) sur des partitions FAT
Taille




objets headers réduits de 64 octets par objet
chargement dynamique des services
réduction du nombre de threads du système
l’essentiel des couches “ executive ” est paginé
OLE 2.01
 intégration et partage d’informations entre application 16 et 32 bits
Graphisme, multimédia
 librairie OpenGL
 Inclut Video pour Windows 1.1 et des drivers vidéo 32 bits
Connectivité








Netware Client Software
Netware Compatible Gateway (NT AS)
S.A.P.
Outils de migration Lan Manager et Netware (NT Server seulement)
Réseau
Remote Boot Prom
Nouveaux stacks TCP/IP 32 bits
Nouveaux clients 32 bits Windows for Workgroups
24




TCP/IP printing
Support WinSockets API 1.1
Dynamic Host Configuration Protocol
Windows Naming Services
Remote Access Services
 Support SLIP et PPP
 dial in pour IP et IPX
Stabilité
 inclusion d’un symbolic Kernel debugger
 outil Dump
 outil Recovery en cas de plantage
25
NT 4.O
Windows NT 4.0 se doit avant tout d'apporter à Windows NT le même environnement
graphique, le même shell que Windows 95. Les nouveautés ne s'arrêtent pourtant pas là.
La plus importante amélioration est invisible pour l'utilisateur mais lui garantit des
performances bien plus élevées : le transfert du GDI (Graphical Device Interface) de la
couche user vers la couche kernel. Cela donne des mouvements graphiques plus rapides
puisque le processeur n'est plus obligé de réaliser deux "context switches" entre chaque
opération comme par le passé. Du coup, certaines améliorations ont été apportées aussi à
OpenGL notamment en matière de texture mapping. NT 4.0 Workstation voit l'apparition
de l'Internet Explorer, de DirectX, de profils matériels permettant la sélection de plusieurs
configurations hardware au démarrage comme dans Windows 95, d'une fonction AutoDial
dans les services d'accès distants (RAS). Une nouvelle task list, plus complète, dresse la
liste de la totalité des services et processes tournant en tache de fond et non plus
uniquement la liste des applications en avant plan. Côté NT server, on remarquera surtout
l'apparition de l'Internet Information server, du Multi Protocol Routing (MPR) et d'un
serveur DNS (Domain Name Server). Ce DNS prendra de plus en plus d'importance dans
l'avenir puisqu'il sera la base de la gestion des Directory Services. Le DNS supporte tant
la résolution de noms par URL, que l'Universal Naming Convention. Si le serveur DNS
n'arrive pas à résoudre une coorespondance adresse IP - nom de domaine, il passe la main
à WINS, le Windows Naming Service, qui dynamiquement transfère l'information au
DNS. Côté réseau, notons encore, l'apparition du Point to Point Tunneling Protocol
autorisant la création sur Internet de réseau privé d'entreprises sécurisé par mot de passe,
du distributed COM version 1, des couches TAPI et Unimodem ou du CryptoAPI. Enfin,
RAS multilink est une nouvelle extension des Remote Access Services qui permet de
multiplexer la bande passante de plusieurs appareils hétéroclites et d'en faire un canal
unique à la disposition d'une connexion entre un client et le serveur.
26
Appendice A : MICROKERNEL
L'ancêtre des systèmes d'exploitation portables est indiscutablement MACH.
Windows NT en a largement adopté la philosophie. Dès 1979, Richard Rashid, de
la Carnegie-Mellon University, s'est attaqué à la conception d'un système
d'exploitation modulaire, conçu comme une collection de processus
communiquant entre eux au sein d'un réseau par l'échange de messages. En
1984, il décide d'apporter à Mach la compatibilité UNIX lui offrant ainsi un grand
volume d'applications disponibles. Mach contient déjà des threads, un
mécanisme de communication inter-processus, un support multi-processeurs et
un système original de mémoire virtuelle.
DARPA, l'Agence pour les Projets de Recherche Avancés du
Département Américain de la Défense, s'intéresse bientôt à Mach et finance la
fusion de Mach et du Berkeley Unix 4.2BSD en un seul et unique noyau. Cette
première mouture de Mach débouche en 1986 sur une version dédiée au VAX
11/784, un système composé de quatre processeurs. Suivent rapidement des
versions pour l'IBM PC/RT, Sun 3, Encore et Sequent.
A cette époque, l'Open Software Foundation, un consortium de
fabriquants d'ordinateurs réunis autour d'IBM, DEC et Hewlett Packard tente de
briser l'hégémonie d'AT&T, concepteur d'Unix, sur son produit. L'OSF choisit
Mach 2.5 comme base de son premier système d'exploitation, OSF/1. En 1988, la
version 3.0 est allégée du code Berkeley Unix encore présent dans son noyau et
devient réellement le premier système d'exploitation doté d'un microkernel.
Le microkernel de Mach a été pensé comme une plate-forme susceptible
d'accueillir d'autres systèmes d'exploitation: Unix 4.3 BSD, Unix System V, HP/UX
et MS-DOS. L'émulation des systèmes d'exploitation hôtes est prise en charge
par une couche logicielle tournant en dehors du noyau, dans l'espace utilisateur (
USER SPACE ).
Le noyau est responsable de la gestion de différents niveaux
d'abstraction:
1) Les processus
Pour Mach, un processus consiste en un espace mémoire adressable
contenant le texte et les données d'un programme et dans lequel s'exécutent un
ou plusieurs threads. Mach offre un nombre limité de primitives pour la gestion
des processus. Ces primitives opèrent par l'envoi de messages au noyau central.
Les principales sont:








Create
Création d'un nouveau processus
Terminate
Suppression d'un processus
Suspend
Incrémentation du compteur d'interruption
Resume
Décrémentation du compteur d'interruption avec
débloquage du processus lorsque le compteur est à zéro.
Priority
Attribution d'un niveau de priorité à un thread présent ou
à venir.
Assign
Assigne un thread à un processeur spécifique.
Info
Renvoie une série d'informations sur l'utilisation de la
mémoire, la durée d'exécution du programme etc..
Threads
Renvoie une liste des threads rattachés au processus
courant.
27
Pour pouvoir recevoir des messages, un processus doit demander au
noyau de créer pour lui une sorte de boîte aux lettres appelée un port. Le port est
stocké au sein du noyau et gère une queue de messages.
2) Threads
Un thread est la plus petite entité exécutable. Il appartient à un et un seul
processus et dispose d'une série de registres qui lui sont associés. Tous les
threads relevant d'un même processus partagent le même espace mémoire et
ont accès à la totalité des ressources du processus. Sur un système à processeur
unique, les threads se partagent le temps d'accès au CPU en s'exécutant tour à
tour. Sur un système doté de plusieurs processeurs, plusieurs threads peuvent
être actifs au même moment. La création et la destruction des threads sont
gérées par le microkernel qui s'occupent également de leur synchronisation ou de
leur exclusion mutuelle. Six fonctions spécifiques sont dédicacées à la gestion
des threads:
 Fork
Création d'un nouveau thread
 Exit
Destruction d'un thread
 Join
Suspension d'un thread jusqu'à la terminaison complète d'un
thread 'fils'.
 Detach
Annonce qu'un thread peut s'exécuter indépendamment sans
que le thread initial n'attende sa fin.
 Yield
Permet de passer la main à un autre thread lorsque qu'un thread
donné attend un évènement précis et monopolise inutilement le temps CPU.
 Self
Renvoie des informations sur l'identité du thread appelant.
3) Objets Mémoire
L'objet mémoire est un concept propre à Mach qui désigne une structure
de données localisée dans l'espace adressable d'un processus. Il peut s'agir de
simples données mais aussi d'un fichier. Chaque objet mémoire occupe une ou
plusieurs pages mémoire. Les objets mémoire sont les plus petites unités
constitutives du système de mémoire virtuelle de Mach. Lorsqu'un fichier est
placé dans l'espace mémoire virtuel, il est traité comme un simple objet mémoire
et les opérations de lecture et d'écriture s'effectuent au moyen d'instructions
normales d'accès à la mémoire. Lorsque le processus prend fin, les modifications
apportées au fichier dans la mémoire vive sont automatiquement reportées sur le
fichier stocké sur disque. C'est le procédé baptisé 'mapped files' par les AngloSaxons.
L'utilisation des objets mémoire est particulièrement intéressante sur des
systèmes équipés de plusieurs processeurs. Un objet, un fichier par exemple,
peut n'occuper qu'une seule région physique de la mémoire mais être néanmoins
partagé entre plusieurs processus qui n'en verront qu'une représentation dans
leur propre espace mémoire virtuel.
La manipulation de l'espace mémoire virtuel s'effectue au moyen de
quelques appels au système :




Allocate
Deallocate
Map
Copy
Crée une région dans la mémoire utilisable par un objet.
Libération de la mémoire allouée à un objet.
Place un objet mémoire dansla mémoire virtuelle
Copie d'une région dans une autre portion de la mémoire
28
 Inherit
4) Ports
Le port, une structure de données propre au noyau, est le fondement du
système de communication de Mach. Il s'agit d'une boîte aux lettres protégée.
Lorsqu'un thread désire entrer en communication avec un thread rattaché à un
autre processus, il émet un message en direction d'un port. Le thread destinataire
y relève le message à condition d'en disposer du droit. En effet, seuls les
processus explicitement autorisés peuvent poster ou recevoir des messages
relatifs à un port. Un peu comme les pipes Unix, les ports ne sont
qu'unidirectionnels. Deux ports sont nécessaires pour établir une réelle
communication bidirectionnelle entre un client et un serveur. Les messages ne
sont pas stockés dans le port lui-même mais dans une autre structure du noyau,
la queue de messages. Le port ne contient qu'un pointeur vers cette queue plus
un compteur de messages.
Chaque processus dispose d'un port particulier baptisé port processus
par lequel il interagit avec le noyau. Les appels par un processus à des fonctions
systèmes du noyau se réalisent par l'envoi d'un message transitant par le port
processus. De la même manière, chaque thread dispose de son port personnel
utilisé pour l'appel de fonctions de bas niveau.
Pour chaque processus, le kernel maintient dans son propre espace
mémoire une liste des ports auquel il a accès. Cette liste est appelée liste de
capacité. A la création d'un port, le processus se voit attribuer un des droits
suivants: EMISSION, RECEPTION, EMISSION UNIQUE.
29
30
Téléchargement