Systeme et reseau

Systeme et reseau

COURS SYSTEMES et RESEAUX Administration et maintenance RSA Concepteur d’Applications Reparties Controle Document Historique des versions Version Date Documents remplaces description / details 1 12/09/2006 Original TABLE des MATIERES PREMIERE PARTIE : INTRODUCTION AUX SYSTEMES D’EXPLOITATION 7 1. Generalites 7 2. Historique 8 3. Concepts de base 11 3. 1 Processus 11 3. 2 Fichiers 12 3. 3 Appels systeme 14 3. 4 Shell 15 4. Concepts avances 15 4. 1 Micro-noyau 15 4. 2 Threads 15 4. 3 Multiprogrammation symetrique 15 4. 4 Systemes repartis 16 4. 5 Architecture orientee objet 16 5. Exemples de systemes d’exploitation 16 . 1. Windows NT 16 5. 2. Unix 18 6. Bibliographie 22 7. Generalites sur les systemes d’exploitation 23 7. 1 Exercices 23 7. 2 Solution des exercices 23 DEUXIEME PARTIE : ADMINISTRATION ET MAINTENANCE DES RESEAUX ET SYSTEMES SOUS UNIX 26 1. Introduction 26 2. L’avenir d’Internet : IPv6. 26 2. 1 Pourquoi une nouvelle version ? 26 2. 2 Comment ? 27 2. 3 Les plus 27 3. Les reseaux de machines Unix 28 3. 1 La securite d’acces 28 3. 2 Droits des utilisateurs. 28 3. 2. 1 Le groupe d’utilisateurs Unix, utilite pratique 29 3. 3 Les bits S. UID et S. GID 29 3. 4 Le super-demon de gestion des services 30 3. 4. 1 Inetd. 30 . 4. 2 Xinetd 31 3. 5 Services IP classiques 32 3. 5. 1 Fichiers et

Désolé, mais les essais complets ne sont disponibles que pour les utilisateurs enregistrés

Choisissez un plan d'adhésion
trous de securite 32 3. 5. 1. 1 Le fichier /etc/hosts. equiv 32 3. 5. 1. 2 Le fichier . rhosts 32 3. 5. 2 telnet 32 3. 5. 2. 1 Description. 32 3. 5. 2. 2 Telnet aujourd’hui. 33 3. 5. 3 FTP 33 3. 5. 3. 1 Description. 33 3. 5. 3. 2 Configuration de FTP. 34 3. 5. 3. 3 Configuration de FTP : /etc/ftpaccess. 34 3. 5. 3. 4 Le fichier . netrc 36 3. 5. 4 Sendmail, SMTP et POP 37 3. 5. 4. 1 Un resume rapide. 37 3. 5. 4. 2 Les alias et listes de diffusion basiques 38 3. 5. 4. 3 Sendmail detaille. 38 3. 5. 4. 4 Les mailing listes gerees par des robots. 0 3. 5. 4. 5 Les rapports de sendmail avec le DNS, securisation et delegation inverse. 41 3. 5. 4. 6 Les domaines virtuels de messagerie. 41 3. 5. 4. 7 Apres l’envoi, la reception : le protocole POP3. 45 3. 5. 5 NFS 45 4. Exploitation 46 4. 1 Gerer les utilisateurs 46 4. 1. 1 les outils 46 4. 1. 2 les quotas. 46 4. 1. 3 invalider un compte 47 4. 2 Gerer les machines 47 4. 2. 1 Traces des utilisations 47 4. 2. 2 Traces des utilisations/services 47 4. 2. 2. 1 syslogd et syslog 47 4. 2. 2. 2 les services a mettre sous surveillance. 48 4. 2. 3 Installer/gerer les applications 48 4. 3 Gerer le reseau 49 4. 3. Une architecture en fonction des options 49 4. 3. 2 Les clients diskless 49 4. 3. 3 Les clients mobiles 49 4. 3. 4 Les clients X11 50 4. 3. 5 Clients des protocoles microsoft : le serveur SAMBA 50 4. 3. 6 Clients du protocole Apple : netatalk 50 5. Administration 50 5. 1 Systeme 50 5. 2 Reseau 51 5. 3 Les outils d’administration reseau 51 6. Maintenance 52 6. 1 Les pannes materielles 52 6. 2 Les pannes logicielles 53 6. 2. 1 Droits et versions 53 6. 2. 2 Demons 53 6. 2. 3 Routage et DNS 54 6. 3 Les actions « sauvages » 54 6. 3. 1 le boot personnel 54 6. 3. 2 le changement d’adresses IP 54 6. 3. 3 virus 55 6. 3. Applications pirates (jeux) 55 TROISIEME PARTIE : ADMINISTRATION ET MAINTENANCE SOUS WINDOWS 55 Tutorial de deploiement d’un domaine Active Directory 2003 55 1. Presentation 56 1. 1. Introduction 56 1. 2. Pre Requis 56 1. 3. Materiels 57 2. Installation du Serveur – Windows Server 2003 57 2. 1. Boot et Partitions du Disque Dur 57 2. 1. 1. Boot et demarrage de l’installation 57 2. 1. 2. Partitions du Disque dur 59 2. 2. Installation de Windows 2003 Server 60 2. 2. 1. Copie des fichiers d’installation. 60 2. 2. 2. Validation des parametres 61 2. 3. Configuration de la 2eme partition. 70 3. Configuration du DNS 75 3. 1. Introduction 75 . 2. Implementation du serveur DNS 75 3. 2. 1. Configuration des parametres TCP/IP 75 3. 2. 2. Configuration du suffixe DNS principal 76 3. 2. 3. Installation du service DNS 79 4. Installation d’Active Directory 91 4. 1. Introduction 91 4. 2. Installation du service d’annuaire Active Directory 92 5. Configuration du DHCP 101 5. 1. Introduction 101 5. 2. Implementation du Serveur DHCP 101 5. 2. 1. Mise en place du service DHCP 101 6. Configuration des clients DNS 114 6. 1. Introduction 114 6. 2. Configuration des parametres clients 114 6. 2. 1. Configuration des parametres TCP/IP 114 6. 2. 2Configuration du suffixe DNS principal 116

Validez la modification puis redemarrez votre ordinateur. 118 7. Integration des clients au domaine 118 7. 1. Introduction 118 7. 2. Integration du client au domaine 118 8. Configuration du redirecteur DNS 122 8. 1. Introduction 122 8. 2. Implementation des redirecteurs DNS 122 8. 2. 1. Redirection sur le domaine parent 122 9. Mise en place du Sysprep pour les clients 125 9. 1. Introduction 125 9. 2. Preparation du client avant le sysprep 125 9. 2. 1. Preparation du modele 125 9. 3. Preparation du Sysprep 129 9. 3. 1. Creation du fichier reponse 129 9. 3. 2. Execution du Sysprep 140 10. Mise en place du Ghost 143 10. 1. Introduction 143 0. 2. Installation de Norton Ghost 143 10. 2. 1. Sur votre Controleur de Domaine : 143 10. 3. Creation des disquettes de demarrage 149 10. 3. 1. Utilisation de l’assistant 149 10. 4. Creation de l’image cliente 155 10. 4. 1. Creation d’une session de capture de l’image Ghost cliente 155 10. 5. Deploiement de l’image Ghost 156 10. 5. 1. Creation de la session de diffusion d’image : 156 1. Qu’est-ce qu’une strategie de groupe ? 157 1. 1. Presentation des strategies de groupe 157 1. 2. Scripting 158 1. 3. Creation d’une GPO a l’aide de la console gpedit. msc 158 1. 4. Installation de la console de gestion des strategies de groupe 159 1. . Configuration ordinateur 160 1. 6. Configuration utilisateur 160 1. 7. Stockage des parametres d’une GPO 161 2. Application d’une strategie de groupe 162 2. 1. Les modeles d’administration 162 2. 2. GPO par defaut et application selon les objets 163 2. 3. Heritage d’une GPO 163 2. 4. Filtrage a l’installation de la GPO 164 2. 5. Delai d’application 164 3. Comment configurer les parametres des GPO ? 165 3. 1. Options des parametres : non configure, active, desactive 165 3. 2. Exemple de parametre : la redirection des fichiers 165 4. Quelques outils en lignes de commandes bien utiles 166 4. 1. GPUpdate 166 4. 2. GPResult 166 4. 3.

Rapport des GPO 167 5. Des limitations a respecter 167 5. 1. Limiter les GPO 167 5. 2. Limiter les groupes de securite 167 5. 3. Limiter les liens multidomaines 168 Conclusion 168 Les strategies de restrictions Logicielles 168 Presentation 168 Comment ca marche ? 169 1. Installation 169 1. 1 Activation 169 1. 2 Premiers parametrages 171 1. 3 Configuration 173 1. 3. 1 Les niveaux de securite 173 1. 3. 2 Regles Supplementaires 174 2. Conclusion 180 2. 1 A ne pas faire 180 2. 2 Conclusion 181 1. Les profils itinerants 183 1. 1 Qu’est ce que c’est ? 183 1. 2 Quelques recommandations 184 1. 3 Et la securite ? 186 1. 4 Comment le configurer ? 87 1. 5 Synchronisation 189 1. 6 Utilisez les GPO ! 189 2. Redirection de dossiers 192 2. 1 Rediriger des dossier ? 192 2. 2 Quelques recommandations 195 2. 3 La redirection de base 197 2. 4 La redirection avancee 198 2. 5 Les fichiers hors connexion 199 3. Les Quotas 200 3. 1 Avec des GPO 201 3. 2 Directement sur le serveur 202 Conclusion 204 PREMIERE PARTIE : INTRODUCTION AUX SYSTEMES D’EXPLOITATION 1. Generalites Un systeme informatique est un systeme complexe dont la gestion directe par l’utilisateur est quasi impossible (par exemple, l’utilisateur doit-il se preoccuper de la maniere dont un fichier est enregistre sur disque ? . Il y a donc necessite d’intercaler une couche logicielle de « gestion » de la machine ce qui nous amene au concept de machine virtuelle. Un systeme informatique peut alors etre represente comme une superposition de couches : [pic] On peut entrevoir deux finalites (a priori) pour un systeme d’exploitation : – transformer une machine physique en une machine confortable pour l’utilisateur – gerer les ressources de la machine Les premiers ordinateurs ne possedaient pas de systemes d’exploitation ; les utilisateurs de l’epoque devaient entrer manuellement et dans le systeme binaire leurs donnees et leurs programmes.

La situation est maintenant bien differente et l’utilisateur a, a sa disposition, une interface, generalement graphique, qui lui permet une utilisation tres confortable de l’ordinateur. Le systeme d’exploitation rend a l’utilisateur une gamme de services : assistance dans la creation de programmes, execution de programmes, acces aux dispositifs d’entrees/sorties, acces controle au systeme informatique, acces controle aux fichiers, detection d’erreurs, comptabilite des temps d’utilisation de ressources, …

En ce qui concerne la seconde fonctionnalite, considerons, sur une machine, plusieurs programmes qui doivent utiliser des ressources : processeur(s), memoire, horloges, disques, terminaux, imprimantes,… Il est clair qu’un chef d’orchestre est necessaire; c’est le systeme d’exploitation qui jouera ce role en tant que gestionnaire des ressources (controle et ordonnancement). Par exemple si trois programmes veulent imprimer sur la meme imprimante, il ne faut pas que leurs sorties se melangent; le systeme d’exploitation effectuera les taches suivantes : stockage des fichiers de sortie, attribution de priorites, prise en main des orties, destruction des fichiers tampons apres impression. 2. Historique – 1ere generation d’ordinateurs (1945 – 1955) Les machines de cette epoque prehistorique etaient constituees de tubes a vide et il n’y avait pas de systeme d’exploitation (1er SE Gene Amdahl pour un gros ordinateur IBM 704, 1954). Les programmes etaient ecrits en langage machine car les langages de programmation etaient encore inconnus (cf. machine de Turing). L’utilisation de cartes perforees a considerablement ameliore le contact avec les machines. Les programmes etaient executes les uns apres les autres en deux temps : chargement + execution : pic] – 2eme generation d’ordinateurs (1955 – 1965) Les machines sont constituees de transistors et le mode de traitement est le traitement par lot (Batch Processing). FORTRAN (invente par John Backus) est le premier langage de programmation ; les programmes sont ecrits dans ce langage sur cartes perforees (une instruction par carte) ce qui constitue un « job ». Pour reduire le temps d’attente, le Batch a utilise une decouverte de l’epoque : les bandes magnetiques. Entrees et sorties sont mises sur bandes ce qui reduit considerablement les temps d’attente et permet de rentabiliser l’unite centrale. pic] Les premiers systemes sont FMS (Fortran Monitor System) et IBSYS (sur IBM 7094). – 3eme generation d’ordinateurs (1965 – 1980) Les machines sont constituees de circuits integres et utilisent le concept de multiprogrammation. De plus les machines evoluent dans le cadre de familles « compatibles » (exemple IBM 360 -; 370 -; 4300 -; 3080 -;3090). Les faits nouveaux sont : – la presence en memoire de plusieurs programmes ou morceaux de programmes : la memoire est decoupee en partitions [pic] – l’utilisation d’ordinateurs secondaires (canaux) pour les entrees/sorties

Les differents « jobs » sont executes jusqu’a ce qu’une operation d’entree/sortie survienne. [pic] Dans ce cas, l’execution du « job » courant est interrompue et c’est un autre « job » qui sera execute. [pic] Les caracteristiques de ces systemes a multiprogrammation sont : • complexite grandissante du systeme; plus grande taille • gestion de la memoire partagee • meilleur equilibrage de la charge des differentes ressources • meilleures performances (temps de reponse) pour les travaux courts. Les systemes a temps partages (time sharing) sont des variantes modernes des systemes a multiprogrammation.

Chaque programme se voit attribuer un quantum de temps D ; il gardera le benefice du processeur pendant ce temps, mais ensuite il devra laisser la place a un autre programme; il retrouvera le processeur plus tard pour une nouvelle execution pendant le temps D. [pic] Tout se passe, sur ces systemes, comme si un utilisateur (programme) a la machine pour lui tout seul (mais fonctionnant plus lentement). De fait, l’utilisateur ne se rend pas compte qu’il n’est pas seul a utiliser la machine ; dans les applications interactives cela se voit encore moins.

Le temps d’elaboration T1 d’une requete (y compris la reflexion de l’utilisateur) est nettement plus long que le temps d’execution T2 de la requete; on peut donc utiliser le temps T1 pour servir d’autres usagers. [pic] Les premiers systemes utilisant le concept de time sharing ont ete : • CTSS (MIT 1962 sur IBM 7094) • MULTICS : le projet MULTICS (MULTiplexed Information and Computing Service) a ete conduit par le MIT, Bell Labs et GE ; ce projet tres lourd a produit des idees neuves, mais des partenaires ont abandonne (comme GE). UNIX (1970 Thompson et Ritchie) a repris des idees de MULTICS dans le cadre d’un systeme moins ambitieux mais plus realiste. – 4eme generation d’ordinateurs ( 1980 – 1994) C’est l’epoque des ordinateurs personnels et des reseaux. La miniaturisation s’accentue (LSI, VLSI, ULSI, ultra large scale integreted semi-conductor) ; la fabrication industrielle en grande serie fait baisser les prix. On voit apparaitre des stations de travail (generalement non Intel, UNIX) et des micro-ordinateurs (generalement Intel, MS DOS). Les reseaux suscitent des systemes d’exploitation nouveaux : systemes d’exploitation de reseaux (le reseau n’est pas transparent) • systemes d’exploitation repartis (le reseau est transparent) 3. Concepts de base 3. 1 Processus Le concept de processus est fondamental. Il peut etre defini de plusieurs manieres (pas toujours equivalentes) ; on se contentera ici de la definition intuitive suivante : un processus est un programme en cours d’execution ce qui implique qu’un processus contient les ingredients suivants : • code executable • donnees du programme • pile du programme • valeurs de registres du processeur (compteur ordinal, pointeur de pile, mot d’etat) • valeurs ’autres registres si necessaires • autres informations memorisees si necessaire Si l’on considere le cas d’un systeme en temps partage, il y aura plusieurs processus sur la meme machine ; ces processus seront repertories dans une table des processus (qui est un vecteur de structures). Lorsqu’un processus n’est pas en execution effective sur un processeur (generalement il y a moins de processeurs que de processus), il est memorise : stockage des informations necessaires a la reprise de l’execution effective: on parle alors de blocage ou de suspension (notions en fait differentes comme on verra plus loin).

Un processus peut en creer un autre (ou plusieurs) ce qui implique une filiation de processus. Un processus peut perdre son « pere » (mort ou terminaison de celui-ci), il devient alors « orphelin » et generalement il est « adopte » par un autre processus. [pic] La creation de processus est une operation speciale qui necessite de faire appel au systeme d’exploitation car il faut mettre a jour un certain nombre de donnees de gestion du systeme. Le processus geniteur, pour creer un nouveau processus, effectue un « appel systeme », c’est a dire invoque une « routine systeme » appelee primitive.

C’est d’une maniere generale le cas pour d’autres operations de creation, de destruction, d’utilisation, de fin d’utilisation d’objets : a chaque fois le processus concerne appelle une primitive. Un processus appartient a un proprietaire (owner) identifie par un uid (user identifier) qui est un entier code usuellement sur 16 ou 32 bits. Les utilisateurs sont eux-memes regroupes en des groupes d’utilisateurs; chaque groupe est identifie par un gid (group identifier). 3. 2 Fichiers Les fichiers sont usuellement organises dans des structures arborescentes : [pic]

Avec cette methode (simple au demeurant), un fichier possede un nom unique qui est le chemin qui permet d’y acceder a partir de la racine. Ce nom est le  » pathname « . Exemples : sous UNIX /B/X/F (la racine est /) sous MSDOS c:BXF (la racine est le disque dur C:) Les fichiers sont proteges de diverses manieres. Dans les systemes actuels comme UNIX, • 3 operations sont prises en consideration : lecture, ecriture, execution • 3 categories d’utilisateurs sont definies : proprietaire, groupe auquel appartient le proprietaire, autres utilisateurs. Ce qui permet de definir les droits avec 9 bits : [pic]

Un processus peut acceder a un fichier; si sa demande est accordee par le systeme d’exploitation, il recoit en retour un descripteur de fichier (handle). Certains systemes admettent l’existence de fichiers speciaux : • les fichiers representant les peripheriques d’entree/sortie (abstraction commode) ; ainsi sous UNIX il existe 3 fichiers speciaux standards : o 0 : standard input (stdin), usuellement le clavier o 1 : standard output (stdout), usuellement l’ecran o 2 : standard error (stderr), usuellement l’ecran • les tuyaux ou tubes ou conduits (pipes) qui sont des fichiers de communication entre deux processus. pic] 3. 3 Appels systeme Le systeme d’exploitation contient une bibliotheque de procedures ou  » primitives « . Lorsque un processus appelle une primitive (effectue un appel systeme), on passe du mode utilisateur au mode systeme (ou superviseur). [pic] Ainsi, si un processus desire effectuer une lecture dans un fichier, il appellera la primitive READ dont la syntaxe pourrait etre : count = read(file, buffer, nbytes) Trois parametres sont passes au systeme : le nom du fichier (file), l’endroit ou on mettra en memoire le resultat de la lecture (buffer) et le nombre d’octets a lire (nbytes).

Le code de retour count donne le nombre d’octets effectivement lus (et le code -1 en cas d’erreur). 3. 4 Shell Le shell est l’interface permettant d’utiliser directement les fonctionnalites du systeme d’exploitation en offrant a l’utilisateur un langage de commande textuel ou graphique. Ainsi, sous UNIX, la suite de commandes cat file1 file2 file3 | sort > /dev/lp & indique que l’utilisateur demande en arriere plan (&) de concatener 3 fichiers file1, file2, file3, puis de trier le resultat par ordre alphabetique des lignes (sort) et d’envoyer le resultat dans le fichier special /dev/lp (imprimante).

Les signe | indique l’utilisation d’un tube (pipe); en effet cat et sort sont deux procedures qui donnent naissance a des processus : le processus cat genere des donnees qui sont transmises, via le tube, au processus sort (cat remplit le tube, sort le vide). 4. Concepts avances Les systemes d’exploitation modernes presentent de nouvelles caracteristiques : micro-noyau, threads, multiprogrammation symetrique, systemes repartis ou distribues, architecture orientee objet,… 4. 1 Micro-noyau Les fonctionnalites des systemes d’exploitation ont considerablement augmente, ce qui a conduit a des systemes d’exploitation de taille imposante.

L’importance de cette taille a necessite dans un premier temps de placer en memoire centrale un noyau indispensable et laisser en memoire secondaire (sur disque) des fonctionnalites plus secondaires. Cette tendance s’est accentuee dans l’idee du micronoyau (micro-kernel) ; le micronoyau est constitue de fonctionnalites essentielles (adressage, communication entre processus) et les autres fonctionnalites sont organisees en bibliotheques de procedures a laquelle s’adresse, en cas de besoin, le micronoyau ; ces procedures sont considerees comme des programmes ordinaires et peuvent resider localement ou sur une autre machine reliee par reseau. . 2 Threads Il n’y a pas encore de mot francais pour designer les threads. Un processus peut etre decoupe en unites executables independantes qui correspondent aux threads. Un thread s’execute de maniere sequentielle (il est compose d’instructions machine), par contre plusieurs threads d’un meme processus peuvent s’executer simultanement. Pour faciliter l’expose, on ne fera pas de distinction entre processus et threads lorsque cela n’apportera rien de particulier ; par contre la difference sera mise en evidence si cela est necessaire. . 3 Multiprogrammation symetrique Pour augmenter les performances, on a ete conduit construire des machines avec plusieurs processeurs ; ces machines sont dites multiprocesseur. Ce type de machine possede une architecture dans laquelle les processeurs partagent la memoire centrale et les possibilites d’entree/sortie. Ils peuvent communiquer par la memoire centrale ou par un bus specifique. La multiprogrammation symetrique consiste • a utiliser une machine multiprocesseur a faire effectuer les memes fonctions par tous les processeurs (banalisation) Par suite, le systeme d’exploitation repartit les processus ou les threads entre les processeurs disponibles. Les avantages de ces techniques sont tout d’abord l’augmentation de la performance (c’est a dire de la vitesse d’execution), mais aussi la resistance aux pannes (un processeur en panne ne correspond pas a l’arret du systeme), les possibilites d’evolution et d’ajustement (par ajout de processeurs supplementaires). 4. 4 Systemes repartis

A l’inverse du concept de multiprogrammation symetrique, on trouve celui de systeme reparti pour lequel un ensemble de machines reliees par un reseau est considere comme une « grosse » machine unique. Dans un systeme reparti (on dit aussi distribue), les fonctionnalites du systeme d’exploitation peuvent etre reparties entre les diverses machines composant le systeme. De meme, les ressources gerees par le systeme d’exploitation sont aussi reparties entre les differentes machines. Etant donne l’importance des reseaux a notre epoque, les systemes repartis representent un champ d’interet important.

On etudiera ces systemes plus loin. 4. 5 Architecture orientee objet Cette approche moderne vise a construire les systemes d’exploitation comme un ensemble d’objets possedant des proprietes et des methodes. L’interet principal des objets, en dehors de la modularite, est leur reutilisation ce qui permet la construction de systemes d’exploitation evolutifs et adaptables. 5. Exemples de systemes d’exploitation Pour terminer de chapitre sur les generalites, il convient de presenter deux systemes d’exploitation courants : Windows NT et Unix. Nous en effectuerons une presentation sommaire, se reservant la ossibilite d’approfondir par la suite les differentes caracteristiques de ces systemes d’exploitation. 5. 1. Windows NT Les premiers micro-ordinateurs PC, lances par IBM en 1981, etaient equipes d’un processeur Intel 8086 et d’un systeme d’exploitation developpe par Microsoft : le MS-DOS (la taille du DOS 1. 0 etait de 8 Ko). Ces PC ont evolues avec l’adjonction de processeurs de plus en plus performants 80286, puis 80386. Au-dessus du DOS, Microsoft avait ajoute des fonctionnalites graphiques rassemblees sous le nom de Windows. Le DOS 3. de l’epoque occupait en memoire centrale une place de 46 Ko. Les nouveaux processeurs 80486 et Pentium n’etaient pas optimises par l’emploi du MS-DOS, bien que Windows ait evolue vers une version plus performante 3. X (1990). Il apparaissait, en consequence necessaire, de developper un nouveau systeme d’exploitation ce qui conduisit a Windows 95 et Windows NT. Ce dernier, beaucoup plus puissant que Windows 95, reprend toutes ses fonctionnalites auxquelles s’en ajoutent d’autres, notamment une plus grande portabilite vis a vis des plate-formes. La version actuelle est la version 4. , mais la version 5. 0 est deja prete (1998). Les caracteristiques principales de Windows NT sont les suivantes : • portabilite Le systeme Windows NT est ecrit dans un langage de haut niveau (C, C++) et non pas dans le langage d’assemblage d’un processeur particulier, ce qui permet son adaptation a divers processeurs. • multitache Windows NT , comme les produits correspondants des gros et moyens systemes (Unix, VMS, … ) permet l’execution simultanee de plusieurs applications. Comme l’interface est graphique, en general, une fenetre est associee a chaque application.

Toutes les applications ouvertes sont actives a un moment donne, l’une d’elle est l’application courante (sa fenetre est en premier plan), les autres s’executent en taches de fond. • multithreading Le concept de thread est utilise dans Windows NT • independance du processeur Windows 3. X et avant lui, MS-DOS etaient lies a l’architecture des processeurs de la famille Intel 80×806 ; Windows NT a ete portee sur d’autres processeurs : PowerPC (Motorola), Alpha (DEC), MIPS Risc (IBM) • support multiprocesseur Windows NT utilise une interface qui lui permet de s’adapter au cas d’un rocesseur comme de plusieurs • support POSIX et securite Plusieurs niveaux de securites sont proposes dans Windows NT ; par ailleurs, Windows NT est compatible avec le standard POSIX ; ces deux caracteristiques sont plus importantes aux USA qu’en France, car le Departement de la Defense a impose un cahier des charges sur ces deux aspects qui est pris comme modele. • support reseau Windows NT est disponible sous deux formes : Windows NT Workstation et Windows NT Server ; cette derniere forme constitue un outil performant de gestion de eseau local. • compatibilite MS-DOS et Windows 3. X Les applications anciennes sous MS-DOS et Windows 3. X peuvent fonctionner sous Windows NT. L’architecture de Windows NT est decrite par le schema ci-dessous : [pic] Cette architecture montre tout d’abord une assez importante modularite : chaque fonction est un objet particulier. le concept de micro-noyau est utilise mais pas de facon complete puisque un certain nombre de fonctionnalites (Object Manager, Process Manager, … ) s’executent en mode noyau (c’est a dire systeme).

La couche HAL permet de s’adapter a des environnements materiels differents. En mode utilisateur, on peut constater que Windows NT s’adapte a de nombreux systemes informatiques. 5. 2. Unix Rappelons brievement l’histoire d’Unix : 1965 : Le projet MULTICS est lance (MIT + General Electric) ; son objectif est la construction d’un systeme d’exploitation interactif en prolongement du programme CTSS. 1968 : Bells Laboratories se joint au projet ; Ken Thompson y participe. 1969 : Bells Labs se retire du projet car trop d’annees sont necessaires a son aboutissement.

Ken Thompson essaie de recreer un « petit » Multics sur un PDP7, puis sur un PDP11 (DEC) : Unix. A cette occasion, la langage B est invente pour l’ecriture du systeme a partir du langage BCPL (Basic Combined Programming Language). Puis Dennis Ritchie invente le langage C a partir du langage B. 1973 : Unix est ecrit en C et utilise chez AT 1974 : Version 5 d’Unix avec permission d’utilisation dans les universites americaines. En particulier, des developpements importants ont lieu a l’Universite de Berkeley ; ils sont l’origine de BSD (Berkeley Software Distribution). 979 : apparition de nouvelles versions dont certaines pour micro-ordinateurs. A partir de cette date, les versions se succedent comme indique sur la figure ci-dessous : [pic] L’architecture d’Unix est concue comme un modele en couches, ou en coquilles successives : autour de la machine materielle se trouve la couche noyau, puis la couche shell et utilitaires, enfin la derniere couche est composee d’outils divers : [pic] Du point de vue des fonctionnalites qui sont en mode utilisateur ou en mode systeme, l’architecture d’Unix est decrite sur le schema ci-dessous : [pic]

On constate ici que le noyau est forme de modules assez consequents repartis en deux grands blocs : le systeme de gestion des fichiers et le systeme de controle des processus. On y reviendra lorsque ces fonctionnalites seront etudiees. 6. Bibliographie [pic] 7. Generalites sur les systemes d’exploitation 7. 1 Exercices Exercice 1 Dans un systeme multiprogramme a un processeur, on admet que chaque job possede les memes caracteristiques. Chaque job s’execute sur N periodes de duree T chacune ; une periode T se decompose en entree/sortie (50% de T) et utilisation effective du processeur (50% de T).

On suppose que les jobs se succedent suivant la methode du tourniquet (chacun a son tour obtient le processeur) et que les operations d’entree/sortie et d’utilisation du processeur peuvent etre simultanees (pour des jobs differents). Dans le cas de 1, 2 et 4 jobs et dans les deux cas suivants : ? T est composee sequentiellement d’une entree/sortie (50%), puis de l’utilisation du processeur (50%) ? T est composee sequentiellement d’une entree/sortie (25%), puis de l’utilisation du processeur (50%), puis d’une entree/sortie (25%) calculer 1) le temps necessaire a l’execution d’un job ) le nombre moyen de jobs executes par periode T 3) le pourcentage de temps d’utilisation du processeur. Exercice 2 Un ordinateur possede une memoire principale, une memoire cache, un disque. Le temps d’acces a un mot du cache est A ns ; si le mot est dans la memoire principale, il faut B ns pour le transferer dans le cache ; si le mot est sur le disque, il faut C ns pour le retrouver et B ns pour le transferer sur le cache. La probabilite de trouver le mot dans le cache est (n-1)/n et la probabilite de le trouver en memoire principale est (m-1)/m.

Determiner le temps moyen d’acces de ce systeme. Exercice 3 Sous Unix, un fichier dont le proprietaire possede l’uid 12 et le gid 1 a le mode de protection rwxr-x— Un autre utilisateur dont le uid est 6 et le gid 1 tente d’executer ce fichier. Que se passe-t-il ? Exercice 4 Faire un inventaire des differents systemes d’exploitation actuellement utilises. 7. 2 Solution des exercices Solution de l’Exercice 1 Hypothese 1 : T est composee sequentiellement d’une entree/sortie (50%), puis de l’utilisation du processeur (50%)

Hypothese 2 : T est composee sequentiellement d’une entree/sortie (25%), puis de l’utilisation du processeur (50%), puis d’une entree/sortie (25%). Dans les schemas ci-dessous, le vert indique les entrees/sorties et le rose l’utilisation du processeur. te indique le temps d’execution, n le nombre moyen de jobs executes par periode T et r le pourcentage de temps d’utilisation du processeur. ? Cas 1 : 1 job, hypothese 1 te = NT ; n = (1/NT)x T = 1/N ; r = 50% ? Cas 2 : 1 job, hypothese 2 memes resultats que ci-dessus ? Cas 3 : 2 jobs, hypothese 1 te = NT ; n = 2/N ; r = 100% Cas 4 : 2 jobs, hypothese 2 memes resultats que ci-dessus ? Cas 5 : 4 jobs, hypothese 1 te = (2N-1)T ; n = 4/(2N+1/2) ; r = 100% ? Cas 6 : 4 jobs, hypothese 2 te = 3NT/2 ; n = 4/(9TN/2) ; r = 100 % [pic] [pic] Solution de l’exercice 2 Ts = ((n-1)/n)A + ((m-1)/m)(B+A) + x(C+B) x = 1 – (n-1)/n – (m-1)/m = 1/n +1/m -1 Ts = A + ((m-1)/m)B + (1/n + 1/m -1)C Solution de l’Exercice 3 Le proprietaire peut lire, ecrire, executer. Un membre du groupe peut lire et executer. Les autres ne peuvent rien faire. Solution de l’exercice 4 Une bonne adresse sur Internet : http://dir. yahoo. om/Computers_and_Internet/Software/Operating_Systems/ DEUXIEME PARTIE : ADMINISTRATION ET MAINTENANCE DES RESEAUX ET SYSTEMES SOUS UNIX 1. Introduction Ce cours fait suite a celui dispense dans l’Unite Pedagogique n°6, Systemes et reseaux : utilisation et exploitation. Les notions, concepts, protocoles et commandes qui y ont ete developpes sont necessaires pour tirer pleinement profit de ce nouveau cours. Elle va directement dependre de votre experience prealable. Un utilisateur d’Unix habitue des reseaux y consacrera 2 a 3 heures, un debutant plutot le double et un administrateur moins de la oitie. Tous devraient y trouver des indications utiles, issues de l’experience. Duree d’etude conseillee. Pas de miracle a attendre… la maitrise du domaine sera longue a acquerir et repose beaucoup sur la mise en pratique. Il est donc tres fortement conseille de creer tous les services decrits dans ce cours, et d’en tester diverses configurations. Evidemment, personne ne sera surpris qu’une operation de cette envergure prenne plusieurs dizaines d’heures. exercices : Des exercices et problemes sont proposes dans un document a part. 2. L’avenir d’Internet : IPv6. 2. Pourquoi une nouvelle version ? La taille de l’Internet double tous les 12 mois… il y a donc une evolution ineluctable vers l’epuisement des adresses IPv4 codees sur 32 bits. De plus, les tables de routage croissent aussi avec le nombre de machines, au point de voir leur taille progresser de maniere explosive ! Par ailleurs, les usages du reseau evoluent. Si le transfert de donnees asynchrones etait ultradominant il y a dix ans (mail et FTP), le critere « temps de reponse » a pris une place preponderante depuis que la « toile » (le web) est accessible au public et utilisee de maniere commerciale.

Le papillonnage des utilisateurs, normalement renforce par la structure hypertexte des donnees presentees, est tres sensible a ce facteur : une non visible 10 secondes apres sa demande a une probabilite faible d’etre jamais regardee. L’evolution de la notion d’ordinateur elle-meme compte : des lors que des milliers de personnes parcourent le monde avec l’equivalent d’un VAX 780 sous le bras, comment oser l’ordinateur comme un outil dont la position physique (sinon geographique) est stable ? Enfin, les progres technologiques favorisent l’apparition e nouvelles utilisations. Les « hauts debits » (restons flou sur les significations de ce terme) doivent normalement permettre le telechargement plus rapide (tres rapide ? ) de volumes de donnees plus importants (tres importants ? ). Et quelques pionniers oeuvrent a rendre la production video accessible au plus grand nombre, y compris l’emission en direct sur le net… Ne parlons meme pas des chaines commerciales. Bref, tout pousse a ne pas se satisfaire des limitations actuelles, notamment en termes de qualite de service.

Il faut toutefois reconnaitre que le reseau Internet, et IP en particulier, n’est pas responsable de toutes celles-ci. Loin de la. Au contraire, IP a remarquablement reagi a la plus forte montee en charge jamais connue sur la planete (des sauts successifs de plusieurs ordres de grandeur). On ne saurait en dire autant des operateurs reseaux et telecom… Que propose Ipv6 ? • Conserver ce qui a fait le succes de IPv4 en etendant ses fonctionnalites ; • Faciliter les migrations de ce qui n’est pas IP vers IP (OSI et IPX !!! ) 2. 2 Comment ?

Le premier moyen est l’extension du champ d’adressage de 4 a 16 octets, ce qui permettra d’adresser 340*1036 equipements (c’est a dire 340 milliards de milliards de milliards de milliards de machines…!!! ). De plus l’adressage sera hierarchique et les adresses typees. Les adresses Ipv6 auront donc cette allure la : Les adresses sont annoncees en hexadecimal lues sur des blocs de 16 bits, sans les 0 de poids fort du bloc s’il y en a. On doit normalement avoir 8 blocs de 4 caracteres hexa separes par des « : », mais du fait des 0 de poids fort, on peut donc avoir moins de 4 symboles exprimes. Ce qui donne par exemple :

ABFE:76B3:0:0:0:34DE:421:12 ou bien, en version simplifiee : ABFE:76B3::34DE:421:12 Le second moyen est la simplification de l’entete pour ameliorer les fonctions de routage (reduction du nombre de champs, disparition du champ donnant la longueur de l’en-tete IP et alignement systematique de l’en-tete sur 64 bits). On ne doit pas oublier que, dorenavant, les routeurs de backbone supportent des charges de dizaines de millions de paquets a la seconde… Simplifier l’entete entraine mecaniquement une simplification du processus de traitement des paquets et une augmentation parallele des performances.

Le troisieme moyen est la possibilite d’introduire de nouveaux services, dont le marquage de la priorite des flux qui permettra la gestion de la qualite de service en rapport avec le protocole utilise, l’adressage multipoint pour la diffusion et la gestion de la securite (authentification et integrite). 2. 3 Les plus Sont d’ores et deja prevus dans IPv6 quelques services qui auront des consequences positives evidentes pour tous les utilisateurs : • Le « Neighbor Discovery », qui permet a une station connectee sur un reseau de decouvrir son environnement (mieux que bootp et DHCP reunis) ; « L’autoconfiguration » a memoire d’etat (DHCPv6, qui s’appuie sur un serveur connu) ou sans memoire d’etat (SAA, qui permet de reconstruire une adresse globale a partir de l’adresse physique du composant connecte a un reseau – nettement plus puissant). • La gestion de la « mobilite » qui permettra a une machine mobile de rester « apparemment » connectee a son « reseau mere » bien qu’elle soit effectivement rattachee ailleurs. Il n’y aura pas dans ce cas de redirection simple des paquets IP, mais de l’encapsulation ou du tunneling entre le reseau mere et la station mobile deportee sur un autre reseau. On remarquera que ette fonctionnalite, pour allechante qu’elle soit, n’est pas gratuite en termes de flux IP automatiquement generes. • La gestion de priorites associees a des protocoles incapables de gerer l’engorgement du reseau, dits temps reel qui, comme la video, sont en flux continus. La solution pour la voix sur IP, les services de video a la demande, la telemedecine ou l’enseignement a distance, peut-etre… 3. Les reseaux de machines Unix Unix est un systeme d’exploitation multitache (non-preemptif a temps partage) multi-utilisateurs a memoire protegee. Il est disponible sur la plus vaste gamme de machines au monde, des anciens icro-ordinateurs personnels (Amiga, machines 680×0) jusqu’au supercalculateur vectoriel le plus moderne. Il permet depuis l’origine (un petit labo d’ATT dans les annees 1970) le partage de ressources internes (bibliotheques, memoire) ou externes (peripheriques, impression, uucp), et cette capacite a ete etendue par l’integration des mecanismes reseaux des les annees 1980 (dans les versions Unix BSD – Universite de Berkeley, en Californie). Unix dispose d’une gestion des droits utilisateurs (lecture, ecriture, execution) sur les fichiers et les processus qui repose sur les notions d’utilisateur, de proprietaire et de groupe. . 1 La securite d’acces Depuis l’origine, Unix identifie les utilisateurs du systeme par un nom de login et un mot de passe. Du point de vue d’Unix, un utilisateur n’est pas forcement un humain assis devant une console, et peut tout aussi bien etre un service d’impression ou une entite abstraite creee par commodite d’exploitation. En effet, toute activite du systeme est associee a un utilisateur, repere par deux nombres, l’UID (User IDentification) et le GID (Group IDentification). Evidemment, a ces paires de nombres sont associees des noms symboliques beaucoup plus accessibles aux humains.

Les donnees concernant les utilisateurs sont stockees dans les fichiers /etc/passwd, /etc/shadow et /etc/group. Il y a des variantes selon les versions de systeme (localisation des fichiers, techniques de cryptage), mais la separation des donnees identifiant et mot de passe est desormais acquise. • /etc/passwd contient un enregistrement par ligne, lequel contient tout ce qui concerne l’utilisateur (nom de login, description symbolique succinte, repertoire d’accueil, processus de base a lancer). • /etc/shadow contient les mots de passe cryptes de chacun des utilisateurs, ainsi que les arametres du mot de passe (validite, dates, etc…), • et /etc/group leur repartition en groupes. 3. 2 Droits des utilisateurs. On ne reviendra pas sur les notions de base d’Unix en matiere de droits (affichage, repartition, commandes d’acces et modification), supposees acquises. 3. 2. 1 Le groupe d’utilisateurs Unix, utilite pratique Le groupe permet de gerer l’acces a des ressources (fichiers, peripheriques, services) dans le cas ou l’on souhaite restreindre cet acces a un nombre limite d’utilisateurs. L’exemple type est la commande /bin/su, qui permet a un utilisateur de devenir root (entre autres).

Un moyen simple de limiter les tentatives d’utilisation frauduleuse de cette commande est de creer un groupe special dans lequel on declare les utilisateurs autorises (par exemple suok, puis de changer le groupe du fichier /bin/su en suok, et de donner les droits d’execution a ce groupe a l’exclusion du reste du monde (droits 750). Ainsi, en dehors de root qui reste proprietaire, seuls les membres du groupe suok auront le droit d’executer cette commande. Un utilisateur standard n’appartenant pas au groupe suok ne pourra meme pas voir cette commande.

Il est ensuite conseille a tous les utilisateurs potentiels de cette commande de faire l’appel explicite a /bin/su, precaution simple qui permet de circonvenir un cheval de troie installe dans un repertoire du chemin classique de recherche des commandes. Sous Unix, lors de l’execution d’un processus, le proprietaire de ce processus est l’utilisateur qui a lance la commande. Le processus herite donc des droits de cet utilisateur sur l’acces aux differentes ressources, dont l’acces aux fichiers evidemment, ce qui peut s’averer etre une limitation importante.

Cette limitation est levee par les bits SUID et SGID, ainsi que par les primitives systemes correspondantes qui peuvent donc etre employees par des programmes. 3. 3 Les bits S. UID et S. GID Un des moyens offerts par Unix pour gerer les acces privilegies consiste a autoriser la substitution du proprietaire d’un processus avec la notion de proprietaire effectif. Le proprietaire d’un fichier executable peut positionner le bit S. UID de maniere a ce que le proprietaire effectif change au cours de l’execution du processus pour prendre les droits du proprietaire, bien que le processus lui-meme appartienne toujours a l’utilisateur qui l’a lance.

Concretement, c’est le probleme pose lors du changement de mot de passe par un utilisateur. Le mot de passe doit etre stocke dans un fichier inaccessible en lecture/ecriture a quiconque autre que root (car il ne serait pas raisonnable de faire tourner tous les services avec les droits de root), mais il faut pourtant bien le lire pour authentifier la personne qui demande la modification ! Avec le bit S. UID positionne, l’utilisateur toto executant le programme /bin/passwd en sera le proprietaire et pourra donc envoyer des signaux a ce processus (une interruption pour cause d’hesitation par exemple).

Mais l’utilisateur effectif etant devenu root, ce processus aura le droit de lire et d’ecrire sur le fichier /etc/shadow, permettant ainsi l’authentification de la demande puis l’enregistrement de la modification du mot de passe. Le bit S. GID peut etre utilise de la meme maniere pour fixer le groupe effectif executant un processus. Cela peut etre utilise pour le service d’impression ou la messagerie par exemple. 3. 4 Le super-demon de gestion des services 3. 4. 1 Inetd. Sous Unix, les services reseaux sont assures au travers d’un super-demon charge de lancer les demons-processus qui assurent effectivement les services.

Ce processus, appele inetd, est donc un super-demon puisqu’il lance d’autres demons. Inetd est a l’ecoute sur tous les ports declares dans le fichier /etc/services, c’est-a-dire ceux rattaches a un service reseau. La cle de correspondance est le nom du service concerne. Dans le fichier de configuration inetd. conf, chaque ligne respecte le format suivant : service socket protocole wait|nowait utilisateur chemin arguments Le champ service doit correspondre a celui declare dans /etc/services, le champ socket vaut stream pour les services en mode connecte (tcp), dgram pour ceux en mode datagramme (udp), et le champ protocole doit correspondre.

Le champ wait|nowait est celui qui permet de controler le nombre de process lances chaque seconde (voir pop3). Le champ utilisateur vaut habituellement root. Le champ chemin designe maintenant tcpd, alors qu’auparavant il designait le demon assurant le service. Le champ argument contient maintenant le nom du programme assurant le service (in. telnetd, inftpd, etc…). Le champ wait|nowait permet d’indiquer a inetd s’il doit attendre (wait) la fin du process-fils lance pour assurer le service avant de se remettre a ecouter sur le port, ce qui implique qu’il n’y a jamais plus d’un process-service a la fois.

C’est le mode « single thread ». Dans le cas contraire (nowait), inetd lance un sous-process et reprend l’ecoute sur le port tout de suite ; c’est le mode « multi-thread ». Par exemple, le service pop3 est evidemment du type stream/tcp/nowait. Depuis que les questions de securite ont pris de l’ampleur, inetd est associe a un processus special appele un « wrapper », classiquement nomme tcpd, lequel est en fait charge de la securite apres avoir ete concu pour assurer les log du service. Tcpd assure un controle d’acces aux services TCP en verifiant que le service est bien accessible a ‘adresse IP de l’expediteur specifiee dans le paquet contenant la requete. Si c’est le cas, le wrapper controle l’integrite des paquets recus avant de les passer au processus qui assure finalement le service. Cette technique permet de surmonter les attaques contenues dans des paquets malformes, mais laisse celles par « debordement de buffer » classiques atteindre le processus final (qui doit donc etre protege contre celles-ci au niveau de la programmation). Les attaques par « Deni de service (DoS) » sont provoquees par l’envoi d’un tres grand nombre de requetes sur un meme service.

Le pirate provoque ainsi au moins l’effondrement des performances de la machine, et parfois une baisse de ses defenses, au pire une exception permettant un acces shell. Inetd et tcpd ne peuvent rien contre ce genre d’attaques, sauf a limiter le nombre de processus et a tuer le service correspondant en cas de depassement. Attention, la documentation de configuration de inetd est assez succinte, et ne mentionne notamment pas tres clairement tcpd et les fichiers de configuration rattaches a tcpd : /etc/hosts. allow et /etc/hosts. deny. Une fois ceux-ci identifies, c’est plus simple car leur format est bien documente. etc/hosts. allow sert evidemment a declarer les services ouverts, et son compagnon a specifier ceux qui sont fermes. Par defaut, les versions recentes de Linux qui offrent des configurations « securisees » optent pour une configuration « fermee » dans laquelle aucun service n’est accessible. L’effet equivalent est obtenu par une ligne : ALL: [email protected] dans le fichier /etc/hosts. deny. Il est a noter que cette interpretation « fermee » est un revirement complet par rapport a la position initiale d’Unix qui etait « ouverte ». Un serveur ouvert serait donc caracterise par une ligne : ALL: [email protected] ans le fichier /etc/hosts. allow. Pour ouvrir un service specifique pour un utilisateur sur une machine, une ligne explicite dans /etc/hosts. allow suffit, par exemple : eve: [email protected] iedfrance. net ouvre le service eve a l’utilisateur toto quand la requete provient de l’hote eve. iedfrance. net. Les autorisations de service sont parcourues dans l’ordre de leur declaration. 3. 4. 2 Xinetd Recemment, est apparue une nouvelle version de inetd, nommee xinetd (www. xinetd. org) qui etend considerablement les capacites du super-demon, au prix d’un changement de syntaxe dans la configuration.

Ceux qui ont vecu le passage de BIND4 a BIND8 auront un doux sentiment de « deja vu ». Xinetd presente un atout certain : la simplification de la configuration des services reseau via un fichier unique, au prix d’une syntaxe plus riche mais assez explicite. Xinetd permet notamment d’avoir des logs personnalises de l’activite du service. Les lignes ci-apres decrivent la configuration des services de releve du courrier (POP3 et IMAP) qui sont geres par inetd. Pop3 # default: on # description: The POP3 service allows remote users to access their mail using an POP3 client such as Netscape Communicator, mutt, # or fetchmail. service pop3 { socket_type = stream wait = no user = root server = /usr/sbin/ipop3d log_on_success += USERID log_on_failure += USERID } imap # default: off # description: The IMAP service allows remote users to access their mail using # an IMAP client such as Mutt, Pine, fetchmail, or Netscape # Communicator. service imap { socket_type = stream wait = no user = root server = /usr/sbin/imapd log_on_success += DURATION USERID log_on_failure += USERID disable = yes } 3. 5 Services IP classiques . 5. 1 Fichiers et trous de securite 3. 5. 1. 1 Le fichier /etc/hosts. equiv Ce fichier permet, si l’utilisateur est declare sur les deux machines avec le meme nom de login, la mise en oeuvre des commandes BSD (rsh, rlogin, rexec), a partir d’une machine cliente declaree dans le fichier, sans demander d’authentification. Cette technique permet de rendre l’emploi de plusieurs machines completement transparent pour les utilisateurs, tout en proposant par exemple l’execution de logiciels differents sur chacune d’elles (en vue de meilleures performances).

Supposons qu’un logiciel requiere une configuration speciale, ou qu’il demande toutes les ressources physiques disponibles (memoire par exemple) tout en fonctionnant avec une interface sous XWindows. En declarant les machines clientes dans hosts. equiv, on peut alors offrir le service a tous les utilisateurs de maniere transparente. Il suffit pour cela de modifier l’environnement de chaque utilisateur afin que la commande adasdk sur la machine tethys execute en realite « rsh saturne adasdk -display tethys:0 ». Cela n’a evidemment de sens que dans une configuration reseau sure, tant logiquement que hysiquement … mais, sous ces conditions, c’est tres simple a realiser pour l’administrateur et c’est tres efficace pour les utilisateurs. 3. 5. 1. 2 Le fichier . rhosts Celui-ci permet exactement la meme chose que le fichier precedent, mais ce fichier est personnel a chaque utilisateur. Dans un environnement non securise, il est prudent de veiller a retirer ce genre de fichiers chez tous les utilisateurs. Et il faut imperativement veiller a ce que root n’en ait jamais ! 3. 5. 2 telnet 3. 5. 2. 1 Description. Telnet est un service construit sur TCP qui definit un « terminal virtuel de reseau », veritable nterface de communication universelle avec les machines utilisant IP. Des lors que l’on dispose d’un acces autorise sur une machine, telnet permet d’acceder a celle-ci et d’en prendre le controle, du moins avec les droits dont dispose l’utilisateur declare. Telnet permet ainsi au serveur de ne pas se preoccuper des specificites reelles du client (dependantes de l’OS, de l’ecran, …) tout en autorisant une exploitation plein ecran en mode caractere. Les clients telnet ont ete ecrits pour un tres grand nombre de plateformes, le plus souvent en logiciel libre. Sur le serveur, le demon est telnetd, lance par inetd.

Le schema de fonctionnement est le suivant : 3. 5. 2. 2 Telnet aujourd’hui. Telnet etait evidemment l’outil ideal pour travailler sur plusieurs machines dotees de capacites differentes et localisees sur un reseau local. Bref, les conditions d’exploitation habituelles dans un laboratoire de recherche au debut des annees 80… Quand l’existence d’une carte reseau sur une machine signifie qu’elle est accessible depuis plusieurs millions d’autres, telnet se revele dote d’un defaut majeur : les elements login et password circulent en clair sur le reseau, et sont tres simples a recuperer avec un quelconque sniffeur.

Autrement dit, cette faille de securite enorme signe la disparition du service sur toute machine exploitee de maniere raisonnable… des lors qu’elle est connectee directement a l’Internet. Malgre ce defaut, le client telnet est un outil important dans le test d’un reseau car il exploite directement le protocole TCP, lequel reste actif meme si les sessions telnet « shell » sont interdites sur les serveurs. En effet, la commande telnet admet en argument optionnel le numero de port en sus de l’adresse de l’hote (obligatoire). On peut ainsi tester tous les services en attente sur des ports TCP (par exemple avec la commande : telnet truc. achin. com 25 qui permettrait de forger un message electronique de toutes pieces). Les remplacants de telnet existent, ils appartiennent a la famille SSH (Secure Shell) : OpenSSH, SSH, SSF. En France, leur diffusion a ete quasi confidentielle jusqu’a tres recemment a cause de la legislation extremement restrictive sur le cryptage. Aujourd’hui, OpenSSH est diffuse dans les distributions Linux. Le protocole SSH permet au pire un echange, entre le client et le serveur, du couple login+password sous forme cryptee, et au mieux le seul echange de certificats en cles ubliques dont l’authenticite est verifiee localement a la fois sur le client et sur le serveur. Dans tous les cas, les echanges sont cryptes par une cle de 768 bits qui change souvent (a chaque session et a chaque heure). Le demon SSH peut etre lance, comme la plupart des services, via inetd ou independamment (en standalone). Dans ce dernier cas, ne pas oublier de configurer les fichiers rc* (rcX. d, rc. local ou autres) afin que le demon soit lance. Sinon, la premiere coupure de courant vous privera de tout acces reseau a la machine… 3. 5. 3 FTP 3. 5. 3. 1 Description.

Parler de l’application ftp est le resultat d’un abus de langage, FTP designant d’abord le protocole FTP (File Transfer Protocol), qui est uniquement utilise pour le transfert de fichiers. De fait, des les premieres versions d’Unix, la commande utilisateur qui exploitait ce protocole s’appelait ftp… Le protocole FTP s’appuie sur TCP et utilise deux connections simultanees : l’une, sur le port 21, sert au controle du transfert, et l’autre, sur le port 20, sert au transfert des donnees seulement. Les connexions sont gerees aux deux extremites, par le client et le serveur.

Le controle du transfert est pris en charge par un Protocole Interpreter (PI) qui utilise le protocole telnet pour communiquer avec son homologue, et le transfert des donnees par un Data Transfer Process (DTP). Un DTP est toujours gere par un PI. Ces deux fonctions sont remplies par les outils/applications qui assurent l’interface avec l’utilisateur (ftp, gftp, CuteFTP, Fetch, …). Le schema d’une session FTP est donc le suivant. FTP est, malgre sa complexite intrinseque, un protocole extremement resistant car il contient tous les elements necessaires a son bon fonctionnement (ce n’est pas le cas de telnet qui a besoin d’un hell fonctionnel… voir les causes d’erreurs possibles au chapitre 13). Cela reste vrai pour la configuration de base du service. La creation d’un service « FTP anonyme » sur un serveur impose de creer toutes les ressources dans la hierarchie speciale consacree a ce serveur avec les droits adequats (voir le HOW-TO sur le FTP anonyme de Linux par exemple). 3. 5. 3. 2 Configuration de FTP. Si vous utilisez pour vos services reseau le couple de demons inetd+tcpd, le service FTP est alors controle par le contenu du fichier /etc/ftpaccess, apres l’examen par le wrapper tcpd des fichiers etc/hosts. allow et /etc/hosts. deny (dont le format est celui des fichiers hosts_access -voir le manuel unix sur ce sujet). Dans les versions securisees de Linux, l’absence de ce(s) fichier(s) est interprete comme une interdiction d’ouvrir le service FTP pour toutes les adresses IP… Bref, en apparence toute votre configuration est propre (port ouvert dans /etc/services, inetd bien configure dans /etc/inetd. conf), mais ce detail seul suffit a faire tomber le service pour tous vos utilisateurs. Si vous utilisez le super-demon xinetd, alors tous ces parametres de securisation sont regroupes ans le fichier de configuration de xinetd. Sur certaines versions d’Unix (Linux en particulier), on trouve aussi un fichier /etc/ftpusers, dont chaque ligne contient un nom d’utilisateur pour lequel l’usage de FTP est interdit. Assez logiquement, on y trouve daemon, mail, news, nobody et root. Une liste standard serait par exemple : # /etc/ftpusers: list of users disallowed ftp access. # See ftpusers(5). root daemon bin sys sync games man lp mail news uucp nobody 3. 5. 3. 3 Configuration de FTP : /etc/ftpaccess. La configuration decrite ci-apres interdit l’usage du serveur en mode anonyme car aucune classe efinie ne contient cette categorie d’usagers (seule la classe ALL est definie, et elle ne contient pas anonymous). Ensuite, la configuration definit comme usagers « invites » tous les utilisateurs qui ont reussi a se logger avec un identifiant et un mot de passe valide. Ceux-ci voient alors leur « home directory » comme la racine des fichiers accessibles par FTP (attention a la syntaxe du « home directory » a utiliser). Ca peut paraitre assez restrictif, certes, mais ca limite deja pas mal les degats potentiels… D’ailleurs, les seuls a echapper a ce traitement sont les membres du groupe unix (real group) wheel, bref, les copains de root.

On limite aussi le nombre de processus FTP simultanes pour gerer la charge imposee a la machine. Ici, la limite porte sur la classe ALL, la seule definie. Exemple de fichier /etc/ftpaccess # For more details about setting up the ftpaccess file, consult the # ftpaccess manpage. # Define a class – with this, you can limit the number of # simultaneous connections for certain people class all real,guest * guestuser * realgroup wheel realuser toor # Limits for classes – if you uncomment this, only 10 people can # log in simultaneously # limit all 10 Any /etc/msgs/msg. dead

Ce fichier permet aussi de controler ce qui sera affiche lors de l’utilisation de certaines commandes. Ici, on choisit d’afficher les contenus des fichiers README lors de l’arrivee sur le service (login), puis a chaque changement de directory (cwd). Exemple de fichier /etc/ftpaccess # Display « Read the README* files » on every login readme README* login # Display « Read the README* files » on every cd command readme README* cwd=* # uncomment this to display /etc/ftpbanner before people can log in: # WARNING: This will break support for some truly ancient clients. # banner /etc/ftpbanner display ~ftp/welcome. msg after login message /welcome. msg login # display . message in the current directory at every cd command message . message cwd=* Ce fichier permet aussi de controler finement les commandes qui seront accessibles a chaque categorie d’utilisateurs, et eventuellement le log des actions correspondantes pour certaines categories d’utilisateurs. Exemple de fichier /etc/ftpaccess # If you want the server admin to receive e-mail whenever an anonymous # user uploads a file, uncomment this: # incmail address. of. [email protected] com # mailfrom [email protected] om [This is what we’ll use in the From: field] # mailserver mail. yourdomain. com # On some systems, you might have to specify the IP of the mail server # rather than the hostname; on most systems, both variants should work. # Permit on-the-fly compress/tar for everyone compress yes all tar yes all # Set up logfiles log commands real log transfers anonymous,real inbound,outbound # control of specific commands tar no anonymous compress no anonymous chmod no guest,anonymous delete no guest,anonymous overwrite no guest,anonymous rename no guest,anonymous 3. 5. 3. 4 Le fichier . etrc Bien que cela sorte quelque peu de la configuration systeme, il peut etre utile de connaitre l’existence du fichier . netrc. Chaque utilisateur, et donc le superuser aussi, peut creer un fichier .netrc qui sera lu par l’application FTP cliente au moment de son lancement. Ce fichier permet de regler le probleme du login identifie sur un serveur (en mode non anonyme, donc), et peut permettre aussi de lancer automatiquement des commandes FTP. Pour le login, les mots-cles login et password, et eventuellement account si le serveur FTP l’utilise, sont disponibles.

Il faut veiller a ce que les droits de lecture du fichier . netrc soient reduits au proprietaire seulement si vous utilisez le mot-cle password. Il est possible d’associer un compte (login et password) a chaque serveur que vous contactez en utilisant le mot-cle machine. Ainsi, des groupes de mots-cles associes de la maniere suivante : machine chose login truc password machin machine chose2 login truc2 password machin2 permettent de gerer des acces identifies sur les deux serveurs chose et chose2. Pour l’execution de commandes automatiques, il faut exploiter la definition de macro commandes.

Le mot-cle introductif est macdef init, et la fin de la macro est marquee par une ligne vide. Ainsi, la sequence suivante permettra un acces identifie au serveur chose. ailleurs. net et l’execution automatique du transfert de fichier (avec un changement de nom au passage ! ) : machine chose. ailleurs. net login truc password machin macdef init get fichier_ref. txt fichier. txt quit machine chose2 login truc2 password machin2 Enfin, ce fichier sert a regler le cas de la connexion anonyme, pour laquelle les serveurs demandent generalement l’adresse e-mail en mot de passe, avec le mot-cle default.

Ce qui donne au total : machine chose. ailleurs. net login truc password machin macdef init get fichier_ref. txt fichier. txt quit machine chose2 login truc2 password machin2 default login anonymous password [email protected] com 3. 5. 4 Sendmail, SMTP et POP 3. 5. 4. 1 Un resume rapide. Le programme Sendmail est le routeur de courrier electronique le plus repandu (plus de 70% des serveurs de l’Internet), historiquement disponible sur les systemes Unix. Sendmail appartient a la categorie des « message transfer agent » ou MTA. Il est actuellement gere en licence ouverte par le groupe sendmail. org (http://www. sendmail. rg), qui s’occupe de faire evoluer le code en fonction des progres de BIND et des exigences de securite ainsi que des changements (rapides) en matiere de lutte contre le SPAM (courrier publicitaire non sollicite, considere comme polluant). Sendmail a longtemps ete un trou de securite sur Unix, notamment a cause d’erreurs de validation/controle dans la programmation, mais ce n’est plus vraiment le cas maintenant (version courante 8. 10). Sendmail s’appuie sur un protocole d’echange de niveau applicatif, au dessus de IP, appele SMTP (Simple Mail Transfer Protocol). Le role de sendmail est bien resume par cette figure du cours UREC/CNRS.

Sendmail fonctionne sur chaque hote successivement comme client d’un autre agent MTA, sendmail le plus souvent, ou comme serveur pour un autre agent de courrier electronique. Le serveur est en attente sur le port 25 en mode connecte (TCP), il est donc accessible via telnet directement. Le format des adresses admises aujourd’hui (IP est ultra dominant, bitnet et uucp obsoletes) est : Destinataire [email protected] domaine [email protected] Les programmes qui assurent l’interface utilisateur, dits « user agent », sont des applications specifiques totalement independantes de Sendmail, comme par exemple : mail, elm, mhmail, ediamail, xmh, eudora, ou Netscape Messenger. Pour l’expedition d’un message, ces « user agent » s’adressent, en utilisant le protocole SMTP, au routeur de courrier (le MTA) qui fonctionne en mode serveur sur un hote sur lequel l’utilisateur doit etre declare. Celui-ci verifie la validite des adresses expediteur et destinataire sans faire de controle sur l’authenticite du client. Pour la lecture des messages, les « user agent » utilisent les protocoles POP3 (Post Office Protocol) ou IMAP4 (Interactive Mail Access Protocol), lesquels s’appuient sur des serveurs et des ports specifiques.

Ce dernier protocole offre plus de possibilites, notamment la gestion de dossiers sur le serveur luimeme plutot que sur le micro de l’utilisateur apres rapatriement de tous les messages a partir du serveur. Par contre, ce protocole est nettement moins repandu. Sendmail s’appuie sur le DNS (Bind) pour resoudre les noms de machines et de domaines, ainsi que pour connaitre le systeme recepteur de courrier pour un domaine donne (champ MX defini dans la configuration du DNS du domaine). Ce transparent du cours UREC/CNRS sur sendmail illustre bien l’interaction entre le MTA et le

DNS, qui donne beaucoup de souplesse a la gestion des machines qui sont effectivement serveurs de courrier pour un domaine. On peut avoir plusieurs machines destinataires pour un domaine (cas 1), mais on peut aussi avoir plusieurs machines reelles derriere une adresse logique unique (cas 2). Le transparent suivant (meme origine) resume la procedure de traitement du routage des messages, laquelle s’appuie aussi sur le DNS et les MX. Le protocole SMTP a ete ameliore par des extensions regroupees dans le protocole ESMTP, surensemble de SMTP. Si Sendmail doit transferer un message a un MTA qui ne comprend pas

ESMTP, il doit revenir au protocole SMTP standard. ESMTP permet notamment de transferer des messages en 8 bits, les accuses de delivrance (Delivery Status Notification). 3. 5. 4. 2 Les alias et listes de diffusion basiques Les alias sont declares dans un fichier (/etc/aliases) qui doit etre compile par la commande newaliases afin que sendmail puisse utiliser la derniere version a jour. La syntaxe est rudimentaire : nom_alias: nom1, nom2, nom3, … chaque nom rattache a l’alias pouvant etre local ou pas. Un alias peut etre partage par plusieurs