Exposé Mathrice IHP 22/10/2003 Les réseaux Windows --------------------------------------------------------------------------- Caveat (désolé) - transparents low tech (mais format très portable ;-) ) - discours un peu obsolète : s'arrête à NT4 - mais encore beaucoup de clients < 2000 dans mon (nos ?) réseaux - je ne suis pas un spécialiste et je parle sous votre contrôle : n'hésitez pas à me reprendre/corriger/compléter - beaucoup d'acronymes : n'hésitez pas à me faire rappeler leur signification - assez d'excuses, on y va --------------------------------------------------------------------------- But de l'exposé : panorama rapide des réseaux Windows - protocoles - domaine vs workgroup - service de noms (WINS) - voisinage réseau --------------------------------------------------------------------------- Sources - docs Microsoft NT 4 (indigeste) - tutorial Samba JRES 99 (M. Vayssade, J.-F. Micouleau), malheureusement pas en ligne - O'Reilly Samba 1st edition. (2nd, parait-il, comporte beaucoup d'ajouts et qui est en ligne : http://www.oreilly.com/catalog/samba2/book/toc.html) - modeste expérience personnelle avec beaucoup de galères expérimentales --------------------------------------------------------------------------- Rappels - historique : deux branches de windows : 1992 1995 1998 2000 2002 WfW ------- 95 --- 98 --- Me NT 3.51 ---- NT 4 ------ NT 5 (2000) -- NT 5.1 (XP) ---- ... - apparition du réseau (partage de ressources : disque et imprimante) avec 3.11 WfW - réseau intégré dès le début pour NT --------------------------------------------------------------------------- Protocoles et couches réseau : un peu de jargon Microsoft NetBIOS : - Network BIOS - d'origine IBM (1984) - API niveau applicatif (couche 5+) : RPC, messagerie, SMB, comptes, etc. NetBEUI : - NetBIOS Extended User Interface - implantation de NetBIOS sur ethernet - couches 3, 4+ - pas routable - broadcast : confiné dans un domaine de broadcast ethernet NBT : - NetBIOS over TCP/IP - ports 135, 137-139 - routable grâce à IP - RFCs 1001, 1002 (!) Windows 2000+ : - nouvelle version du protocole : SMB sur TCP/IP (sans passer par NetBIOS) - port 445 --------------------------------------------------------------------------- Un schéma pour résumer tout ça ---------------------------- | 6 SMB | | -------------------------| | 5 API NetBIOS | | -------------------------| | 4 | | TCP | ports 135, 137-139, 445 | | NetBEUI |-----------| | 3 | | IP | | -------------------------| | 2 ethernet | | -------------------------| | 1 physique | ---------------------------- - une session TCP contient une session NetBIOS - une session NetBIOS contient plusieurs session SMB --------------------------------------------------------------------------- Protocoles et couches réseau : NetBEUI vs NBT NetBIOS : - très verbeux - (ab)use des broadcasts NetBEUI et NBT sont concurrents : - ne pas avoir les deux (sauf si vous aimez générer beaucoup de traffic pour rien :-) ) NetBEUI : - pas routable - broadcast : confiné dans un domaine de broadcast ethernet - certains routeurs (p. ex. Cisco) ont des fonctionnalités pour laisser passer ces broadcasts : pas terrible... NBT : - routable - broadcast : confiné dans un sous-domaine IP (masque sous-réseau) Moralité de terrain : - protocoles : Ne garder que TCP/IP (donc NBT) et virer NetBEUI, Novell (IPX), etc. --------------------------------------------------------------------------- Protocoles et couches réseau : retour sur l'API NetBIOS - adresse d'hôte : nom litteral de l'hôte, pas d'adresse numérique - espace de nom plat - attribution du nom : le premier qui s'enregistre - rien à voir avec le DNS :-( - si on utilise NBT : - il y a une correspondance nom NetBIOS <-> adresse IP (on verra comment c'est fait) - vaut mieux (nom NetBIOS) = (nom DNS) si on ne veut pas de complications - identification du service : nom NetBIOS + code hexa (vague analogie : adresse IP + no de port TCP/UDP) - Pour information, table des identifiants : Name Number(h) Type Usage -------------------------------------------------------------------------- 00 U Workstation Service 01 U Messenger Service <__MSBROWSE__> 01 G Master Browser 03 U Messenger Service 06 U RAS Server Service 1F U NetDDE Service 20 U File Server Service 21 U RAS Client Service 22 U Microsoft Exchange Interchange(MSMail Connector) 23 U Microsoft Exchange Store 24 U Microsoft Exchange Directory 30 U Modem Sharing Server Service 31 U Modem Sharing Client Service 43 U SMS Clients Remote Control 44 U SMS Administrators Remote Control Tool 45 U SMS Clients Remote Chat 46 U SMS Clients Remote Transfer 4C U DEC Pathworks TCPIP service on Windows NT 52 U DEC Pathworks TCPIP service on Windows NT 87 U Microsoft Exchange MTA 6A U Microsoft Exchange IMC BE U Network Monitor Agent BF U Network Monitor Application 03 U Messenger Service 00 G Domain Name 1B U Domain Master Browser 1C G Domain Controllers 1D U Master Browser 1E G Browser Service Elections 1C G IIS 00 U IIS [2B] U Lotus Notes Server Service IRISMULTICAST [2F] G Lotus Notes IRISNAMESERVER [33] G Lotus Notes Forte_$ND800ZA [20] U DCA IrmaLan Gateway Server Service --------------------------------------------------------------------------- Workgroup : concepts - apparition avec 3.11 WfW (1992) - conçu pour marcher "sans rien faire" dans un réseau modeste (PME) - ... et pour broadcaster :-( - on configure chaque machine pour lui dire "tu fais partie du Workgourp (WG) TRUCMUCHE" - pas de hiérarchie dans un WG : réseau d'égal-à-égal. Chaque hôte : - partage ses ressources locales (disque et imprimante) - maintient une base de compte locale pour contrôler l'accès à ses ressources - deux modes de partage d'une ressource : - un mot de passe associé à chaque ressource (mode "share") : ingérable - une liste de contrôle d'accès associé à chaque ressource (mode "user") : acrobatique, car les comptes ne sont pas vraiment centralisés - partage uniquement entre hôtes d'un même WG - tout est confiné dans le même domaine de broadcast - si NetBEUI : frontière = routeur - si NBT : frontière = sous-réseau IP -> un WG ne peut pas s'étendre au-délà d'un sous-réseau IP (resp. routeur) avec le protocole NBT (resp. NetBEUI) -> si on tente naïvement de le faire, on aura deux WG distincts, de même nom, mais qui s'ignorent --------------------------------------------------------------------------- Domaine : concepts - dérive de la notion de WG - apparition avec NT - base de comptes centralisée (SAM : Security Account Manager) - une machine possède l'original de la SAM : le contrôleur primaire de domaine (PDC : Primary Domain Controller) - des machines peuvent maintenir une copie de cette SAM : les contrôleurs secondaires (BDC : Backup Domain Controller) - analogie avec NIS : master + replica - version de l'OS/rôle : - Windows NT Server : PDC, BDC, serveur autonome (anecdotique) - Windows NT Worksation : membres - une machine membre du groupe partage ses ressources locales (disque et imprimante) avec un contrôle d'accès basé sur la base de compte du domaine - domaine = groupe administratif de machines qui partagent une base de compte d'authentification commune située sur le PDC NB : aucun lien avec un domaine DNS --------------------------------------------------------------------------- Base de comptes : Windows 9x autonome - filesystem (FAT) sans notion de propriétaire et de contrôle d'accès - pas de "vraie" base de compte locale : elle sert au profil utilisateur (bureau, etc.) et au contrôle d'accès des partages - mot de passe : un fichier par compte avec un chiffrement trivial : c:\windows\lambda.pwl - pas besoin de se logguer pour utiliser la machine : tout le monde peut faire n'importe quoi, y compris "faire sauter" un compte (destruction du fichier .pwl) --------------------------------------------------------------------------- Base de comptes : Windows NT autonome - filesystem (NTFS) avec notion de propriétaire et de contrôle d'accès par ACL - une base de compte (SAM) locale - obligation de se logguer avec un compte pour utiliser la machine - compte d'admin qui a les plein pouvoirs - il peut y avoir plusieurs comptes d'admin : membres du groupe local "administrateur" - notion de groupes locaux : administrateurs, utilisateurs authentifiés, utilisateurs avec pouvoir (autorisés à partager) --------------------------------------------------------------------------- Participation à un domaine - Windows 9x : peut se configurer pour participer à un domaine NT : - workgroup = nom du domaine NT - ouvrir une session sur un domaine NT - Windows NT : naturellement conçu pour participer à un domaine NT - un compte de machine doit être créé par un administrateur du domaine - la machine joint le domaine moyennant l'autorisation d'un administrateur du domaine - administrateur du domaine : compte administrateur de la base SAM du PDC - participation à un domaine : on ouvre une session en utilisant un compte global (authentification sur un PDC/BDC) -> accès au ressources partagées par les membres du domaine --------------------------------------------------------------------------- Base de comptes : Ouverture de session dans un domaine - Windows 9x : - deux authentifications successives (masquées en une seule si même mot de passe -> propagation du mot de passe) - authentification auprès de la base du domaine - authentification de session locale (fichier .pwl) - l'ordre des authentifications peut se choisir (intérêt ?) - Windows NT : - trois champs dans la fenêtre d'ouverture de session : login, password, domaine - champ domaine : choix entre base de compte locale ou domaine Exemple : la machine 'RIESLING' participe au domaine 'ALSACE' : deux choix pour le champ domaine : 'RIESLING' ou 'ALSACE' compte local à la machine : RIESLING\lambda (1) compte global du domaine : ALSACE\lambda (2) (1) pas d'accès aux ressources du domaine (2) accès aux ressources du domaine - les deux comptes sont physiquement différents (identifiants numérique différents) - analogie unix : utilisation d'un compte local dans /etc/passwd vs utilisation d'un compte NIS - Résumé (NT) : Si la machine 'RIESLING' est configurée pour participer au domaine 'ALSACE', j'ai plein de choix pour me logguer sur 'RIESLING' : - RIESLING\Administrateur - RIESLING\lambda - ALSACE\Administrateur - ALSACE\lambda - ALSACE\eh NB : Ça fait autant de profils utilisateur différents --------------------------------------------------------------------------- Base de comptes : groupes locaux NT (suite) - définis dans la base SAM locale d'une machine - peut contenir des comptes globaux - peut contenir des groupes globaux Exemple : - les machines 'RIESLING', 'EDELZWICKER', 'TOKAY' participent au domaine 'ALSACE' - compte global 'lambda' dans domaine 'ALSACE' - groupe global 'Administrateurs' dans domaine 'ALSACE' - compte global 'eh' dans domaine 'ALSACE', membre du groupe global ALSACE\Administrateurs) - groupes locaux 'Administrateurs' et 'Utilisateurs avec pouvoirs' dans chacune des machines 'RIESLING', 'EDELZWICKER', 'TOKAY' Exemple 1 : limiter les droits de partage à une machine 'RIESLING\Utilisateurs avec pouvoirs' contient 'ALSACE\lambda' 'EDELZWICKER\Utilisateurs avec pouvoirs' ne contient pas 'ALSACE\lambda' 'TOKAY\Utilisateurs avec pouvoirs' ne contient pas 'ALSACE\lambda' -> l'utilisateur 'ALSACE\lambda' n'aura le droit de partager une ressource que sur la machine 'RIESLING'. Exemple 2 : l'administrateur du domaine est administrateur de toutes les machines 'RIESLING\Administrateurs' contient 'ALSACE\Administrateurs' 'EDELZWICKER\Administrateurs' contient 'ALSACE\Administrateurs' 'TOKAY\Administrateurs' contient 'ALSACE\Administrateurs' -> l'utilisateur 'ALSACE\eh', membre de 'ALSACE\Administrateurs', sera administrateur des machines 'RIESLING', 'EDELZWICKER', 'TOKAY' - différent d'unix ou les comptes root sont toujours locaux (root NIS déconseillé ou impossible (je ne sais plus) --------------------------------------------------------------------------- Service de noms : WINS - NBT : NetBIOS sur TCP/IP - NetBIOS désigne une machine par un nom (nom NetBIOS) - IP désigne une machine par une adresse numérique (adresse IP) - un client (de ressource) ne peut pas atteindre un serveur (de ressource), connu par son nom NetBIOS, par broadcast s'il est dans un autre sous-réseau IP : les broadcasts IP ne traversent pas les routeurs - nécessité d'avoir une correspondance (nom NetBIOS) <-> (adresse IP) couche 5 (session) nom NetBIOS ^ | | WINS | v DNS couche 3 (réseau) adresse IP <-----------> nom DNS - solution : - fichier LMHOSTS (Lan Manager Hosts) sur chaque machine -> difficile à maintenir - NetBIOS Name Service (NBNS) : RFC, schéma client/serveur, dynamique - WINS (WIndows Name Service) : implémentation Microsoft de NBNS - serveur WINS : Windows NT Server, pas forcément PDC/BDC - par configuration (manuelle ou DHCP), chaque machine connaît : - son nom NetBIOS - son adresse IP - l'adresse IP du serveur WINS - le client WINS sait contacter le serveur WINS à travers un routeur car il connaît son adresse IP - tous les clients WINS enregistrent leur couple (nom NetBIOS, adresse IP) - un client de ressource qui veut contacter un serveur connu par son nom NetBIOS demandera au serveur WINS la résolution de ce nom en adresse IP - WINS réduit notablement les broadcasts -> utile même s'il n'y a qu'un sous-réseau - le serveur WINS sait quelles machines sont les PDC/BDC --------------------------------------------------------------------------- Voisinage réseau : silence, le local master browser recense - but : présentation graphique à l'utilisateur de ce qui est présent dans le sous-réseau (à l'origine) : - workgroups ou domaine - serveurs de ressource (membres du WG/domaine) - ressources (disque, imprimante) - tout se passe à l'intérieur d'un même domaine de broadcast (sous-réseau IP) - une machine (par sous-réseau, forcément) est chargée de recenser tout ça : le maître-explorateur (master browser) - comme ça se passe localement à un sous-réseau, on l'appelera "local master browser" (LMB) - chaque machine localise par broadcast le LMB de son sous-réseau, puis enregistre tous les services NetBIOS qu'elle offre - elle demande également au LMB la liste de trois LBB - quand un utilisateur clique sur "voisinage réseau", la machine interroge un LBB choisi aléatoirement parmi ces trois pour récupérer la liste des différentes ressources - une machine qui n'a pas le service de partage de fichiers ou d'imprimante ("service serveur") d'activé n'apparaîtra pas dans la liste --------------------------------------------------------------------------- Voisinage réseau : élection du local master browser - le LMB est élu (!) - il a des suppléants : local backup browser (LBB) - par défaut, toutes les machines sont des LMB potentiels - il est possible d'empêcher une machine de devenir local browser : cliquodrome pour 9x, base de registres pour NT - il est possible de désigner une machine comme "master browser préférentiel" (NT, base de registres) - critères d'élection : - le plus fort gagne : NT 4 S > NT 3.51 S > NT 4 WS > NT 3.51 WS > 9x > WfW - si ex-aequo : celui qui est allumé depuis le plus longtemps gagne - tout ça se passe par broadcast - élection de LMB provoquée lorsque : - un "fort" se réveille : master browser préférentiel (pas sûr qu'il gagne...) - quand une machine ne peut pas localiser un LMB - si un LMB reçoit un datagramme d'une autre machine indiquant qu'elle est LMB... - comment sont désignés les LBB : je ne sais pas ! - une machine "forte" (XP, 2000, samba) mal configurée ou sauvage peut devenir LMB et troubler votre quiétude --------------------------------------------------------------------------- Voisinage réseau : dynamique mais lymphatique - une machine qui s'allume s'enregistre auprès du LMB - elle s'enregistre toutes les 1', 2', 4', 8' puis toutes les 12' - une machine qui s'éteint proporement se désenregistre auprès du LMB - un LBB se met à jour auprès du LMB toutes les 15' - si un LMB n'entend pas d'annonce pendant 3 cycles (3 x 12' = 36'), il retire la machine de la liste -> si une machine ne s'éteint pas proprement, elle apparaîtra au maxi 36' + 15' = 51' dans le voisinage réseau alors qu'elle est injoignable. Top ! ("allô, y'aurait pas un problème réseau ? Je clique sur trucmuche et j'ai une boîte d'erreur réseau qui apparaît") - si un LMB se plante, un LBB s'en rendra compte au maxi après 15' et provoquera une élection... - etc. --------------------------------------------------------------------------- Voisinage réseau : comment traverser les routeurs - un WG ne peut pas s'étendre au-delà d'un sous-réseau - un domaine le peut, grâce à son PDC - le PDC est forcément le Domain Master Browser (DMB) - le DMB fédère tous les LMB : si le LMB est un NT (Server ou Workstation), il sait localiser (WINS) puis dialoguer avec le DMB pour échanger les listes de ressources - s'il n'y a pas de NT d'allumé dans le sous-réseau et donc que des 9x, c'est rapé pour l'échange avec le DMB... - au bout de quelques cycles, chaque LMB a construit sa liste dans son sous-réseau, l'a remonté au DMB puis a récupéré auprès du DMB la liste de chacun des autres LMB : la liste est complète - ATTENTION : un samba est par défaut configuré avec un poids tel qu'il gagne l'élection du LMB -> un samba non maîtrisé peut fiche la pagaille --------------------------------------------------------------------------- Considération pratiques - protocole : utiliser NBT et bannir à vie NetBEUI - un domaine est beaucoup plus structurant qu'un workgroup : dédier une machine pour le PDC - si l'on a plusieurs sous-réseaux (vlans) : WINS obligatoire - si l'on n'a qu'un sous-réseau : WINS conseillé (limite les broadcasts) - le PDC fait très bien WINS (même machine) - si l'on a plusieurs sous-réseaux (vlans), pour le voisinage réseau : il faut au moins une machine NT qui soit tout le temps allumée dans chaque sous-réseau pour avoir un LMB qui sait communiquer avec le DMB (solution : une machine multi-homed ?) - essayer au maximum de désactiver la participation à l'élection de LMB de toutes les machines que vous ne maîtrisez pas (fastidieux) - si une machine n'est pas dans le voisinage réseau, l'utilisateur peut toujours tenter de la joindre par Démarrer > Rechercher > Ordinateur - Samba peut faire PDC, WINS, filer, printhost -> intégrer un OS que l'on aime bien (unix) dans un monde Windows que l'on sait en général mal administrer (méconnaissance de la "boîte noire") --------------------------------------------------------------------------- Outils de "diagnostic" - configuration IP, WINS, DNS : - ipconfig /all - son avatar graphique (9x) : winipcfg - NetBIOS : - nbtstat - Resource Kit NT 4 : - browmon.exe - browstat.exe - localiser le LMB d'un sous-réseau (mais pas de tous les sous-réseaux :-( ) - outils samba : - nmblookup : équivalent de nbtstat - bref, c'est pauvre --------------------------------------------------------------------------- Le futur proche (que je ne pratique pas) - Active Directory (LDAP + extensions) avec que des clients >= 2000 - plus de NetBIOS, mais SMB/TCP (port 445) - utilisation du DNS dynamique - Samba 3 + LDAP ---------------------------------------------------------------------------