--ADMINISTRATION SYSTEME Objectif : L'installation, la configuration et la maintenance des systèmes informatiques Répartition : Techniques nécessaires (½ du temps) Documentation (½ du temps) Documenter toutes ses actions formaliser des procédures --> programmer Chapitre 1 : Structures des systèmes UNIX De nos jours, il y a deux systèmes : Unix (intégre MacOS) et Windows On va travailler dans la suite de ce cours du coté Unix car les concepts sont beaucoup plus simples et le système a été fait pour l'administrateur au contraire de windows qui est fait pour les utilisateurs. De plus, Unix est très bien programmé et conçu. Et on peut installer plusieurs versions gratuitement. Unix : C'est le plus vieux système d'exploitation encore couramment utilisé (années 70), qui est multitâche, multiutilisateur. Les versions actuelles les plus connues : ✗ BSD : FreeBSD (la plus facile d'utilisation), OpenBSD (le plus sécurisée), NetBSD (la plus portable) ✗ Système V : Linux, Aix (IBM), Solaris (Sun). A part Aix et Solaris, tous sont gratuits, libres, « puissants », légers, assez bien sécurisés et puis de bonnes qualités (programmé en C, et non en C++). Ils sont très utilisés dans les serveurs (notamment Internet --> ensemble de normes et de protocoles IP, TCP, HTTP, SMTP et POP) On travaillera principalement sur Linux. Linux : Linux est un noyau auquel on intégre des outils GNU (hurd) : d'où l'appelation GNU/Linux + Outils ...
Objectif : L'installation, la configuration et la maintenance des systèmes informatiques Répartition : Techniques nécessaires (½ du temps) Documentation (½ du temps) % Documenter toutes ses actions % formaliser des procédures --> programmer Chapitre 1 : Structures des systèmes UNIX De nos jours, il y a deux systèmes : Unix (intégre MacOS) et Windows On va travailler dans la suite de ce cours du coté Unix car les concepts sont beaucoup plus simples et le système a été fait pour l'administrateur au contraire de windows qui est fait pour les utilisateurs. De plus, Unix est très bien programmé et conçu. Et on peut installer plusieurs versions gratuitement.Unix : C'est le plus vieux système d'exploitation encore couramment utilisé (années 70), qui est multitâche, multiutilisateur. Les versions actuelles les plus connues : ✗ BSD : FreeBSD (la plus facile d'utilisation), OpenBSD (le plus sécurisée), NetBSD (la plus portable) ✗ Système V : Linux, Aix (IBM), Solaris (Sun). A part Aix et Solaris, tous sont gratuits, libres, « puissants », légers, assez bien sécurisés et puis de bonnes qualités (programmé en C, et non en C++). Ils sont très utilisés dans les serveurs (notamment Internet --> ensemble de normes et de protocoles IP, TCP, HTTP, SMTP et POP) On travaillera principalement sur Linux. Linux : Linux est un noyau auquel on intégre des outils GNU (hurd) : d'où l'appelation GNU/Linux + Outils tiers Il se base sur des distributions : C'est un choix de versions, de logiciel, avec un programme d'installation et des outils de configuration (gestionnaire de paquetages). On trouve des distributions telles que RedHat, Mandriva (Mandrake), Suze, Debian (la plus propre, la plus belle et la plus libre, mais pas spécialement conviviale), Ubuntu qui se base sur Debian que l'on va utilisé dans la suite de ce cours. 1.1 Ph i lo s o p hi e U n i x ✗ Unix est basé sur des fichiers, si possible de texte (lisible à l'humain et facilement manipulable automatiquement. ✗ On y ajouter une batterie d'outils simples (fonctionnellement) mais les plus simples possibles, dont beaucoup d'outils de manipulation de textes et de fichiers
✗ Pour les tâches complexes : on aura des moyens pour combiner les outils (langages de script de type Shell). L'utilisateur peut donc fabriquer ses propres outils et automatiser son travail. Sur ces bases, on peut aussi avoir des frontaux c'est-à-dire des interfaces textuelles ou graphiques. 1.2 A l' a id e ! Pour utiliser Unix sans avoir à utiliser des quantités de livres, on a des commandes d'aide intégrées à Linux : ✗ Man : Pages de manuel des outils A l'invite de commande : man ls : Lance la documentation de l'outil ls (dans le cours ls(1) = $man 1 ls Exemple : man 3 system : Documentation C man 1 system : Commande ✗ Help : Documentation des commandes internes du shell Exemple : help help cd exports /unset Doc sur tous les builtins : ma, ✗ apropos toto : Liste de toutes les pages de manuel qui parlent de toto ✗ whatis outil : une ligne de description pour l'outil ✗ info : c'est la commande qui remplace man d'après GNU. 1.3 Orga n i s a t i o n d e l a m é mo ire Espace Utilisateur : les processus : les programmes que l'utilisateur lance. Les processus sont dans des espaces mémoires séparés Dans les processus, on peut avoir des threads Processus Thread1 Thread2 Espace Noyau + Modules : Le plus haut degré de privilèges
CPU
Au niveau des processus : on a des librairies partagées Processus 1 ...
Processus 2 ...
LibJpeg 1 seule et même copie LibJpeg 1.4 Ar b o re s c e n ce U n i x C'est un graphe orienté de fichiers et de répertoires, mais attention, ce n'est pas un arbre binaire (deux branches qui se sont séparées peuvent se retrouver). Sous Unix, on a une arborescence unique. Le répertoire « / », qui est la racine de l'arborescence accessible depuis / Chaque répertoire = Deux sous répertoires . = Le répertoire courant .. = Le répertoire parent Donc /.. = / /bin et /sbin On y trouve tous les programmes essentiels (binaires = C Compilé) /lib Librairies essentielles /etc Tous les fichiers de config /dev Tous les périphériques exemple : /dev/hda = le fichier qui donne accès au 1er disque dur IDE /dev/hda1 est la première partition de /dev/hda /proc Les ressources dynamiques exemple : /proc/214/..., tout ce qui concerne le processus numéro 214 /var Données variables gérées par des programmes exemple : /var/www/... : Retourne les fichiers utilisés par un serveur web /var/log : Traces d'exécution des programmes du noyau /usr Les fichiers binaires, librairies, ..., supplémentaires /usr/bin /usr/sbin /usr/lib .... exemple : /usr/local : Suppléments qui ne font pas partie de la distribution /home Les répertoires des utilisateurs /root Le home de l'administrateur /tmp Les fichiers temporaires (effacés à chaque démarrage)
1.5 Vol u m es e t sy st è m e s d e f i c h i e r s Disques physiques Exemple : /dev/hda HD => IDE hda : Disque maître du 1er contrôleur hdb : Esclave du 1er contrôleur hdc : Maître du 2 nd contrôleur Disques logiques Chaque disque est partitionné en disques donc on peut trouver : hda1, hda2... Chaque partition est un volume Volumes Chaque volume est formaté ou non selon un système de fichier. (dans les disques Exemple : FAT => MS-DOS (16 bits) logiques) FAT32 => MS-DOS (32 bits) NTFS => Windows EXT3 => Default sous Linux EXT2 => Idem Swap => Mémoire Virtuelle
On a des outils : % de partitionnement : fdisk, cfdisk, parted % de formatage : mkfs (make file system), mkfs.vfat % de vérification : fsck (exemple : fsck .ext2 : vérifier l'intégrité du volume ext2) Pour monter un volume : Commande « mount » qui intégre le système de fichier d'un volume dans l'arborescence Unix exemple : / => /dev/hda1 /proc => virtuel /home => /dev/hda2 exemple 2 : /etc/fstab 1.6 Dém a r r a g e C'est une séquence de différents systèmes qui se démarrent les uns, les autres. Séquence de démarrage : 1. BIOS / Firmware : lecteur du MBR (Master Boot Record) = prog lancé par le BIOS 2. MBR installé par un boot loader (chargeur de démarrage) ex : Lilo / GRUB => présente un menu qui nous permet de choisir le système de démarrage (entre Linux et Windows par exemple) 3. Exécute un noyau avec des paramètres ✗ Initialisations diverses ✗ Montage de / en mode RO 4. Lance un programme : init: Démarrage de Linux 5. Init exécute les scripts de /etc/init.d/ Toutes les initialisations : ✗ Montage des disques comme indiqué dans /etc/fstab ✗ Démarrage des services ✗ Démarrage des programmes de connexion (login en texte et xdm/gdm en graphique)
1.7 Gr oupe s e t ut i l isa t e u rs /etc/passwd => toutes les informations sur les utilisateurs (réels / systèmes) Nom X => mot de passe est ailleurs uid => user id gid => group id « vrai » nom => finger(1) Home directory Shell par défaut /etc/shadow : idem mais avec les mots de passe (en pratique, que les mots de passe) Nom Mot de passe crypté Tous les autres champs mais vides Mot de passe : *! => compte interdit au login, utilisateur système $1$ => mot de passe haché par MD5 Validation d'un MdP : Empreintes : Hachage de MdP : Login / Mdp entré par User => MD5 (Pass) puis compare avec /etc/shadow. SALT :$1$SALTMD5(SALT+PASS) /etc/group : information sur les gid /etc/sgroup : un peu comme shadow pour group 1.8 Per m i s s ion s Processus avec des identités => Utilisent => ressources avec des permissions Toutes ressources = un fichier Tout fichier a 3 series de permissions : Booléens : Bit 0 ou 1 ✗ Read r : lecture => lire un fichier, lister un répertoire ✗ Write w : écriture => écrire dans un fichier, créer, supprimer un fichier dans un répertoire ✗ Execute x : Exécuter => Lancer un programme (fichier), et aller dans un répertoire Une serie pour l'utilisateur propriétaire du fichier user = u Une serie pour le groupe propriétaire du fichier group = g Une serie pour tous les autres others = o Exemple : Un processus d'identité : frank:staff (uid:gid) Crée un fichier / répertoire toto => le propriétaire de toto user frank group staff Appel système setgid, set uid Command chown qui positionne le propriétaire d'un fichier. Rotation rwx - - x - - - 3 pour u, 3 pour g, 3 pour o
Commande pour gérer les permissions Chmod u+x toto => rend toto exécutable Ce mécaniseme n'est pas suffisant Exemple : /etc/shadow est rw- r - - - - - appartient à root:shadow w mécanisme d'élévation de privilège bit setuid ou setgid à la place de u+x ou g+x on a u+s ou g+s s=> x +setgid/uid exemple : Un fichier setuid (u+s) lance, s'exécute sous l'identité user de son utilisateur propriétaire /bin/passwd r s r x r x appartient à root(le3s premiers):root Une fois lancé par frank:frank, le processus a l'identité root:frank A la place du x, on peut avoir : ✗ le s (voir au dessus) ✗ le t => temp (dir) => seul le propriétaire d'un fichier peut l'effacer. Et sticky (file) => l'image mémoire du processus est conservée pour être réutilisée. Sticky n'est plus utilisé. Exemple : /tmp root:root rwx rwx rwxt tmpdir, tempfile,.... Utilisation : stratégie de sécurité basée sur des rôles ! Un rôle : ensemble de droits sur une ressource Exemple : rôle => gravure de CD, lecteur audio, enregistrement audio. Pour chaque rôle => un user/groupe système. Sur audio : /dev/audio root:audio rw- rw- - - - en mettant ou non un utilisateur dans le groupe audio, il peut accèder au son. Résultat : le système de permission Unix est aussi expressif que les ACL (windows)
Chapitre 2 : Installation de Linux Distribution : ✗ Choix de noyau ✗ Choix de paquetage ✗ Choix d'outils d'installation, d'administration Débian : 2 noyaux : ✗ Linux ✗ Hurd Norme POSIX : Qu'est ce qu'un Unix. Généralement, on a un gestionnaire de paquetage (appelé aussi les paquets logiciel): Système qui permet d'installer un logiciel et gère les dépendances entre les différentes parties de logiciel. (pour simplifier : gère des éléments de systèmes interdépendants) On a deux systèmes notables : ✗ RedHat => Basé sur RPM : Red Hat Package Manager Déf CCC : Il s'agit d'un fichier portant l'extension .rpm permettant une installation automatique, pour les distributions Linux telles que RedHat ou Mandrake.
✗ Debian => Basé sur DEB Déf CCC : Il s'agit d'un fichier portant l'extension .deb permettant une installation automatique, pour les distributions Linux Debian. Ces deux systèmes sont un outil bas niveau et des frontaux (texte / graphique)
Exemple : Debian : Ubuntu Dpkg : Outil bas niveau Apt (Advantager Packaging Tool) : Frontal texte + dépendances + Sources de paquetages Dselect / Aptitude : frontal Text / graphique à Apt Synaptic : frontal graphique à Apt Les autres logiciels : installé à partir des sources, des binaires du vendeur. Ils sont situés dans /usr/local (/opt) Exemple : Ubunto 6.06 (année.mois), il y avait 18881 paquetages (qui sont installables) Ex 6 : Utilisation d'aptitude #Aptitude update => MAJ de le liste des paquets disponibles #Aptitude upgrade => Télécharger et installe les MAJ. #Aptitude install g++ => Installe g++ et ses dépendances
#Aptitude remove festival purge => #Aptitude show anacron
Chapitre 3 : Gestion des comptes => Stratégie par rôles Rôle : Ensemble de privilèges <=> Groupe => Choisir de mettre ou pas chaque utilisateur dans un groupe Fait à 2 niveaux : ✗ /etc/group ✗ PAM (Pluggable Authentification Module) => Peut modifier les groupes Il existe une autre voie : sudo Exemple : sudo -u root bash // lancement d'un shell bash Les permissions sont définies dans /etc/sudoers Avantage : Vérification de l'identité se fait avec le mdp de l'utilisateur Avant : su => avant le password root Autre concept : l'option user de /etc/fstab et l'option setuid / setgid L'utilisateur installé par Ubunto => autorise à faire sudo n'importe quoi avec son mdp gksudo Exemple : utilisateur install administrateur de /usr/local /configure make make install root# adduser install => crée un user install un group install un répertoire /home/install root# mkdir /usr/local/stow root# chmod +s /usr/local => tout fichier crée dans /usr/local sera donné au propriétaire du dir. Root# chown -r install:install /usr/local root# visudo ≈ vi (ou ed) /etc/sudoers On va ajouter une line : install ALL=(ALL) /sbin/ldconfig (en tant que root par defaut) ldconfig => déclarer des librairies dynamiques root#aptitude install stow Pour installer un logiciel : copier tout l'arborescence du logiciel dans /usr/local/stow/xyz (dédié au logiciel) => généralement, c'est fait automatiquement Exemple : Imaginons qu'on installe toto en version 1.8 : install#cd install#wget http://........../toto-1.8.tar.gz install#tar xzf toto-1.8.tar.gz // on décompresse l'archive On récupere un repertoire un repertoire toto-1.8 install# ./configure - - prefix=/usr/local/stow toto-1.8 - `date +%y%m%d`
install#make install#make install install#cd /usr/local/stow install#stow toto-1.8-061108 /usr/local/stow/toto-1.8-061108/xyz /usr/local/xyz //Equivalent des raccourcis windows Pour desinstaller : cd /usr/local/stow stow -d toto-1.8-061108 //supprime les liens symboliques rm -rf toto-1.8-061108 Ex 7 : Commandes commande [toto] ... [Arg] [] => Optionnel ... => Répétable Who => Qui est connecté par login Finger => Affiche des informations sur un utilisateur. Si l'utilisateur n'est pas rempli, c'est l'utilisateur en cours. Chfn => Change finger, change les informations finger Groups => Liste les groupes (principal + secondaires) Adduser => Ajoute un utilisateur Addgroup => Ajout un groupe ====> Useradd, groupeadd utilisables mais plus rudimentaires Usermod => Modifie un utilisateur Chsh => Change le shell d'un utilisateur Passwd => Change le mdp d'un utilisateur sur LOCAL /etc/shadow Su => Changement d'identité avec le mdp de l'utilisateur visé Sudo => Changement d'identité avec le mdp de l'utilisateur qui lance sudo Visudo => Edition du fichier de configuration de sudo Rem : Les fichiers de configuration ne devraient pas être édités avec autre chose que vi ou ed ou... (bas niveau) Choix des mots de passe : ✗ Assez long, minuscule, majuscule, ponctuation, chiffres 1sVqcDl'H => une souris verte qui courrait dans l'herbe ✗ Ne pas utiliser de mot de passe par défaut pwgen apg gpw => mot de passe aléatoire prononçable généré. Mot de passe par défaut = pas de mot de passe ✗ Vérifier la solidité des mdp Modules spéciaux ou des versions spéciales de password qui vérifient avant de changer Logiciels d'attaque : John the ripper, crack. => Attaque par dictionnaire Attaques de type Arc en ciel : Hachage MD5 => 2^128 hachages différents => Attaque par root Attaque par l'ingénierie sociale => Analyse de l'humain: Exemple : une secretaire veut le mdp du PDG, elle téléphone au service informatique qui va lui donner un nouveau mdp.
2 composants : l'urgence et le danger Ex : Date de naissance, login, nom du chien, nom du chat, .... On peut aussi regarder sur le clavier. Responsable sécurité, c'est quoi ? Responsable de la bonne installation, configuration et maintenant du système d'information (ce qui incluse les usagers)