Chapitre 32 : Authentification des comptes utilisateurs



Documents pareils
Administration système UNIX version 7.0

Administration système UNIX version 8.0

Cours UNIX Network Information Service

Utiliser Améliorer Prêcher. Introduction à LDAP

Table des matières Hakim Benameurlaine 1

INSTALLATION ET CONFIGURATION DE OPENLDAP

Administration et Architectures des Systèmes

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

OpenLDAP, un outil d administration Réseau. Une implémentation d OpenLDAP

Authentification des utilisateurs avec OpenLDAP


INFO-F-309 Administration des Systèmes. TP7: NFS et NIS. Sébastien Collette Résumé

Active Directory. Structure et usage

Le Linux NIS(YP)/NYS/NIS+ HOWTO

1 Configuration réseau des PC de la salle TP

Installer un domaine NIS

Conférence technique sur Samba (samedi 6 avril 2006)

Client Debian Squeeze et serveur SambaEdu3

NFS Maestro 8.0. Nouvelles fonctionnalités

Groupe Eyrolles, 2004 ISBN :

Administration Système

TP administration système

Mise en place d annuaires LDAP et utilisation dans plusieurs applications

Administration Système

LDAP et carnet d'adresses mail

Méta-annuaire LDAP-NIS-Active Directory

L annuaire et le Service DNS

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

OpenLDAP, un outil d administration réseau. (Implémentation d openldap à l INRA de Rennes)

OpenLDAP. Astuces pour en faire l'annuaire d'entreprise idéal THÈME TECHNIQUE - ADMINISTRATION SYSTÈME. Jonathan CLARKE - jcl@normation.

Serveurs de noms Protocoles HTTP et FTP

Evidian IAM Suite 8.0 Identity Management

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Couche application. La couche application est la plus élevée du modèle de référence.

DNS. Olivier Aubert 1/27

TP : Introduction à TCP/IP sous UNIX

Déploiement de (Open)LDAP

Authentification des utilisateurs avec OpenLDAP et Samba 3.0

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Outils Logiciels Libres

Description de la maquette fonctionnelle. Nombre de pages :

L'AAA, késako? Bruno Bonfils, fr.org>, Novembre Sous ce terme d'apparence barbare est regroupé l'ensemble des concepts suivants :

LDAP : pour quels besoins?

Annuaire LDAP, SSO-CAS, ESUP Portail...

Gestion des identités Christian-Pierre Belin

OpenLDAP au quotidien: trucs et astuces

Couplage openldap-samba

Unix/Linux I. 1 ere année DUT. Université marne la vallée

SSH, le shell sécurisé

LINUX Préparation à la certification LPIC-3 (examen LPI 300) - 2ième édition

A. À propos des annuaires

RTN / EC2LT Réseaux et Techniques Numériques. Ecole Centrale des Logiciels Libres et de Télécommunications

Installer un domaine DNS

Programmation C. Apprendre à développer des programmes simples dans le langage C

Configuration d'un annuaire LDAP

B1-4 Administration de réseaux

Résolution de noms. Résolution de noms

Utilisation des services de noms et d'annuaire Oracle Solaris 11.2 : LDAP

LDAP : concepts, déploiement

DUT. Vacataire : Alain Vidal - avidal_vac@outlook.fr

Le projet d'annuaire LDAP à Rennes 1. - Raymond Bourges - Gérard Delpeuch

Automatisation de l administration système

Annuaire LDAP + Samba

PARAMETRER SAMBA 2.2

Préparation d un serveur Apache pour Zend Framework

NIS / LDAP Virtualisation Apache serveurs virtuels

Étude de l application DNS (Domain Name System)

LDAP : concepts, déploiement

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

Institut Universitaire de Technologie

Aide-Mémoire unix. 9 février 2009

Le protocole FTP (File Transfert Protocol,

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

Synchronisation d'annuaire Active Directory et de base LDAP

Imprimantes et partage réseau sous Samba avec authentification Active Directory

Table des matières Hakim Benameurlaine 1

Le Network File System de Sun (NFS)

Administration Linux - FTP

Installation Windows 2000 Server

La Comptabilité UNIX System V Acctcom

Commandes Linux. Gestion des fichiers et des répertoires. Gestion des droits. Gestion des imprimantes. Formation Use-IT

Linux. Sécuriser un réseau. 3 e édition. l Admin. Cahiers. Bernard Boutherin Benoit Delaunay. Collection dirigée par Nat Makarévitch

Cours Programmation Système

INFO-F-404 : Techniques avancées de systèmes d exploitation

Monter automatiquement des disques distants ou locaux avec automount/autofs

I. Présentation du serveur Samba

Domain Name System. F. Nolot

Authentification unifiée Unix/Windows

TP1 - Prise en main de l environnement Unix.

Problème physique. CH5 Administration centralisée

But de cette présentation. Contrôleur de domaine avec Samba (rédigé pour Ubuntu Server) Introduction. Samba: principes

Atelier La notion de session utilisateur sous Linux

TD3 - Radius et IEEE 802.1x

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

sshgate Patrick Guiran Chef de projet support

Installation. du serveur SCRIBE virtuel d'amonecole

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Administration de systèmes

Transcription:

Authentification des comptes utilisateurs Chapitre 32 : Authentification des comptes utilisateurs Un compte utilisateur : définition de son identification pour le système définition d un environnement utilisateur Opérations possibles : création modifications destruction Formation permanente ARS 1 Authentification des comptes utilisateurs Le fichier /etc/passwd 32.1 Le fichier /etc/passwd Il contient les informations sur les identifications des utilisateurs. Exemple : root:u/oecqo.cmnyc:0:1:operator:/root:/bin/csh nobody:*:65534:65534::/: daemon:*:1:1::/: sys:*:2:2::/:/bin/csh bin:*:3:3::/bin: besancon:vshntkfqz8mek:4332:1000::/users/adm/besancon:/bin/bash... Formation permanente ARS 2

Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h> 32.2 Format du fichier /etc/passwd, <pwd.h> Le format est composé de 7 champs séparés par le caractére : : login : mot de passe : UID : GID : gecos : homedir : shell Pour la définition exacte sur sa machine, se reporter à <pwd.h>. Par exemple sur Linux : /* The passwd structure. */ struct passwd { char *pw_name; /* Username. */ char *pw_passwd; /* Password. */ uid_t pw_uid; /* User ID. */ gid_t pw_gid; /* Group ID. */ char *pw_gecos; /* Real name. */ char *pw_dir; /* Home directory. */ char *pw_shell; /* Shell program. */ }; Formation permanente ARS 3 Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h> champ 1 : login Nom sous lequel un ordinateur connait un individu. 8 caractères en général. Pour plus, vérifier Sur Linux, on peut avoir des noms plus longs que 8. Conseils : pas de majuscules, éviter les caractères accentués. champ 2 : mot de passe Mot de passe de l utilisateur stocké sous forme chiffrée non déchiffrable. Nécessité d éduquer les utilisateurs pour choisir un bon mot de passe. Les logiciels de crack de mots de passe ne déchiffrent pas les mots de passe : ils font des essais à base de dictionnaires. crack : ftp://ftp.lip6.fr/pub/unix/security/crack5.0.tar.gz john : ftp://ftp.false.com/pub/security/john/john-1.6.tar.gz Formation permanente ARS 4

Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h> champ 3 : UID Identificateur numérique compris entre 0 et 32767 (short int a priori). Sur Linux, c est un uid_t, un unsigned int. Cette valeur doit être unique au sein des utilisateurs. champ 4 : GID Identificateur numérique compris entre 0 et 32767 (short int a priori). Sur Linux, c est un gid_t, un unsigned int. Cette valeur doit être unique au sein des groupes. % ls -ln -rw-r--r-- 1 4332 1000 5544 Sep 15 22:47 cours.dvi -rw-r--r-- 1 4332 1000 940 Sep 15 22:27 cours.tex % ls -l -rw-r--r-- 1 besancon software 5928 Sep 15 22:49 cours.dvi -rw-r--r-- 1 besancon software 940 Sep 15 22:27 cours.tex Formation permanente ARS 5 Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h> champ 5 : gecos Identité en clair de l utilisateur. Les systèmes BSD y ont stockés d autres informations comme le numéro de téléphone, le numéro de bureau etc. La commande chfn (change finger) permet de modifier ce champs. champ 6 : homedir Répertoire par défaut. champ 7 : shell Shell par défaut. Si le champ est vide, on prend /bin/sh par défaut. Le shell déterminera les fichiers de configuration à installer chez l utilisateur. La commande chsh (change shell) permet de choisir parmi les shells mentionnés dans /etc/shells. Formation permanente ARS 6

Authentification des comptes utilisateurs Format du fichier /etc/passwd, <pwd.h> Quelques conseils : Il faut toujours trier les lignes de /etc/passwd selon l ordre numérique des UID : # sort -t : +2n -3 /etc/passwd Il ne faut jamais laisser de comptes sans mot de passe. Formation permanente ARS 7 Authentification des comptes utilisateurs Chiffrement des mots de passe, crypt() 32.3 Chiffrement des mots de passe, crypt() Les mots de passe sont stockés sur une forme chiffrée, mathématiquement non réversible. Algorithme de chiffrement : DES, standard fédéral de l administration américaine Ce chiffrement non réversible est dit hashing (le mot de passe chiffré est dit hashed). Disponible sur Unix via la fonction C crypt() : premier paramètre : la chaine à chiffrer second paramètre : la graine (dite salt en anglais) composée de 2 caractères résultat renvoyé : une chaine dont les 2 premiers caractères reprennent le salt Ainsi crypt("qwerty", "NU") renvoit NUMVcLVD/dM12 Formation permanente ARS 8

Authentification des comptes utilisateurs Chiffrement des mots de passe, crypt() Exemple de programme C complet : #include<stdio.h> main(int argc, char *argv[]) { printf("=> %s\n", crypt(getpass("chaine a chiffrer :"), argv[1])); } Une fois compilé, le programme montre : %./textcrypt NU Chaine a chiffrer : XXXXXXXX => NUMVcLVD/dM12 <-- QWERTY pour l exemple Formation permanente ARS 9 Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd 32.4 Cycle du mot de passe et commande passwd La commande pour changer de mot de passe d un utilisateur dans /etc/passwd est passwd. Elle appelle crypt() avec un nouveau salt tiré au hasard et avec le nouveau mot de passe entré. passwd crypt() hashed password randomseed or "salt" serveur /etc/passwd (/etc/shadow) Formation permanente ARS 10

Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd Comportement lorsqu un utilisateur change un mot de passe % passwd passwd: Changing password for besancon Enter login password: XXXXXXXX New password: ZZZZZZZZ Re-enter new password: ZZZZZZZZ passwd (SYSTEM): passwd successfully changed for besancon On tache de vérifier l identité de la personne en demandant le mot de passe initial. Formation permanente ARS 11 Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd Comportement lorsque l administrateur root change un mot de passe # passwd besancon New password: XXXXXXXX Re-enter new password: ZZZZZZZZ passwd (SYSTEM): passwd successfully changed for besancon Root n a jamais besoin de connaître le mot de passe d un utilisateur pour en changer le mot de passe. Lorsqu un utilisateur a perdu son mot de passe : root ne peut pas déchiffrer la chaine chiffrée dans /etc/passwd root peut changer le mot de passe par passwd groslourd Formation permanente ARS 12

Authentification des comptes utilisateurs Cycle du mot de passe et commande passwd La commande passwd peut comporter plus ou moins de règles de vérification de la sûreté du mot de passe : % passwd besancon Enter login password: XXXXXXXX New password: XXXXXXXX <-- on entre exprès le même mot de passe passwd(system): Passwords must differ by at least 3 positions New password: YYYYYYYY <-- mélange de lettres minuscules et majuscules passwd(system): The first 6 characters of the password must contain at least two alphabetic characters and at least one numeric or special character. passwd(system): Too many failures - try later. Permission denied Formation permanente ARS 13 Authentification des comptes utilisateurs Cycle du mot de passe et commande login 32.5 Cycle du mot de passe et commande login La commande lancée par le système pour se connecter est la commande login. Elle va devoir vérifier si les mots de passe entré et stocké sont identiques, sachant que le mot de passe est stocké sous une forme hashée. 1. L utilisateur entre login et mot de passe 2. On recupère la structure pwd de l utilisateur login 3. On extrait le salt 4. crypt() des données entrées 5. On extrait le passwd serveur /etc/passwd (ou /etc/shadow) 6. Comparaison hash stocké et hash calculé 7a. comparaison OK : connexion acceptée 7b. comparaison fausse : Formation permanente ARS connexion refusée 14

Authentification des comptes utilisateurs Cycle du mot de passe et commande login Si le mot de passe hashé est saelydiafuf5o, on réalisera donc au login la comparaison C : strcmp("saelydiafuf5o", crypt("xxxxxxxx", "sa")) avec XXXXXXXX le mot de passe en clair. Formation permanente ARS 15 Authentification des comptes utilisateurs Shadow Passwords, /etc/shadow, <shadow.h> 32.6 Shadow Passwords, /etc/shadow, <shadow.h> L idée part de la constatation que, si beaucoup de programmes accèdent au contenu de /etc/passwd pour les informations concernant UID, homedir, shell, peu en revanche l accèdent pour le mot de passe. On supprime donc le mot de passe chiffré du fichier pour le stocker dans un fichier à accès plus restreints. -rw-r--r-- -rw------- root wheel 10557 Sep 15 22:51 /etc/passwd root wheel 13318 Sep 15 22:50 /etc/master.passwd L ancien mot de passe chiffré est remplacé par exemple par un caractère comme * ou x : besancon:x:4332:1000::/users/adm/besancon:/bin/bash Formation permanente ARS 16

Authentification des comptes utilisateurs Shadow Passwords, /etc/shadow, <shadow.h> Plusieurs formats de fichiers shadow sont utilisés par les constructeurs qui ne se sont pas mis d accord. Linux Fichiers /etc/passwd et /etc/shadow # cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm:... # cat /etc/shadow root:fuqzjkzpwaytc:11237:0:99999:7:-1:-1:134540316 bin:*:11237:0:99999:7::: daemon:*:11237:0:99999:7::: adm:*:11237:0:99999:7:::... Formation permanente ARS 17 Authentification des comptes utilisateurs Shadow Passwords, /etc/shadow, <shadow.h> Solaris Fichiers /etc/passwd et /etc/shadow # cat /etc/passwd root:x:0:1:super-user:/:/sbin/sh daemon:x:1:1::/: bin:x:2:2::/usr/bin:... boumaiza:x:1001:1000:lyazid Boumaiza:/net/serveur/home/ars/boumaiza:/bin/tcsh corsini:x:1002:1000:franck Corsini:/net/serveur/home/ars/corsini:/bin/tcsh... # cat /etc/shadow root:y8fpbbq414tbu:6445:::::: daemon:np:6445:::::: bin:np:6445::::::... boumaiza:aaljcbuvx/xem:11255:::::: corsini:5ag56r/m.kd9a:10912::::::... Formation permanente ARS 18

Authentification des comptes utilisateurs Le fichier /etc/group, <grp.h> 32.7 Le fichier /etc/group, <grp.h> Le format est composé de 4 champs séparés par le caractére : : group : mot de passe : GID : membres Pour la définition exacte sur sa machine, se reporter à <grp.h>. Par exemple, sur une machine Linux : /* The group structure. */ struct group { char *gr_name; /* Group name. */ char *gr_passwd; /* Password. */ gid_t gr_gid; /* Group ID. */ char **gr_mem; /* Member list. */ }; Formation permanente ARS 19 Authentification des comptes utilisateurs Le fichier /etc/group, <grp.h> champ 1 : group Nom du groupe apparaissant par ls -lg. champ 2 : mot de passe Mot de passe du groupe. champ 3 : GID Identificateur numérique compris entre 0 et 32767. Sur Linux, c est un gid_t, un unsigned int. Cette valeur doit être unique au sein des groupes. champ 4 : membres Liste de noms de login séparés par des virgules. Formation permanente ARS 20

Authentification des comptes utilisateurs Création d un nouveau compte 32.8 Création d un nouveau compte Action mécanique automatisable. Selon le système, elle est déjà automatisée sous la forme d une commande d administration : Système AIX HP-UX Solaris FreeBSD Program smit sam admintool adduser etc. Formation permanente ARS 21 Authentification des comptes utilisateurs Création d un nouveau compte Exemple d interface graphique de création de compte : Problème : comment créer 3000 comptes en une après-midi avec cette interface? Problème : comment personnaliser cette interface? Formation permanente ARS 22

Authentification des comptes utilisateurs Création d un nouveau compte Actions schématiques à accomplir lors de la création d un compte : 1. choix de l UID et du GID en fonction du service d appartenance de la personne 2. choix du homedir (en fonction du service?) 3. choix du nom de login selon la politique locale 4. choix du shell de login 5. incorporation de ces informations dans la base de données des comptes (/etc/passwd ou NIS selon la politique du service) ; * comme mot de passe par défaut Formation permanente ARS 23 Authentification des comptes utilisateurs Création d un nouveau compte 6. ajout de l utilisateur dans /etc/group 7. création du homedir 8. copie des fichiers de configuration de l environnement (.profile,.cshrc,.xsession etc.) 9. attribuer le homedir créé à l utilisateur par chown + chgrp 10. initialisation du mot de passe si l utilisateur est présent L étape délicate dans une automatisation de création de compte est bien sûr l incorporation d une nouvelle ligne dans la base de données. Formation permanente ARS 24

Authentification des comptes utilisateurs Compte root 32.9 Compte root Sa particularité vient de son UID == 0. Quelques règles : 1. L utilisateur root n a pas. dans son PATH (précédence de la commande locale par rapport à la commande système). 2. L utilisateur root a 022 pour umask (accessibilité indispensable de certains fichiers par les utilisateurs normaux). 3. Eviter d avoir / comme homedir pour root (pollution de / par les fichiers de configuration en.foorc ). Formation permanente ARS 25 Authentification des comptes utilisateurs Comptes fictifs 32.10 Comptes fictifs Exemple de Linux : root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/var/spool/news: uucp:x:10:14:uucp:/var/spool/uucp: operator:x:11:0:operator:/root: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: ftp:x:14:50:ftp User:/home/ftp: nobody:x:99:99:nobody:/: xfs:x:43:43:x Font Server:/etc/X11/fs:/bin/false... Formation permanente ARS 26

Authentification des comptes utilisateurs Comptes fictifs Ces utilisateurs fictifs sont essentiellement des propriétaires de fichiers. Par exemple bin est le propriétaire de la plupart des exécutables : -rwxr-xr-x 1 bin bin 40960 Aug 9 1994 stty* -rws--x--x 1 root bin 24576 Aug 9 1994 su* -rwxr-xr-x 1 bin bin 24576 Aug 9 1994 sum* A noter l emploi du bit s sur la commande su. µ son exécution se fait au nom du propriétaire du fichier, ici root. Formation permanente ARS 27 Authentification des comptes utilisateurs Commandes id, groups 32.11 Commandes id, groups La commande id renvoit votre UID et vos GID, primaire et secondaires : % id uid=1000(besancon) gid=4(adm) groups=4(adm),0(root),3(sys),\ 12(daemon),1000(sae3),1002(www) La commande groups renvoit vos GID d appartenance : % groups adm root sys daemon sae3 www Formation permanente ARS 28

Authentification des comptes utilisateurs Commande su 32.12 Commande su La commande su permet de changer d identité : su [-] utilisateur2 Vérification par demande du mot de passe de l utilisateur destination. Pour hériter complètement de l identité, utiliser l option "-" de la commande "su". Formation permanente ARS 29 Authentification des comptes utilisateurs Commande su Quand on se trompe sur le mot de passe : % id uid=4332(besancon) gid=1000(software) groups=1000(software) % su besancon Password: Sorry Quand on donne le bon mot de passe : % id uid=4332(besancon) gid=1000(software) groups=1000(software) % su beurnez Password: % id uid=8520(beurnez) gid=8506(lps-06) groups=8506(lps-06) Formation permanente ARS 30

Authentification des comptes utilisateurs Commande su Pour devenir root, la commande est donc simplement : % su root ce qui peut se simplifier encore en : % su Formation permanente ARS 31 Authentification des comptes utilisateurs Commande su Pour hériter complètement de l identité, utiliser l option "-" de la commande "su". Exemple de transmission de données parasites de la premiére identité à la seconde identité : % id uid=4332(besancon) gid=1000(software) groups=1000(software) % pwd /users/adm/besancon % su beurnez % id uid=8520(beurnez) gid=8506(lps-06) groups=8506(lps-06) % pwd /users/adm/besancon % printenv... MAIL=/var/mail/besancon... Certaines variables d environnement font encore référence à l identité de départ! Formation permanente ARS 32

Authentification des comptes utilisateurs Commande su Exemple de non transmission de données parasites de la première identité à la seconde identité : % id uid=4332(besancon) gid=1000(software) groups=1000(software) % pwd /users/adm/besancon % su - beurnez % id uid=8520(beurnez) gid=8506(lps-06) groups=8506(lps-06) % pwd /users/stat/beurnez % printenv... MAIL=/var/mail/beurnez... Les variables d environnement font référence maintenant au second utilisateur exclusivement. Formation permanente ARS 33 Authentification des comptes utilisateurs Deviner des mots de passe 32.13 Deviner des mots de passe L algorithme DES sert à hasher les mots de passe. Si l on a accès au contenu de /etc/shadow (ou /etc/passwd en mode non protégé), on peut utiliser certains outils pour vérifier la complexité des mots de passe en appliquant des dictionnaires et des règles d applications : John the ripper, disponible à http://www.openwall.com/john/ Crack, disponible à http://www.users.dircon.co.uk/~crypto/ Formation permanente ARS 34

NIS Chapitre 33 : NIS NIS Network Information Service Créé par SUN en 1985 Anciennement Yellow Pages µ certaines commandes ont un nom en "yp..." Version NIS+ vers 1992, radicalement différente (cf annexe) C est un protocole réseau d accès à des informations centralisées sur un ou plusieurs serveurs redondants. Utilisation la plus courante : partager la base des comptes Unix. Formation permanente ARS 35 NIS Architecture de NIS 33.1 Architecture de NIS Architecture construite en mode client / serveur : D A T A Maitre D A T A D A T A Esclave 1 Esclave 2 Mise a jour push / pull D A T A D A T A D A T A D A T A D A T A Client 1 Client 2 Client 3 Client 4 Formation permanente ARS 36

NIS Architecture de NIS Caractéristiques : Communications réseau via RPC (Remote Procedure Call) Propagation des données (maps) du master server aux slave servers en mode pull ou en mode push. Propagation des maps complètes Seul le master server peut modifier les données Les slave servers diffusent les données sans pouvoir les modifier Formation permanente ARS 37 NIS Données NIS : maps NIS, DBM, ypcat, ypmatch 33.2 Données NIS : maps NIS, DBM, ypcat, ypmatch Les données manipulées par NIS : maps Les maps contiennent des couples (clef, valeur). Il n y a que le serveur NIS maître qui peut changer le contenu d une map. Une map est au format DBM (cf man dbm) ; une map se compose de 3 fichiers : le fichier source le fichier de suffixe.pag le fichier de suffixe.dir Formation permanente ARS 38

NIS Données NIS : maps NIS, DBM, ypcat, ypmatch La commande makedbm permet de convertir le fichier source en les 2 fichiers constituant le DBM. % cat demo clef1 banane clef2 arbre % makedbm demo demo % ls -l demo test* -rw-r--r-- 1 besancon adm 23 Aug 15 11:56 demo -rw------- 1 besancon adm 0 Aug 15 11:57 demo.dir -rw------- 1 besancon adm 1024 Aug 15 11:57 demo.pag Dans le système NIS, les maps sont stockées sur le master server dans /var/yp/nom-du-domaine-nis : % cd /var/yp/nom-de-domaine-nis % ls -l passwd* -rw------- 1 root other 4096 Nov 23 07:26 passwd.byname.dir -rw------- 1 root other 8192 Nov 23 07:26 passwd.byname.pag -rw------- 1 root other 4096 Nov 23 07:26 passwd.byuid.dir -rw------- 1 root other 8192 Nov 23 07:26 passwd.byuid.pag Formation permanente ARS 39 NIS Données NIS : maps NIS, DBM, ypcat, ypmatch Les maps sont construites automatiquement à partir de tous les fichiers sources des maps : passwd.byname passwd.byuid /etc/hosts makedbm NIS MASTER hosts.byname hosts.byuid /etc/passwd Le fichier /var/yp/makefile automatise toutes les créations de maps et leur propagation aux slave servers (mode push). Formation permanente ARS 40

NIS Données NIS : maps NIS, DBM, ypcat, ypmatch Extrait de /var/yp/makefile :... hosts.time: $(DIR)/hosts @($(MULTI) $(B) -l $(DIR)/hosts); @($(STDHOSTS) $(DIR)/hosts $(CHKPIPE)) \ (awk BEGIN { OFS="\t"; } $$1!~ /^#/ { print $$1, $$0 } $(CHKPIPE)) \ $(MAKEDBM) $(B) - $(YPDBDIR)/$(DOM)/hosts.byaddr; @touch hosts.time; @echo "updated hosts"; @if [! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) hosts.byname; fi @if [! $(NOPUSH) ]; then $(YPPUSH) -d $(DOM) hosts.byaddr; fi @if [! $(NOPUSH) ]; then echo "pushed hosts"; fi... La construction d une map se résume alors à (par exemple suite à une modification de /etc/hosts) : # vi /etc/hosts # cd /var/yp # make hosts updated hosts pushed hosts Formation permanente ARS 41 NIS Données NIS : maps NIS, DBM, ypcat, ypmatch La librairie DBM permet de créer des enregistrements de taille maximale 1024 octets : % man dbm SunOS/BSD Compatibility Library Functions dbm(3b) NAME... dbm, dbminit, dbmclose, fetch, store, delete, firstkey, nextkey - data base subroutines The sum of the sizes of a key/content pair must not exceed the internal block size (currently 1024 bytes). Moreover all key/content pairs that hash together must fit on a single block. store will return an error in the event that a disk block fills with inseparable data. Formation permanente ARS 42

NIS Données NIS : maps NIS, DBM, ypcat, ypmatch Quelques noms de maps : passwd.byname, passwd.byuid, group.byname, group.bygid, publickey.byname, hosts.byaddr, hosts.byname, mail.byaddr, mail.aliases, services.byname, services.byservicename, rpc.bynumber, rpc.byname, protocols.bynumber, protocols.byname, networks.byaddr, networks.byname, netmasks.bymask, netmasks.byaddr, ethers.byname, ethers.byaddr, bootparams, auto.master, auto.home, auto.direct, auto.src dont les plus utiles sont : map passwd map group map hosts map netgroup Formation permanente ARS 43 NIS Données NIS : maps NIS, DBM, ypcat, ypmatch La commande ypcat permet de consulter une map NIS depuis n importe quel client. Syntaxe : ypcat map-nis La commande ypmatch permet de consulter la valeur d une ou plusieurs clefs dans une certaine map NIS depuis n importe quel client. Syntaxe : ypmap clef1 clef2... map-nis Formation permanente ARS 44

NIS Client NIS, domainname, ypbind, ypwhich, ypset 33.3 Client NIS, domainname, ypbind, ypwhich, ypset Un client NIS doit se connecter à un serveur NIS. C est l action de binding. Le binding nécessite : de fournir un nom de domaine NIS, le domainname ; une machine se déclare comme membre du groupe servi par les serveurs NIS de préciser la méthode de localisation du serveur NIS : broadcast ou explicite Formation permanente ARS 45 NIS Client NIS, domainname, ypbind, ypwhich, ypset Nom de domaine La commande activant le nom de domaine est domainname. Pour consulter le nom de domaine : domainname Pour configurer manuellement le nom de domaine : domainname nom-du-domaine-nis Configuration du domainname automatique au démarrage : Sur Solaris : renseigner le fichier /etc/defaultdomain Sur Linux : renseigner le fichier /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4=false HOSTNAME=pcars6.formation.jussieu.fr DOMAINNAME=formation.jussieu.fr GATEWAY=134.157.253.126 GATEWAYDEV=eth0 NISDOMAIN=real.world Formation permanente ARS 46

NIS Client NIS, domainname, ypbind, ypwhich, ypset Réalisation du binding Un client NIS fait tourner le démon ypbind qui se connecte à un serveur NIS que l on trouve selon 2 méthodes possibles : découverte par broadcast ; c est le mode par défaut. Sur Solaris, /usr/lib/netsvc/yp/ypbind -broadcast En pratique il y a une map ypservers qui contient les noms des serveurs. Cf /var/yp/binding/nom-de-domaine-nis/ypservers demande de connexion explicite Sur Solaris faire : # ypbind -ypsetme # ypset nom-du-serveur-nis-voulu La commande ypwhich affiche le nom du serveur NIS utilisé. Formation permanente ARS 47 NIS Client NIS, domainname, ypbind, ypwhich, ypset On peut controler un peu quels sont les clients qui se bindent aux servers. Pour cela, remplir sur les slave servers et sur le master server le fichier /var/yp/securenets. Il liste les machines autorisées, sous forme adresses et netmasks. Par exemple : 159.169.0.0 255.255.0.0 129.187.135.0 255.255.255.0 Signification : seules les machines des réseaux 159.169.0.0/16 et 129.187.135.0/24 sont autorisées à se binder. Formation permanente ARS 48

NIS Client NIS, domainname, ypbind, ypwhich, ypset Consultation des maps Un client NIS doit indiquer quels maps il utilisera. La plus courante est la map passwd dont on indique l utilisation par l ajout d une ligne en fin de fichier /etc/passwd : +::65534:65534::: Signification de cette ligne supplémentaire (à vérifier sur chaque système car il existe des différences) : Tout champ renseigné de cette ligne + remplace le même champ de la map inconditionnellement sauf pour UID et GID. Pour UID et GID, les valeurs mentionnées s activeront si ces champs sont absents de la map (c est-à-dire quand la map est vérolée ce qui indique un problème de fichier source vérolé). Formation permanente ARS 49 NIS Client NIS, domainname, ypbind, ypwhich, ypset Exemple : +:*LK*:65534:65534:::/usr/local/bin/tcsh Signification : le passwd chiffré des utilisateurs de la map passwd est *LK* l UID sera 65534 si l entrée de la map ne précise pas d UID le GID sera 65534 si l entrée de la map ne précise pas de GID le shell de login est mis automatiquement à /usr/local/bin/tcsh Formation permanente ARS 50

NIS Slave server NIS, ypserv, ypxfr 33.4 Slave server NIS, ypserv, ypxfr Un serveur NIS esclave fait tourner plusieurs démons : ypserv ypbind Le démon ypserv est là pour répondre aux requêtes des client NIS qui se sont bindés sur lui. Le démon ypbind n est là que pour faire du slave server un client NIS aussi (mais ce n est pas obligatoire). Il n est pas garanti que le slave server soit client NIS de lui même. Il peut se binder sur un autre serveur NIS du même domaine. Formation permanente ARS 51 NIS Slave server NIS, ypserv, ypxfr Un slave server peut être down au moment où un master slave fait un push des maps. µ besoin pour le slave server de se resynchroniser avec le master server ; pull des maps de la part du slave server Cela se fait au moyen de shell scripts lancés périodiquement via la crontab : 30 * * * * /usr/lib/netsvc/yp/ypxfr_1perhour 31 1,13 * * * /usr/lib/netsvc/yp/ypxfr_2perday 32 1 * * * /usr/lib/netsvc/yp/ypxfr_1perday Ces scripts récupérent plus ou moins de maps suivant la fréquence de leur lancement. Exemple de l un de ces shell scripts, ypxfr_1perhour : #! /bin/sh # ypxfr_1perhour.sh - Do hourly NIS map check/updates PATH=/bin:/usr/bin:/usr/lib/netsvc/yp:$PATH export PATH ypxfr passwd.byname ypxfr passwd.byuid Formation permanente ARS 52

NIS Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd 33.5 Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd Un serveur NIS maître fait tourner plusieurs démons : ypserv ypbind ypxfrd rpc.yppasswdd Même rôle pour ypserv que pour un slave server. Même rôle pour ypbind que pour un slave server. Le démon ypxfrd assure les transferts de maps demandés par les slave servers (mode pull). (en Unix, on rencontre souvent le mot xfr pour transfert) Le démon rpc.yppasswdd assure le changement des mots de passe. Formation permanente ARS 53 NIS Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd Avec NIS, un client NIS ne peut pas modifier le contenu d une map. Pour changer un mot de passe, on va émuler le changement du mot de passe sur le master server dans son fichier source (/etc/passwd) puis la reconstruction de la map passwd et sa transmission en totalité aux slave servers. Ce processus se réalise en utilisant la commande yppasswd qui demande les mots de passe à l utilisateur puis appelle rpc.yppasswdd sur le master server qui simule la session interactive composée des commandes : # passwd # cd /var/yp # make passwd Formation permanente ARS 54

NIS Master server NIS, ypxfrd, rpc.yppasswdd, yppasswd Sur un client NIS Linux : % yppasswd Changing NIS account information for besancon on serveur. Please enter old password: ******** Changing NIS password for besancon on serveur. Please enter new password: ******** Please retype new password: ******** The NIS password has been changed on serveur. Sur un master server NIS Solaris : % yppasswd Enter login(nis) password: ******** New password: ******** Re-enter new password: ******** NIS passwd/attributes changed on serveur Formation permanente ARS 55 NIS Netgroups 33.6 Netgroups Le système NIS permet de définir des groupes d autorisation d accès : les netgroups. Ces groupes sont diffusés via la map netgroup. Un netgroup est un nom symbolique associé à un ensemble de triplets (je n ai jamais vu le troisième champ avoir une quelconque utilité en pratique) : nom-de-netgroup \ (machine, utilisateur, nom-de-domaine-nis) \ (machine, utilisateur, nom-de-domaine-nis) \... On définit en pratique des netgroups concernant des machines et des netgroups concernant des utilisateurs. On autorisera ainsi ou pas des groupes d utilisateurs ou de machines à accéder à certaines ressources. Formation permanente ARS 56

NIS Netgroups Exemple de netgroup de machines : nains \ (atchoum.phys.ens.fr,,physique) \ (dormeur.phys.ens.fr,,physique) \ (joyeux.phys.ens.fr,,physique) \ (grincheux.phys.ens.fr,,physique) \ (prof.phys.ens.fr,,physique) \ (timide.phys.ens.fr,,physique) \ (simplet.phys.ens.fr,,physique) Exemple de netgroup d utilisateurs : etudiants \ (,jean,) \ (,pierre,) \ (,valerie,) Formation permanente ARS 57 NIS Netgroups Exemple d utilisation d un netgroup d utilisateurs au niveau de /etc/passwd : field:password HERE:0:1:Field Service:/usr/field:/bin/csh operator:password HERE:5:28:Operator:/opr:/opr/opser sys:password HERE:2:3:Mr Kernel:/usr/sys: bin:password HERE:3:4:Mr Binary:/bin: pot:*:16:16:menupot:/users/staffs/pot: -@etudiants: +@net_administrateurs::0:0::: +@net_utilisateurs::65534:65534:::/bin/noshell Signification : On rejette les lignes de la map passwd dont le login est indiqué dans le netgroup etudiants On accepte les lignes de la map passwd dont le login est indiqué dans le netgroup net_administrateurs On accepte les lignes de la map passwd dont le login est indiqué dans le netgroup net_utilisateurs Formation permanente ARS 58

NIS Netgroups Exemple d utilisation d un netgroup de machines au niveau de l exportation de disques via NFS (fichier /etc/exports, cf chapitre sur NFS) : /usr/openwin -access=nains Formation permanente ARS 59 NIS Installation de NIS 33.7 Installation de NIS Master server Lancer ypinit -m Slave servers Lancer ypinit -s master-server Ajouter dans la crontab les appels aux scripts ypxfr_* Client NIS Spécifier le domainname Formation permanente ARS 60

NIS+ Chapitre 34 : NIS+ Cf annexe pour un document sur NIS+. Nous n évoquerons ici que les défauts de NIS ayant conduit à l apparition de son successeur, NIS+. Le système NIS+ n a pas connu de succès et il est maintenant officiellement abandonné au profit de LDAP par son principal défenseur, SUN. Principaux reproches à NIS : pas d authentification du client aux serveurs NIS ; connaitre le domainname suffit à se binder les maps sont transmises en totalité même en cas de faible modification de leurs contenus inadaption du principe du domaine NIS dans le cas de structures WAN mode broadcast Formation permanente ARS 61

LDAP Chapitre 35 : LDAP 35.1 Problématique Cas de l université de Paris 4 : base Microsoft Excel du personnel administratif base Microsoft Access du personnel enseignant base /etc/passwd des comptes email des utilisateurs base mysql des 2 catégories de personnel prochainement logiciel à base d Oracle prochainement Microsoft Active Directory Date XYZ : envoyer un email à tous les personnels administratifs sachant que le service du personnel ne fournira qu une liste avec nom et prénom. Comment l ingénieur système fait-il? Date XYZ2 : envoyer un email à tous les personnels administratifs sauf ceux du site de Clignancourt, sachant que le service du personnel ne peut pas fournir de liste cette fois-ci. Comment l ingénieur système fait-il? Formation permanente ARS 62 LDAP Principe d annuaire 35.2 Principe d annuaire Un annuaire informatique est un service permettant d accéder à des informations, relatives à des personnes ou à diverses ressources de façon organisée. Objectif : maintenir de façon cohérente et contrôlée les archipels de données et obtenir des données de référence. Un annuaire n est pas une base de données relationnelles. Une base de données (SGBD) se caractérise par : Le schéma des données est défini à 100% pour résoudre un certain problème. Les applications connaissent explicitement le schéma des données. Les objets sont complexes et éclatés entre plusieurs tables liées par des relations complexes. Un SGBD supporte les transactions. Un SGBD supporte un langage comme SQL qui permet des fonctions d interrogation et de mises à jour très complexes. Un SGBD centralise les données pour éviter les problèmes de synchronisation de données et de qualité des temps de réponse. Formation permanente ARS 63

LDAP Principe d annuaire Un annuaire se caractérise par : Les objets sont indépendants (pas de liens de dépendance entre eux). Les objets peuvent être distribué sur plusieurs annuaires pour assurer une meilleure disponibilité. Le schéma est standardisé pour pouvoir partager les données. Le schéma est extensible pour prendre en compte tous les besoins mais cela est fait de façon compatible avec les standards. Les applications d annuaire ignorent la structure interne des données. Un annuaire est principalement consulté en lecture et est optimisé pour cela. Formation permanente ARS 64 LDAP Annuaire LDAP 35.3 Annuaire LDAP LDAP Lightweight Directory Access Protocol Héritier de l annuaire ISO X500. Version 3 actuellement. RFC 2251 à 2256, RFC 2829 à 2830, RFC 2849. Il n y a pas de standard de représentation des contrôles d accès aux données. LDAP : nom d un protocole nom d une structure de données nom d implémentations de serveurs suivant le protocole Confusion possible... Formation permanente ARS 65

LDAP Modèle de données de LDAP : DIT, suffixe 35.4 Modèle de données de LDAP : DIT, suffixe Les entrées sont organisées sous forme d arbre ou DIT (Directory Information Tree). L une des difficultés de LDAP : construire l organisation du DIT. De quoi est-il le reflet? DIT à caractère organisationnel? dc=company,dc=com dc=recherche dc=finance dc=marketing dc=people dc=people dc=people dc=groups dc=groups dc=groups Formation permanente ARS 66 LDAP Modèle de données de LDAP : DIT, suffixe DIT à caractère géographique? dc=company,dc=com dc=america dc=europe dc=asia dc=people dc=people dc=people dc=groups dc=groups dc=groups Pas de solution universelle. Formation permanente ARS 67

LDAP Modèle de données de LDAP : DIT, suffixe La racine de l arbre est uniquement conceptuelle et n existe pas réellement. C est le suffixe qui sert à déterminer les adresses absolues des objets (comme / pour l arborescence des fichiers Unix). dc=company,dc=com SUFFIXE dc=recherche dc=finance dc=marketing dc=people dc=people dc=people dc=groups dc=groups dc=groups Le suffixe peut avoir plusieurs formes : forme 1 : o=company.com forme 2 : o=company,c=fr forme 3 : dc=company,dc=com On préférera la 3ième forme, ayant un certain rapport avec les noms de domaine DNS. Formation permanente ARS 68 LDAP Modèle de données de LDAP : DIT, suffixe Exemple de DIT visualisé avec LdapBrowser disponible à l URL http://www.iit.edu/~gawojar/dap/ : Formation permanente ARS 69

LDAP Modèle de données de LDAP : entrée, attributs, DN, URL 35.5 Modèle de données de LDAP : entrée, attributs, DN, URL DSE Directory Service Entry Les entrées dans le DIT (DSE) sont des agrégats d attributs monovalués ou multivalués qui permettent de stocker n importe quel format de données (prénom, numéro de téléphone, image, son, etc.) Les DSE sont stockées dans le DIT et arrangés selon leur identifiant unique, le DN (Distinguished Name). Un DN est la concaténation d un RDN (Relative DN) et du DN des parents. Un DN s apparente à une clef primaire. suffixe : dc=company,dc=com RDN : ou=recherche DN : ou=recherche,dc=company,dc=com RDN : uid=besancon DN : uid=besancon,ou=recherche,dc=company,dc=com (le RDN doit être un des attributs/valeurs du DSE) Formation permanente ARS 70 LDAP Modèle de données de LDAP : entrée, attributs, DN, URL Formation permanente ARS 71

LDAP Modèle de données de LDAP : entrée, attributs, DN, URL Il existe des URL LDAP (RC 2255) qui prennent la forme : ldap://serveur:389/dn Par exemple dans communicator de netscape : Formation permanente ARS 72 LDAP Modèle de données de LDAP : schéma, syntaxes, OID, objectclass 35.6 Modèle de données de LDAP : schéma, syntaxes, OID, objectclass Le schéma du DIT regroupe les définitions relatives aux types d objets que peut contenir l annuaire ou que l on peut rechercher. Le schéma contiendra des objets instanciations de classes LDAP, les définitions de ces classes et de leurs attributs, les syntaxes de ces attributs. Tous ces éléments seront identifiés par des Object Identifiers dits OID. attributetype ( 1.3.6.1.1.1.1.0 NAME uidnumber DESC An integer uniquely identifying a user in a domain EQUALITY integermatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) objectclass ( 1.3.6.1.1.1.2.0 NAME posixaccount SUP top AUXILIARY DESC Abstraction of an account with POSIX attributes MUST ( cn $ uid $ uidnumber $ gidnumber $ homedirectory ) MAY ( userpassword $ loginshell $ gecos $ description ) ) (1.3.6.1.1.1.1.0 et 1.3.6.1.4.1.1466.115.121.1.27 sont des OIDS) Formation permanente ARS 73

LDAP Modèle de données de LDAP : schéma, syntaxes, OID, objectclass Une syntaxe est un modèle de représentation des valeurs de l attribut. Par exemple booléen, entier, binaire (pour une image, un son), etc. L attribut objectclass spécifie la liste des classes qu instancie un DSE. Chaque classe va construire la structure du DSE en spécifiant une liste d attributs obligatoirement présents (MUST dans l objectclass) et une liste d attributs facultatifs (MAY dans l objectclass). objectclass ( 2.16.840.1.113730.3.2.2 NAME inetorgperson DESC RFC2798: Internet Organizational Person SUP organizationalperson STRUCTURAL MAY ( audio $ businesscategory $ carlicense $ departmentnumber $ displayname $ employeenumber $ employeetype $ givenname $ homephone $ homepostaladdress $ initials $ jpegphoto $ labeleduri $ mail $ manager $ mobile $ o $ pager $ photo $ roomnumber $ secretary $ uid $ usercertificate $ x500uniqueidentifier $ preferredlanguage $ usersmimecertificate $ userpkcs12 ) ) objectclass ( 1.3.6.1.1.1.2.0 NAME posixaccount SUP top AUXILIARY DESC Abstraction of an account with POSIX attributes MUST ( cn $ uid $ uidnumber $ gidnumber $ homedirectory ) MAY ( userpassword $ loginshell $ gecos $ description ) ) µ l attribut uid sera de type MUST. Formation permanente ARS 74 LDAP Modèle de données de LDAP : schéma, syntaxes, OID, objectclass Les objectclass de LDAP s inscrivent dans un hiérarchie dont la racine est l objectclass top. Chaque classe hérite d une seule classe mère. Chaque classe peut donner lieu à plusieurs sous classes. (Abstract) top (Structural) person (Auxiliary) companyperson (Structural) organizationalperson (Structural) residentialperson Formation permanente ARS 75

LDAP Protocole LDAP / Bind 35.7 Protocole LDAP / Bind Au niveau réseau : LDAP : TCP port 389 LDAP + SSL : TCP port 636 ( syntaxe LDAP au format ASN.1 ) + BER Un dialogue LDAP s établit après une phase d ouverture de session dite bind. Le bind peut être anonyme ou authentifié. Formation permanente ARS 76 LDAP Format de données LDIF 35.8 Format de données LDIF Problème : comment manipuler les objets LDAP en pratique? Réponse : en les manipulant au format LDAP Data Interexchange Format, dit LDIF LDIF n intervient pas dans le protocole LDAP (pas de mention dans les RFC par exemple). LDIF n est compris que par les utilitaires qui le convertissent en protocole LDAP. Formation permanente ARS 77

LDAP Format de données LDIF Attention aux caractères non ASCII : si la valeur d un attribut est uniquement composé de caractères ASCII, on l écrit attribut : valeur si la valeur d un attribut contient des caractères non ASCII, il faut coder cette valeur en Base64 puis la coder en UTF-8 et écrire au final attribut :: valeur2 Par exemple l attribut description de valeur Université de Paris-Sorbonne, Paris 4 ne sera pas codé en LDIF sous la forme description: Université de Paris-Sorbonne, Paris 4 mais sous la forme description:: VW5pdmVyc2l0w6kgZGUgUGFyaXMtU29yYm9ubmUsIFBhcmlzIDQ=! Notez les différences! 2 utilitaires pratiques : http://docs.univ-nancy2.fr/ldap/outilsperl/decodldif.pl http://docs.univ-nancy2.fr/ldap/outilsperl/encodldif.pl Formation permanente ARS 78 LDAP Format de données LDIF Exemple d une DSE avec des caractères accentués non encore codés en LDIF : dn: ou=personnel,dc=paris4,dc=sorbonne,dc=fr objectclass: top objectclass: organizationalunit ou: Personnels de l Université de Paris-Sorbonne, Paris 4 businesscategory: academic research telephonenumber: +33 (0) 1 40 46 22 11 facsimiletelephonenumber: +33 (0) 1 40 46 25 88 postofficebox: Université de Paris-Sorbonne, Paris 4 postalcode: F-75230 postaladdress: 1 rue Victor Cousin l: Paris, France description: Université de Paris-Sorbonne, Paris 4 Exemple d une DSE au format LDIF : dn: ou=personnel,dc=paris4,dc=sorbonne,dc=fr objectclass: top objectclass: organizationalunit ou:: UGVyc29ubmVscyBkZSBsJ1VuaXZlcnNpdMOpIGRlIFBhcmlzLVNvcmJvbm5lLCBQYXJpcyA0 businesscategory: academic research telephonenumber: +33 (0) 1 40 46 22 11 facsimiletelephonenumber: +33 (0) 1 40 46 25 88 postofficebox:: VW5pdmVyc2l0w6kgZGUgUGFyaXMtU29yYm9ubmUsIFBhcmlzIDQ= postalcode: F-75230 postaladdress: 1 rue Victor Cousin l: Paris, France description:: VW5pdmVyc2l0w6kgZGUgUGFyaXMtU29yYm9ubmUsIFBhcmlzIDQ= Formation permanente ARS 79

LDAP Implémentations 35.9 Implémentations Il existe plusieurs implémentations de LDAP : OpenLdap, http://ww.openldap.org, version 2.1.3 (au 21 août 2002) Iplanet Directory (anciennement Netscape Directory Server, racheté par SUN), incorporé de base dans Solaris 8 et ultérieur Novell Directory Services, version 4? Les différentes implémentations respectent les normes du protocole. Par contre, elles différent au niveau de tout ce qui n est pas norme. En particulier, les droits d accès aux données sont codés de façon incompatible. Formation permanente ARS 80 LDAP OpenLDAP 35.10 OpenLDAP Cf http://www.openldap.org/ Les versions 2.x.y d OpenLDAP sont compatibles avec les normes de LDAP v3. Le logiciel se compose de : du serveur LDAP slapd du serveur de synchronisation slurpd d utilitaires (slapadd ldapsearch, ldapadd, ldapdelete, ldapmodify, ldappasswd, etc.) librairies, include LDAP un fichier de configuration slapd.conf dans lequel on définit le suffixe, le rootdn, le mot de passe du rootdn Formation permanente ARS 81

LDAP OpenLDAP Le mécanisme de réplication de serveurs OpenLDAP est le suivant : 1) demande de modification 2) réponse : referral slapd (Esclave) 7) slurpd client 6) 3) demande de modification 4) réponse (OK/not OK) slapd (Maitre) 5) Journal des modifications Formation permanente ARS 82 LDAP ObjectClass posixaccount, shadowaccount 35.11 ObjectClass posixaccount, shadowaccount Cf RFC2307 Cf le schéma nis.schema dans OpenLDAP. L objectclass posixaccount est l objet qui implémente l équivalent de la structure C de <pwd.h> : objectclass ( 1.3.6.1.1.1.2.0 NAME posixaccount SUP top AUXILIARY DESC Abstraction of an account with POSIX attributes MUST ( cn $ uid $ uidnumber $ gidnumber $ homedirectory ) MAY ( userpassword $ loginshell $ gecos $ description ) ) L objectclass shadowaccount est l objet qui implémente le principe des shadow passwds : objectclass ( 1.3.6.1.1.1.2.1 NAME shadowaccount SUP top AUXILIARY DESC Additional attributes for shadow passwords MUST uid MAY ( userpassword $ shadowlastchange $ shadowmin $ shadowmax $ shadowwarning $ shadowinactive $ shadowexpire $ shadowflag $ description ) ) Formation permanente ARS 83

LDAP Un peu de bibliographie 35.12 Un peu de bibliographie http://docs.univ-nancy2.fr/ldap/ http://www.openldap.org/ http://www.linux-france.org/article/serveur/ldap/ http://www.unich.edu/~dirsvc/ldap/ http://www.redbooks.ibm.com http://www-sop.inria.fr/semir/personnel/laurent.mirtain/ldap.html http://www.cru.fr/ldap/ http://www.ldapcentral.com http://www.rage.net/ldap/ http://www.annuairesldap.com Formation permanente ARS 84

Sélection de naming services, /etc/nsswitch.conf Chapitre 36 : Sélection de naming services, /etc/nsswitch.conf 36.1 Problématique Exemple : il y a les fichiers système (/etc/passwd, /etc/hosts, /etc/services,...) ilyaledns ilyanis il y a NIS+ ilyaldap etc. Comment choisir quels services répondront aux requêtes de recherche de nom? Une solution : préciser quels naming services seront utilisés et dans quel ordre au niveau du fichier /etc/nsswitch.conf (naming service switch). Formation permanente ARS 85 Sélection de naming services, /etc/nsswitch.conf Syntaxe de /etc/nsswitch.conf 36.2 Syntaxe de /etc/nsswitch.conf Le fichier est au format suivant : service: source [ status=action status=sction... ] source... avec : pour source l un des mots clef files, dns, ldap, nis, nisplus, xfn (liste à vérifier selon les systèmes Unix offrant plus ou moins de ces services) pour status l un des mots clef suivants : SUCCESS, entrée recherchée trouvée NOTFOUND, entrée recherchée non trouvée UNAVAIL, la source n est pas configurée sur ce système ou bien elle est défaillante TRYAGAIN, la source est occupée et ne peut pas répondre actuellement, peut-être plus tard Formation permanente ARS 86

Sélection de naming services, /etc/nsswitch.conf Syntaxe de /etc/nsswitch.conf pour action l un des mots clefs : return, retourner la valeur trouvée ou la non valeur continue, essayer la source suivante forever (uniquement pour TRYAGAIN), persister sur cette source jusqu à avoir une réponse Par défaut, on a pour chaque source : [SUCCESS=return NOTFOUND=continue UNAVAIL=continue TRYAGAIN=forever] Formation permanente ARS 87 Sélection de naming services, /etc/nsswitch.conf Exemple de /etc/nsswitch.conf 36.3 Exemple de /etc/nsswitch.conf (pris sur SOLARIS) passwd: files ldap group: files ldap hosts: ldap [NOTFOUND=return] files ipnodes: files networks: ldap [NOTFOUND=return] files protocols: ldap [NOTFOUND=return] files rpc: ldap [NOTFOUND=return] files ethers: ldap [NOTFOUND=return] files netmasks: ldap [NOTFOUND=return] files bootparams: ldap [NOTFOUND=return] files publickey: ldap [NOTFOUND=return] files netgroup: ldap automount: files ldap aliases: files ldap # for efficient getservbyname() avoid ldap services: files ldap sendmailvars: files # role-based access control auth_attr: files ldap exec_attr: files ldap prof_attr: files ldap user_attr: files ldap # audit audit_user: files ldap project: files ldap Formation permanente ARS 88

Sélection de naming services, /etc/nsswitch.conf A propos de LDAP 36.4 A propos de LDAP Pour les systèmes n incorporant pas LDAP en natif dans l OS, se reporter à : http://www.padl.com/download/nss_ldap.tgz http://www.openldap.org/ Formation permanente ARS 89

Pluggable Authentification Module, PAM Chapitre 37 : Pluggable Authentification Module, PAM 37.1 Problématique Exemple : Soit une machine dans une université, hébergeant les comptes de 10 professeurs et de 1000 élèves. La machine est équipée d un modem. Les professeurs sont autorisés à se connecter à la machine par modem, pas les élèves. La machine est cliente NIS. Quand on se connecte par modem sur une machine, le système lance la commande login lorsque la connexion s établit. Comment implémenter cela? En modifiant le programme login pour l adapter à ce cas très particulier??? Formation permanente ARS 90 Pluggable Authentification Module, PAM Problématique La problématique en général : Comment changer une méthode d authentification dans un programme (par exemple FTP) sans avoir à tout reprogrammer? Une solution développée par SUN à l origine et reprise et encouragée dans Linux : Pluggable Authentification Module dit PAM Formation permanente ARS 91

Pluggable Authentification Module, PAM Principe de PAM 37.2 Principe de PAM L authentication fait appel par l intermédiaire de PAM à des modules externes de code d authentification appropriée selon le service. On déporte l authentification en dehors du programme. 4 catégories de modules PAM : module d authentification (authentication) fonctionnalités pour authentifier un utilisateur et définir ses créances module de gestion de compte (account management) fonctionnalités pour déterminer si l utilisateur dispose d un compte valide (car possibilité d expiration de mot de passe dit password aging, de restrictions d accès horaire) module de gestion de session (session management) fonctionnalités pour définir et terminer les sessions utilisateur module de gestion de mot de passe (password management) fonctionnalités pour changer un mot de passe utilisateur et certaines caractéristiques du compte Pour une certaine application, on organise les modules nécessaires sous forme d une pile et chaque module de la pile va être essayé pour constituer l authentification demandée. Selon la configuration, un utilisateur pourra être amené à rentrer plusieurs mots de passe. Formation permanente ARS 92 Pluggable Authentification Module, PAM Fichier de configuration /etc/pam.conf 37.3 Fichier de configuration /etc/pam.conf /etc/pam.conf définit quels modules seront utilisés pour chaque application. (Sur Linux, on trouve aussi le répertoire /etc/pam.d qui contient un fichier par application portant le nom de l application. Ainsi /etc/pam.d/login pour le service login.) Une ligne de /etc/pam.conf contient 5 champs : service_name module_type control_flag module_path options Leservice_name nomme le service concerné par la ligne (other pour service joker) Lemodule_type est l un des 4 mots clef : auth, account, session, password Lecontrol_flag est l un des 4 mots clef : requisite, required, optional, sufficient Lemodule_path est le chemin du module. Les options dépendent du module. Formation permanente ARS 93

Pluggable Authentification Module, PAM Fichier de configuration /etc/pam.conf Par exemple, le service login fait appel aux modules suivants : # Authentication management login auth required /usr/lib/security/pam_unix.so.1 login auth required /usr/lib/security/pam_dial_auth.so.1 # Account management login account requisite /usr/lib/security/pam_roles.so.1 login account required /usr/lib/security/pam_projects.so.1 login account required /usr/lib/security/pam_unix.so.1 # Session management other session required /usr/lib/security/pam_unix.so.1 # Password management other password required /usr/lib/security/pam_unix.so.1 Formation permanente ARS 94 Pluggable Authentification Module, PAM Directives d essai des modules 37.4 Directives d essai des modules Les directives possibles d essai des modules sont : directive required la valeur de retour de ce module doit être PAM_SUCCESS pour sortir de la pile d authentification avec succès ; PAM_AUTH_ERR fera recommencer toute la pile directive requisite une valeur de retour PAM_AUTH_ERR fait sortir de la pile d authentification prématurément en échec directive optional si ce module échoue, on sortira de la pile avec succès si un autre module dans la pile réussit directive sufficient une valeur de retour PAM_SUCCESS de ce module fait sortir de la pile d authentification prématurément avec succès ; les autres modules dans la pile ne sont pas pris en compte Formation permanente ARS 95

Pluggable Authentification Module, PAM Modules, /usr/lib/security 37.5 Modules, /usr/lib/security Les modules sont conventionnellement stockés dans /usr/lib/security/ Par exemple sur Solaris : % ls /usr/lib/security amiserv pam_ldap.so.1 pam_sample.so.1 pam_ami.so pam_projects.so pam_smartcard.so pam_ami.so.1 pam_projects.so.1 pam_smartcard.so.1 pam_dial_auth.so pam_rhosts_auth.so pam_unix.so pam_dial_auth.so.1 pam_rhosts_auth.so.1 pam_unix.so.1 pam_krb5.so pam_roles.so sparcv9 pam_krb5.so.1 pam_roles.so.1 pam_ldap.so pam_sample.so Chaque module fournit l implémentation d un mécanisme spécifique. Formation permanente ARS 96 Pluggable Authentification Module, PAM Modules, /usr/lib/security /usr/lib/security/pam_unix.so.1 fournit un suport d authentification, gestion de compte, session de mot de passe. Il utilise les mots de passe Unix pour l authenfication. /usr/lib/security/pam_dial_auth.so.1 peut seulement être utilisé pour l authentification. Il utilise des données stockées dans /etc/dialups et /etc/d_passwd. Principalement utilisé par login. /usr/lib/security/pam_rhosts_auth.so.1 peut seulement être utilisé pour l authentification. Il utilise les données stockées dans les fichiers.rhosts et /etc/hosts.equiv. Principalement utilisé par rlogin et rsh. Formation permanente ARS 97

Pluggable Authentification Module, PAM Options des modules 37.6 Options des modules On peut passer certaines options aux modules des options spécifiques à chaque module ; cf la documentation de chaque module ; par exemple retry=3 ou debug option use_first_pass Cette option indique d utiliser exclusivement le mot de passe entré pour le premier module de la pile du service. option try_first_pass Cette option indique d utiliser d abord le mot de passe entré pour le premier module de la pile du service et en cas d échec de ce mot de passe d en demander un autre. (Le support des options use_first_pass et try_first_pass est fortement conseillé auprès des développeurs de modules PAM ; à vérifier donc avec chaque module) Formation permanente ARS 98 Pluggable Authentification Module, PAM Exemple 1 Extrait de /etc/pam.conf : 37.7 Exemple 1 # Authentication management login auth required /usr/lib/security/pam_unix.so.1 login auth required /usr/lib/security/pam_dial_auth.so.1 Fichier /etc/dialups : /dev/pts/9 Fichier /etc/d_passwd /bin/bash:nuemrw70uy9m.: Session interactive : % tty /dev/pts/9 % exec login exec login login: besancon Password: XXXXXXXX <-- mot de passe Dialup Password: YYYYYYYY <-- mot de passe %% <-- connexion établie, shell lancé On voit bien la ligne supplémentaire «Dialup Password:» Formation permanente ARS 99

Pluggable Authentification Module, PAM Exemple 1 Si l on se trompe dans l un des mots de passe, toutes les demandes de mot de passe sont réessayées : % exec login login: besancon Password: ZZZZZZZZ <-- mauvais mot de passe Dialup Password: YYYYYYYY <-- mot de passe OK Login incorrect login: besancon Password: XXXXXXXX <-- mot de passe OK Dialup Password: ZZZZZZZZ <-- mauvais mot de passe Login incorrect login: besancon Password: XXXXXXXX <-- mot de passe OK Dialup Password: YYYYYYYY <-- mot de passe OK %% <-- connexion établie, shell lancé Au niveau SYSLOG, ça laisse quelques traces : Aug 20 14:51:14 cerise login: [ID 427203 auth.debug] pam_authenticate: error Authentication failed... Aug 20 14:51:34 cerise login: [ID 427203 auth.debug] pam_authenticate: error Authentication failed Formation permanente ARS 100 Pluggable Authentification Module, PAM Exemple 2 37.8 Exemple 2 Pour autoriser l authentification par LDAP, on mettra dans /etc/pam.conf : # Authentication management login auth sufficient /usr/lib/security/pam_unix.so.1 login auth required /usr/lib/security/pam_ldap.so.1 use_first_pass Formation permanente ARS 101

Pluggable Authentification Module, PAM A propos de LDAP 37.9 A propos de LDAP Pour les systèmes n incorporant pas LDAP en natif dans l OS, se reporter à : http://diamond.rug.ac.be/pam_ldap/index.shtml Formation permanente ARS 102 Pluggable Authentification Module, PAM Un peu de bibliographie 37.10 Un peu de bibliographie http://www.sun.com/software/solaris/pam/ http://www.kernel.org/pub/linux/libs/pam/ http://www.netlogic.ro/linuxdoc/pam-0.64/html/pam.html http://www.mailgate.org/mailgate/linux/linux.redhat.pam/ Formation permanente ARS 103

Connexion des utilisateurs Chapitre 38 : Connexion des utilisateurs Cf <utmp.h> 38.1 Fichier utmp Traditionnellement /var/adm/utmp ou /etc/utmp. Ce fichier contient des informations concernant les accès des utilisateurs et concernant les reboots de la machine. struct utmp { char ut_user[8]; /* User login name */ char ut_id[4]; /* /etc/inittab id(usually line #) */ char ut_line[12]; /* device name (console, lnxx) */ short ut_pid; /* short for compat. - process id */ short ut_type; /* type of entry */ struct exit_status ut_exit; /* The exit status of a process */ /* marked as DEAD_PROCESS. */ time_t ut_time; /* time entry was made */ }; Formation permanente ARS 104 Connexion des utilisateurs Fichier utmp Ce fichier ne grossit pas vraiment : un enregistrement est écrit à la connexion d un utilisateur et mentionne le couple (utilisateur, terminal) l enregistrement est marqué de type USER_PROCESS lorsque la connexion se termine, l enregistrement est marqué DEAD_PROCESS à la prochaine connexion du même utilisateur sur le même terminal, on réutilisera cet enregistrement. Formation permanente ARS 105

Connexion des utilisateurs Fichier utmpx 38.2 Fichier utmpx Cf <utmpx.h> C est une extension de la structure utmp : struct utmpx { char ut_user[32]; /* user login name */ char ut_id[4]; /* inittab id */ char ut_line[32]; /* device name (console, lnxx) */ pid_t ut_pid; /* process id */ short ut_type; /* type of entry */ struct ut_exit_status ut_exit; /* process termination/exit status */ struct timeval ut_tv; /* time entry was made */ int ut_session; /* session ID, used for windowing */ int pad[5]; /* reserved for future use */ short ut_syslen; /* significant length of ut_host */ /* including terminating null */ char ut_host[257]; /* remote host name */ }; Le principe reste le même sauf que le fichier stockant les données est /var/adm/utmpx.h Formation permanente ARS 106 Connexion des utilisateurs Fichier wtmp 38.3 Fichier wtmp Cf <utmp.h> Traditionnellement /var/adm/wtmp ou /etc/wtmp. Ce fichier contient les historiques des connexions des utilisateurs et de l accounting. Ce fichier grossit au cours du temps car on y accumule les enregistrements utmp en fin de fichier. 38.4 Fichier wtmpx Cf <utmpx.h> Le principe reste le même que celui pour wtmp sauf que le fichier stockant les données est /var/adm/wtmpx.h Formation permanente ARS 107

Connexion des utilisateurs Commande last 38.5 Commande last Syntaxe : last [options] [utilisateur] [terminal] La commande last consulte le fichier /var/adm/wtmpx et affiche les enregistrements à l écran : besancon ftp localhost Sun Aug 25 12:13-12:15 (00:01) besancon ftp localhost Sun Aug 25 12:04-12:05 (00:01) besancon ftp localhost Sun Aug 25 12:03-12:04 (00:00) besancon console Sat Aug 24 11:24 still logged in besancon console Sat Aug 24 01:12-11:24 (10:12) reboot system boot Sat Aug 24 01:10 besancon pts/9 Tue Aug 20 14:52 - down (3+10:17) besancon pts/9 Tue Aug 20 14:51-14:52 (00:00)... wtmp begins Wed Feb 20 20:58 Formation permanente ARS 108

Pseudo terminaux Chapitre 39 : Pseudo terminaux 39.1 Devices associés aux pseudo terminaux Pseudos terminaux (virtuels ou physiques) pour : terminal type vt100, xterm, etc. Les fichiers associés aux pseudo terminaux se trouvent dans /dev. Par exemple /dev/tty01 pour le terminal série /dev/console pour l écran principal de la machine pour les connexions réseau, on utilise deux fichiers par connexion : un fichier maître et un fichier esclave. Le master pseudo terminal a pour nom /dev/pty[p-s]nn sur BSD, /dev/ptc/nn sur System-V. Le slave pseudo terminal a pour nom /dev/tty[p-s]nn sur BSD, /dev/pts/nn sur System-V. Formation permanente ARS 109 Pseudo terminaux Commande tty, device /dev/tty 39.2 Commande tty, device /dev/tty Pour connaître le nom du terminal courant, utiliser la commande tty : % tty /dev/pts/1 Un fichier spécial, /dev/tty : % tty /dev/pts/1 % echo oui > /dev/tty oui Les entrées / sorties de /dev/tty sont associées à votre terminal. Formation permanente ARS 110

Pseudo terminaux Nombre de terminaux 39.3 Nombre de terminaux Attention : Il doit y avoir un nombre suffisant de terminaux pour accueillir les utilisateurs. Dans le cas contraire : % rlogin serveur.prism.uvsq.fr rlogind: All network ports in use. Connection closed. Comment corriger le problème? La correction du problème se fait à deux niveaux : 1. vérifier le nombre de terminaux configurés dans le noyau : pseudo-device pty 256 #Pseudo ttys - can go as high as 256 2. augmenter le nombre de fichiers terminaux dans /dev : # cd /dev #./MAKEDEV pty1 #./MAKEDEV pty2 #./MAKEDEV pty3 #./MAKEDEV pty4 etc. Formation permanente ARS 111 Pseudo terminaux Phase de connexion, init, getty 39.4 Phase de connexion, init, getty init gére l ensemble des lignes physiques sur lesquelles les utilisateurs se connectent. Au démarrage d init, après consultation de /etc/inittab ou de /etc/ttys, ilya lancement d un processus getty par ligne physique attachée à l unité centrale. % ps -edf USER PID PPID %CPU STARTED TT TIME COMMAND [...] root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c root 363 1 0.0 Aug 03 05 0:00.04 /usr/sbin/getty /dev/tty05 c [...] La commande getty configure les paramètres de la ligne (vitesse, parité, etc.) puis attend qu un utilisateur se manifeste. Formation permanente ARS 112

Pseudo terminaux Phase de connexion, init, getty Lorsqu un utilisateur tape son nom de login, le getty en question donne la main au programme login : % ps -edf USER PID PPID %CPU STARTED TT TIME COMMAND [...] root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c root 363 1 0.0 Aug 03 05 0:00.09 login besancon [...] Le programme login valide ou pas l utilisateur. Dans le cas favorable, une session shell est lancée (notez le caractère «-» en début du nom du shell) : % ps -edf USER PID PPID %CPU STARTED TT TIME COMMAND [...] root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c besancon 363 1 0.0 Aug 03 05 0:00.78 -bash (bash) [...] Lorsque le shell se termine, init détecte la terminaison d un de ses fils. Il regénére alors un nouveau processus getty. Formation permanente ARS 113 Pseudo terminaux Liste BSD des terminaux physiques : /etc/ttys 39.5 Liste BSD des terminaux physiques : /etc/ttys Les lignes à surveiller par init sont précisées via le fichier /etc/ttys : console none unknown off secure ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure # Serial terminals ttyd0 "/usr/libexec/getty std.9600" unknown off secure ttyd1 "/usr/libexec/getty std.9600" unknown off secure # Pseudo terminals ttyp0 none network ttyp1 none network Formation permanente ARS 114

Pseudo terminaux Liste System-V des terminaux physiques : /etc/inittab 39.6 Liste System-V des terminaux physiques : /etc/inittab Les lignes à surveiller par init sont précisées via le fichier /etc/inittab : lat01:3:respawn:/usr/sbin/getty /dev/tty01 lat02:3:respawn:/usr/sbin/getty /dev/tty02... lat0e:3:respawn:/usr/sbin/getty /dev/tty0e lat0f:3:respawn:/usr/sbin/getty /dev/tty0f console vt100 console vt100 console vt100 console vt100 Formation permanente ARS 115 Pseudo terminaux Terminaux sécurisés 39.7 Terminaux sécurisés Root est-il autorisé à se connecter sur tout terminal? % rlogin ars01.formation.jussieu.fr -l root Password: Not on system console Connection closed. Pourquoi? Parce qu un login au nom de root est anonyme et interdit en conséquence. Comment contrôler l accès? Formation permanente ARS 116

Pseudo terminaux Terminaux sécurisés Contrôle d accès sur BSD Au niveau de /etc/ttys ou /etc/ttytab :... The super-user root may only log in on those terminals marked as "secure" in the /etc/ttytab file. Otherwise, the super-user must log in as an ordinary user and become super-user using su(1v). For example, if the file contained: console "/etc/getty Console-9600" sun on secure tty00 "/etc/getty Console-9600" sun on...... the super-user could only log in directly on the console. See ttytab(5) for a discussion of secure and other getty(8) options used in /etc/ttytab. Formation permanente ARS 117 Pseudo terminaux Terminaux sécurisés Contrôle d accès sur DIGITAL Unix Au niveau de /etc/securettys : # # Note: Each entry in this file represents a device (secure device) # from which root login is permitted. For, pseudo ttys (ptys) a # single keyword entry "ptys" means all ptys are to be treated as being # secure. Note that the entry is "ptys" and not prefixed by /dev # as is customary for the other physical devices. The absence of # this key word implies that root login will not be permitted from # all ptys. X displays are indicated with the display name. # # <device name> /dev/console local:0 :0 ptys Formation permanente ARS 118

Pseudo terminaux Terminaux sécurisés Contrôle d accès sur Linux Au niveau de /etc/securetty : ## /etc/securetty is used by login(1); the file contains tty ## lines (without leading /dev/) on which root is allowed to ## login. tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 ttyp0 ttyp1 Formation permanente ARS 119 Pseudo terminaux Terminaux sécurisés Contrôle d accès sur Solaris Au niveau de /etc/default/login :... # If CONSOLE is set, root can only login on that device. # Comment this line out to allow remote login by root. # CONSOLE=/dev/console... Formation permanente ARS 120

Terminaux X, XDM Chapitre 40 : Terminaux X, XDM 40.1 introduction sur les terminaux X Un terminal X est un poste de travail graphique : offrant le système graphique X sans système d exploitation complexe à gérer et à maintenir simple à configurer En 2002, on constate : coût élevé d un terminal X ; parfois plus cher qu un poste PC Windows multimédia désaffection des constructeurs (reste NCD) manque de périphériques supportés ; pas de floppy, pas de son, pas de USB... Formation permanente ARS 121 Terminaux X, XDM XDM : X Display Management 40.2 XDM : X Display Management On parlera de serveur XDM pour une machine qui fait tourner l application xdm qui implémente XDM. XDM est l analogue graphique de la demande de login/password du mode texte. Visuellement, cela se traduit par une mire d accueil. login: Password: vangogh Login: Password: XDM offre des possibilités : de fournir des mires d accueil pour des terminaux X via des requêtes selon le protocole XDMCP (X Display Management Control Protocol) de gérer des serveurs X distants Formation permanente ARS 122

Terminaux X, XDM Requêtes XDMCP 40.3 Requêtes XDMCP 3 formes de réquêtes : Forme 1 : direct query Le serveur X contacte un serveur XDM nomément. Forme 2 : broadcast query Une requête est envoyée sur le réseau en mode broadcast et une mire d accueil est offerte par le premier serveur XDM qui peut répondre. Forme 3 : indirect query Le serveur X contacte une machine et lui demande la liste des serveurs XDM qu elle connait. Le serveur X se voit proposer de choisir un hôte XDM parmi cette liste. Formation permanente ARS 123 Terminaux X, XDM Gestion directe de serveurs X 40.4 Gestion directe de serveurs X XDM envoit de lui même des mires d accueil à une liste de serveurs X. Formation permanente ARS 124

Terminaux X, XDM Fichier de configuration xdm-config 40.5 Fichier de configuration xdm-config Traditionnellement dans l un de ces répertoires : répertoire /etc/x11/xdm répertoire /usr/x11r6/lib/x11/xdm répertoire /usr/openwin/lib/x11/xdm Ce fichier définit les noms et les répertoires des autres fichiers de configuration de xdm ainsi que quelques options de configuration : Par exemple : DisplayManager.errorLogFile: /var/log/xdm-errors DisplayManager.pidFile: /var/run/xdm-pid DisplayManager.keyFile: /usr/x11r6/lib/x11/xdm/xdm-keys DisplayManager.servers: /usr/x11r6/lib/x11/xdm/xservers DisplayManager.accessFile: /usr/x11r6/lib/x11/xdm/xaccess...! SECURITY: do not listen for XDMCP or Chooser requests! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0 Formation permanente ARS 125 Terminaux X, XDM Fichier de configuration Xaccess 40.6 Fichier de configuration Xaccess Ce fichier contient une liste de machines autorisées à se connecter à XDM. Par exemple : ## Direct queries * ## Indirect queries * CHOOSER BROADCAST La ligne avec l étoile * indique que toute machine est autorisée à faire une requête de type query direct. La seconde ligne indique qu une sélection de hôtes XDM sera affiché à qui fera une requête de type indirect query et que la liste des hôtes XDM sera obtenue par broadcast. Formation permanente ARS 126

Terminaux X, XDM Fichier de configuration Xservers 40.7 Fichier de configuration Xservers Ce fichier contient la liste des serveurs X gérés directement par XDM. Par exemple : # Console de la machine :0 local /usr/x11r6/bin/x # Autres terminaux riri:0 foreign fifi:0 foreign loulou:0 foreign Formation permanente ARS 127 Terminaux X, XDM Fichier de configuration Xresources 40.8 Fichier de configuration Xresources Ce fichier contient les ressources pour personnaliser l apparence de la mire d accueil. xlogin*greeting: Welcome to CLIENTHOST xlogin*nameprompt: \040\040\040\040\040\040\040Login: xlogin*fail: Login incorrect #if WIDTH > 800 xlogin*greetfont: -adobe-helvetica-bold-o-normal--24-240-75-75-p-138-iso8859-1 xlogin*font: -adobe-helvetica-medium-r-normal--18-180-75-75-p-103-iso8859-1 xlogin*promptfont: -adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1 xlogin*failfont: -adobe-helvetica-bold-r-normal--18-180-75-75-p-103-iso8859-1 #else xlogin*greetfont: -adobe-helvetica-bold-o-normal--17-120-100-100-p-92-iso8859-1 xlogin*font: -adobe-helvetica-medium-r-normal--12-120-75-75-p-69-iso8859-1 xlogin*promptfont: -adobe-helvetica-bold-r-normal--12-120-75-75-p-69-iso8859-1 xlogin*failfont: -adobe-helvetica-bold-o-normal--14-140-75-75-p-82-iso8859-1 #endif #ifdef COLOR xlogin*borderwidth: 1 xlogin*shdcolor: grey30... Formation permanente ARS 128

Terminaux X, XDM Application CHOOSER 40.9 Application CHOOSER Le sélecteur de hôtes XDM s appelle le chooser. Formation permanente ARS 129 Terminaux X, XDM Application CHOOSER La liste des hôtes peut être obtenue par : broadcast Syntaxe au niveau du fichier Xaccess : * CHOOSER BROADCAST liste explicite Syntaxe au niveau du fichier Xaccess : %hostlist cerise poire pomme * CHOOSER %hostlist Formation permanente ARS 130

Terminaux X, XDM Ressources X pour XDM 40.10 Ressources X pour XDM Il y a diverses ressources de personnalisation de xdm : apparence de la mire apparence du chooser mais aussi personnalisation de la configuration de XDM selon le serveur X géré : display local «verb! :0.0!»désigné par le mot clef «_0» autre display «host:0.0» désigné par le mot clef «host_0» Extrait d un fichier xdm-config :... DisplayManager._0.authorize: true! The following three resources set up display :0 as the console. DisplayManager._0.setup: /usr/x11r6/lib/x11/xdm/xsetup_0 DisplayManager._0.startup: /usr/x11r6/lib/x11/xdm/giveconsole DisplayManager._0.reset: /usr/x11r6/lib/x11/xdm/takeconsole... Formation permanente ARS 131 Terminaux X, XDM KDM : KDE Display Manager 40.11 KDM : KDE Display Manager Fichier de configuration : /usr/local/share/config/kdm/kdmrc Utilitaire de configuration : /usr/local/bin/kdm_config Formation permanente ARS 132

Terminaux X, XDM GDM : Gnome Display Manager 40.12 GDM : Gnome Display Manager Fichier de configuration /usr/x11r6/etc/gdm/gdm.conf Utilitaire de configuration : /usr/x11r6/bin/gdmconfig Formation permanente ARS 133 Terminaux X, XDM Session X de l utilisateur 40.13 Session X de l utilisateur xdm crée un shell sur le serveur de calcul qui configure l environnement graphique de l utilisateur via le fichier "$HOME/.xsession". µ la durée de vie de la session sous X est celle du script $HOME/.xsession Formation permanente ARS 134

Terminaux X, XDM Session X de l utilisateur En général : #!/bin/sh applix1 & applix2 &... applixn & applix Le dernier client X n est pas lancé en tâche de fond. En général, le dernier client est un window manager. Cf ftp://ftp.lip6.fr/pub/doc/faqs/x-faq/speedups.gz Formation permanente ARS 135 Terminaux X, XDM Mode Failsafe 40.14 Mode Failsafe S il y a des erreurs, les messages de celles-ci sont écrits dans le fichier $HOME/.xsession-errors. En cas d erreur grave dans $HOME/.xsession empêchant le démarrage de la session X, utiliser le mode FailSafe : 1. entrer le nom de login 2. valider par la tocuhe Retour 3. entrer le mot de passe 4. valider par la touche F1 et non pas par la touche Retour Il apparait alors un simple xterm sans window manager. Formation permanente ARS 136

Terminaux légers Chapitre 41 : Terminaux légers 41.1 Problématique Un «vrai» terminal X est maintenant trop cher. Un «vrai» terminal X est maintenant trop limitatif : pas de multimédia Solution : le client léger Appelation un peu abusive. Ni un PC. Ni un terminal X : succédané d architecture de PC x86 faible consommation électrique µ pas de ventilateur µ silencieux mémoire flash (pas de disque dur local) système d exploitation de type LINUX minimaliste ou Windows CE µ support des périphériques récents (USB, wake-on-lan,...) Formation permanente ARS 137 Terminaux légers RDP 41.2 RDP RDP Remote Desktop Protocol Actuellement version 5.1 Développé par Microsoft. Caractéristiques : 64000 channels possibles, redirection des ports parallèles et du port IDE, cliboad manager, virtual channel Se reporter à : http://www.microsoft.com/windows2000/techinfo/howitworks/terminal/rdpfandp.asp http://www.microsoft.com/windowsxp/remotedesktop/faq.asp http://www.microsoft.com/windowsxp/pro/using/howto/gomobile/remotedesktop/ Formation permanente ARS 138

Terminaux légers RDP Formation permanente ARS 139 Terminaux légers RDP A noter le client RDP Linux RDESKTOP, http://www.rdesktop.org/ A completer... Formation permanente ARS 140

Terminaux légers ICA 41.3 ICA ICA Independant Client Architecture Actuellement version 6 Développé par la société CITRIX. Dialogue avec le logiciel METAFRAME de Citrix Load balancing Accès modem optimisé Licences ICA nécessaires par client ou par poste Se reporter à : http://www.citrix.com/ Mon avis : cela fonctionne bien quand cela fonctionne il existe des clients ICA pour Unix mais ce n est pas le scenario que cherche à pousser CITRIX µ support logiciel minable pour la clientèle Unix Formation permanente ARS 141 Terminaux légers ICA A completer... > > > > screendump client unix < < < < > > > > screendump client web < < < < Formation permanente ARS 142

Terminaux légers VNC 41.4 VNC http://www.uk.research.att.com/vnc/ VNC Virtual Network Computing VNC est un logiciel permettant de viusaliser le bureau de n importe quel ordinateur Macintosh, Windows, Unix depuis Internet (en l occurence depuis Macintosh, Windows, Unix, browser avec java). Le logiciel se compose : une partie de visualisation dite vncviewer une partie serveur Le logiciel est utilisable même avec une liaison téléphonique avec un modem à 38400 bauds (testé). ATTENTION dans le cas Windows : VNC n est pas une extension à la Terminal Server. VNC est un partage, une prise en main de l écran distant du PC. Formation permanente ARS 143 Terminaux légers VNC Prenons le cas d un vncviewer Unix qui se connectera à un vncserver Windows. La connexion s établit après demande du serveur à contacter : et la demande du mot de passe permettant de piloter le bureau distant du serveur : et après quelques lignes de texte de renseignements sur le serveur VNC : % vncviewer VNC server supports protocol version 3.3 (viewer 3.3) VNC authentication succeeded Desktop name "w2k" Connected to VNC server, using protocol version 3.3 VNC server default format: 32 bits per pixel. Least significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Using default colormap which is TrueColor. Pixel format: 32 bits per pixel. Most significant byte first in each pixel. True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0 Formation permanente ARS 144

Terminaux légers VNC on obtient bien le bureau distant directement manipulable depuis son propre bureau : Formation permanente ARS 145 Terminaux légers VNC Exemple de bureau Unix visualisé dans Internet Explorer de Windows : Formation permanente ARS 146

Terminaux légers VNC Exemple de bureau Unix visualisé dans vncviewer pour Windows : Formation permanente ARS 147 Terminaux légers VNC Exemple de bureau Unix visualisé dans Internet Explorer de Macintosh : Formation permanente ARS 148

Terminaux légers VNC Exemple de bureau Windows visualisé dans Internet Explorer de Macintosh : Formation permanente ARS 149 Terminaux légers VNC Exemple de bureau Windows visualisé dans Netscape d Unix : Formation permanente ARS 150

Terminaux légers VNC Exemple de bureau Windows visualisé dans vncviewer d Unix : Formation permanente ARS 151 Terminaux légers VNC A noter une réalisation matérielle et commerciale avec VNC : les terminaux AXEL AX3000 Model 65 (cf http://www.axel.com produit français!) Formation permanente ARS 152

Terminaux légers VNC Prenons le cas du serveur VNC pour Windows. Il s agit d une application Windows qui s installe classiquement : Formation permanente ARS 153 Terminaux légers VNC Elle nécessite un réglage, en l occurence mettre un mot de passe de façon à contrôler qu peut capter à distance le bureau : Formation permanente ARS 154

Terminaux légers VNC Une fois paramétrée, une petite icône apparait dans le coin à droite de Windows indiquant que le service est fonctionnel : Quand un vncviewer est connecté au bureau Windows, la petite icône change de couleur et passe en noir de façon à prévenir l utilisateur qu il est «sur écoute» : On peut encapsuler le protocole VNC dans un tunnel de chiffrement bien sûr. Cf la documentation. Formation permanente ARS 155 Terminaux légers WMWARE 41.5 WMWARE http://www.vmware.com/ Version 3.1.1 VMWARE ne tourne que sur plateforme à base de processeur Intel ou compatible. Ce logiciel offre sur la machine hôte, des machines virtuelles dans lesquelles peuvent tourner des OS comme Windows, Linux, FreeBSD. Il s agit donc de machine virtuelle et non pas de prise en main comme avec VNC. Formation permanente ARS 156

Terminaux légers WMWARE A completer... > > > > screendump Philippe Weill <<<< Formation permanente ARS 157 Terminaux légers SUNRAY 41.6 SUNRAY C est un poste de travail «comme les autres» : Pas de disque dur Pas d applications locales Pas d alimentation externe Pas de configuration Pas de système d exploitation Pas de barrette mémoire Pas de ventilateur Pas de paramétrage particulier Il est 10 fois plus léger qu un PC et 12 fois moins volumineux Il peut même s intégrer dans un écran cathodique 17 pouces ou un écran plat de 15 pouces... Formation permanente ARS 158

Terminaux légers SUNRAY Avantages : Instantané, constant et simple Gestion centralisée Jamais besoin de mise à jour Silencieux 16 millions de couleurs (24 bits) Pas de setup Donc, pas de dé-setup Pas de modifications de vos applications AUCUN tranfert de fichier au boot Mise en production la plus rapide du monde! Formation permanente ARS 159 Terminaux légers SUNRAY Caractéristiques hardware : CPU Sparc 1280 x 1024 @ 76 Hz frame buffer 24 bits 10/100Mb Ethernet Accès a Solaris, X11, Java, ICA fonctionnalités multimédia Lecteur de carte à puce E/S audio qualité CD Entrée vidéo NTSC/PAL Support USB ( 4 ports ) mais limité en pratique... Formation permanente ARS 160

Terminaux légers SUNRAY Architecture réseau : Formation permanente ARS 161 Terminaux légers SUNRAY Architecture logicielle : Formation permanente ARS 162

Terminaux légers SUNRAY Architecture logicielle (2) : Formation permanente ARS 163 Terminaux légers SUNRAY Cohabitation avec Windows possible : Formation permanente ARS 164