Administration système et sécurité sous LINUX

Page 1 sur 61Lecteur de document UniversityLib

Administration système et sécurité sous LINUX

Administration, Sécurité, Systèmes UNIX · course

Voir tous les documents en systèmes d'exploitation et cloud

Administration système et sécurité sous LINUX

La gestion des utilisateurs Et des groupes

Par : L’équipe administration et sécurité LINUX

1

1

Préambule

 La compréhension et

la gestion des comptes utilisateurs constituent un sujet très important pour l'administration et la sécurité des systèmes Unix même si on est la seule personne à l’utiliser.

 L’importance est d’autant plus conséquente si

la machine héberge plusieurs comptes de plusieurs personnes.

2

Objectifs

La maitrise de ces différentes tâches d’administration :

La gestion des utilisateurs,

La gestion des groupes,

Les droits d’accès des utilisateurs.

3

Prérequis

4

L’identification et l’authentification

L'accès aux services du système repose sur deux opérations essentielles :

 L'opération d'identification consiste à annoncer qui on est, afin de permettre au système de déterminer les permissions auxquels on a droit.

 L'opération d'authentification consiste à « prouver » qu'on est bien celui qu'on prétend être. Le système refuse ses services à tout utilisateur inconnu ou qui n'a pas passé avec succès la phase d'authentification.

5

Mécanisme d’authentification

INIT : crée un terminal fils

1

2

Terminal : Attente du nom d’utilisateur

5

Login : Sortie

3

Terminal : saisie du nom d’utilisateur et Lancement du programme login

4

Login : Saisie de mot de passe

?

5

6

Non

concordance

Oui

1:init lance un terminal (processus getty)

2: le programme getty demande le nom de l'utilisateur,

3: le processus getty passe ce nom au programme login qui l'authentifie en lui demandant son mot de passe.

4: authentification de l’utilisateur afin de donner à chacun les droits d'accès aux différents services du système en fonction de ses privilèges.

5: lancement du programme shell préféré de l’utilisateur et chargement des fichiers d’environnement (si oui) ou redonner la main au processus init (sinon)

Login : lancement du shell

6: Une fois la session est terminée (fin du shell), init relance un nouveau terminal.

Shell : exécution des commandes

Shell : sortie

NB : Les processus (getty -> login -> shell ) se substituent, cela veut dire qu’il garde le même PID et c’est ainsi que d’une connexion,

reconnait

init

fin

la

6

Principe d’un utilisateur

Un utilisateur est l’association d’un nom de connexion (le login), à un UID et au moins un GID.

 UID : User ID.  GID : Group ID.

Le login, le UID et le GID sont uniques.

7

Types d’utilisateurs

Il existe trois types d’utilisateurs sur le système :

 L’administrateur Appelé aussi le root, il possède le contrôle total sur le système.

 Les utilisateurs applicatifs Leur principal intérêt est de faciliter la gestion des droits d'accès des applications et des démons. (exemple: un compte nommé mail)

 Les simples utilisateurs: Ce sont des comptes permettant aux utilisateurs de se connecter et d'utiliser les ressources de la machine.

8

Le LOGIN

 Le login contient en principe 8 caractères

 Il doit commencer par une lettre et comporte au maximum 32

caractères,

 L’utilisation des caractères spéciaux est déconseillée dans le

nom d’utilisateur tel que (_) , (.), l’espace…

 Le login est sensible à la casse, les utilisateurs « esprit» et

« Esprit » sont différents

9

Le UID (User IDentifier)

 L’UID est un entier strictement positif

 Il sert à identifier l’utilisateur (ou le compte applicatif) tout au

long de sa connexion.

 Les UID d’une valeur inférieure à 100 sont associés à des

comptes spéciaux avec des droits étendus.

 Seul le UID 0 et le GID 0 sont standardisés et qui identifie le

root

 Selon les distributions, à partir de 100, 500 ou 1000, et ce

jusqu’à environ 60 000, ce sont les UID des utilisateurs sans pouvoirs particuliers.

10

Les groupes(1/3)

 Un groupe est un ensemble d’utilisateurs qui partagent les

même ressources sur le système, et sont identifiés par un GID

 Chaque utilisateur fait partie d’au moins un groupe.

 Comme pour les logins, le GID du groupe accompagne toujours

l’utilisateur pour le contrôle de ses droits.

 Un utilisateur peut faire partie de plusieurs groupes,

 Il existe deux types de groupes pour un utilisateur : le groupe

primaire et les groupes secondaires.

11

Types des groupes (2/3)

 Le groupe primaire est celui qui est toujours appliqué à la

création d’un fichier.

 Si l’utilisateur «esprit» a pour groupe primaire users, alors les groupe

«esprit»

comme

auront

créés

fichiers par d’appartenance users.

 Un utilisateur dispose de tous les droits associés à ses groupes

secondaires.

 Si «esprit» a comme groupe secondaire video et qu’un fichier dispose des droits d’écriture pour ce groupe, alors «esprit» aura le droit de modifier son contenu.

12

Les groupes (3/3)

 La commande id permet de connaître les informations essentielles sur un utilisateur : uid, gid, groupes secondaires

 Pour un fichier créé par esprit, son propriétaire sera esprit et son

groupe sera le groupe principal de esprit : users.

13

Le GID (Group IDentifier)

 Le GID c’est un entier positif identifiant un groupe d’utilisateurs

sur le système,

 Si le groupe n’est pas spécifié au moment de la création de

l’utilisateur, deux stratégies sont employées pour assigner un groupe par défaut :

 Le groupe par défaut est le même pour tous, le groupe « users » avec

le GID 100

 Le nom du groupe est semblable à celui de login, c’est la notion de groupe privé par utilisateur (UPG user private group), c’est la stratégie la plus utilisée actuellement.

14

Les mots de passe (1/2)

 Les mots de passe permettent d’authentifier les utilisateurs.

 La saisie est masquée (rien ne s’affiche).

 Ils doivent être assez complexes pour ne pas être découverts facilement, mais assez intuitifs pour que l’utilisateur s’en souviennent.

 Les mots de passe sont cryptés (MD5, DES par exemple) et ne sont pas directement lisibles sous leur forme cryptée par l’utilisateur afin que personne ne puisse tenter de le décrypter via un quelconque traitement.

 Un utilisateur devrait changer régulièrement son mot de passe.

Publicité

15

Les mots de passe (2/2)

 Il est possible de forcer la longueur et la complexité via les mécanismes d’authentification PAM et le fichier /etc/login.defs.  Ce fichier est également consulté afin de modifier informations relatives aux utilisateurs (uid,gid,umask,…).

les

Exemple : /etc/login.defs

16

Les fichiers

 /etc/passwd

 /etc/group

 /etc/shadow

17

Le fichier /etc/passwd (1/3)

 Contient la liste des utilisateurs du système local.

 Il est lisible par tout le monde.

 Les informations qu’il contient sont publiques et utiles tant

pour le système que pour les utilisateurs.

 Chaque ligne représente un utilisateur et comprend 7

champs, séparés par le symbole « : »

18

Le fichier /etc/passwd (2/3)

1

2

3

4

5

6

7

LOGIN : Nom de connexion de l’utilisateur

Mot de passe chiffré par la fonction a sens unique crypt ou md5. La valeur spéeciale < x > indique que le mot de passe chiffré est stocké dans /etc/shadow

UID : Numéro unique de l’utilisateur

GID : Numéro unique du groupe principal de l'utilisateur

Commentaire : champ de renseignements qui contient habituellement un descriptif de l'utilisateur

19

1

2

3

4

5

Le fichier /etc/passwd (3/3)

6

7

Répertoire personnel : C’est un répertoire attribué à l’utilisateur afin de sauvegarder ces données personnelles (la variable d'environnement $HOME indique le répertoire personnel de l’utilisateur)

SHELL: C’est le programme ou la commande qui va être lancé suite à la connexion au système. Il s’agit généralement d’un interpréteur de commandes,

20

Le fichier /etc/group (1/2)

 Ce fichier contient la définition des groupes d’utilisateurs et pour chacun la liste des utilisateurs dont il est groupe secondaire.

 Chaque ligne est composé sur 4 champs :

1

2 3

4

1

2

Le nom du groupe

Le mot de passe du groupe

21

Le fichier /etc/group (2/2)

3

Le groupe identifier

4 La liste des utilisateurs appartenant à ce groupe(secondaire).

NB :  Il est inutile de replacer dans le quatrième champ les utilisateurs ayant

ce groupe pour groupe principal, c’est induit.

 Le champ mot de passe pour les groupes est rarement utilisé en

pratique:

 Un utilisateur a le droit de changer de groupe afin de prendre un groupe

secondaire comme groupe principal avec la commande newgrp.

 Dans ce cas, l’administrateur peut mettre en place un mot de passe sur

le groupe pour protéger l’accès à ce groupe en tant que groupe principal .

22

Le fichier /etc/shadow (1/3)

Le fichier /etc/shadow accompagne le fichier /etc/passwd et sert à stocker le mot de passe crypté des utilisateurs.

Il contient toutes les informations sur le mot de passe et sa validité dans le temps.

Chaque ligne est composée de 9 champs séparés par des « : »

1

2

3

4

5

6

9

7 8

23

Le fichier /etc/shadow (2/3)

1

2

3

4

5

6

7

8

9

Le login

Le mot de passe crypté. Le $xx$ initial indique le type de cryptage.

Nombre de jours (depuis le 1 er janvier 1970) du dernier changement de mot de passe.

Nombre de jours avant lesquels le mot de passe ne peut pas être changé (0 : il peut être changé n’importe quand).

Nombre de jours après lesquels le mot de passe doit être changé.

Nombre de jours avant l’expiration du mot de passe durant lesquels l’utilisateur doit être prévenu.

Nombre de jours après l’expiration du mot de passe après lesquels le compte est désactivé.

Nombre de jours depuis le 1 er janvier 1970 à partir du moment où le compte a été désactivé.

Réservé.

24

Le fichier /etc/shadow (3/3)

Pour connaître la date en fonction du 01/01/1970 utilisez la commande date comme ceci, en ajoutant le nombre de jours désiré:

25

La gestion des utilisateurs

26

Ajout d’un utilisateur (1/4)

 La création d’un utilisateur pourrait être entièrement effectuée à la main :

1- Rajouter une ligne dans /etc/passwd,

2- Rajouter d’une ligne dans /etc/shadow,

3- Rajouter d’éventuelles informations dans /etc/group,

4- Créer le répertoire personnel et mettre à jour son contenu avec /etc/skel,

5- Changer les permissions et le propriétaire du répertoire personnel,

6- Changer le mot de passe (encodé).

NB: Le répertoire /etc/skel est une squelette du répertoire de connexion des nouveaux utilisateurs.

27

Ajout d’un utilisateur (2/4)

Toutes les étapes précédentes peuvent être remplacées par la commande «useradd »,

Syntaxe :

$ useradd < options > nom_utilisateur

Description :

 Elle ajoute un nouveau compte et effectue les principales opérations :

 Création de l’utilisateur et remplissage des fichiers,

 Création d’un groupe privé d’utilisateur (de même nom que celui-ci),

 Création du répertoire personnel, remplissage et modification des droits.

28

Ajout d’un utilisateur (3/4) Options:

L’option Le rôle

-m

-u

Publicité

-g

-G

-d

-c

-k

-s

-p

-D

Crée aussi le répertoire personnel /home/login. Elle est parfois comprise par défaut.

Précise l’UID numérique de l’utilisateur.

Précise le groupe principal de l’utilisateur, par GID ou par son nom

Précise les groupes secondaires de l’utilisateur séparés par des virgules

Chemin du répertoire personnel. Généralement /home/<login>, mais n’importe quel chemin peut être précisé.

Un commentaire associé au compte.

Chemin du répertoire contenant le squelette de l’arborescence du répertoire utilisateur. C’est généralement /etc/skell.

Shell par défaut de l’utilisateur.

Le mot de passe de l’utilisateur.

Examiner les valeurs par défaut de la commande useradd

29

Ajout d’un utilisateur (4/4)

N.B

Si aucune option n’est précisée, les valeurs par défaut sont récupérées au sein du fichier /etc/default/useradd.

identifiant du groupe primaire racine des rép. personnels nb de jours avant destruction du compte nb de jours avant expiration du mot de passe shell de connexion attribué au compte recopiés par défaut dans chaque rép. personnel

30

Exercice :

 Donner la commande qui ajoute la ligne suivante dans le fichier

/etc/passwd

grep robert /etc/passwd robert:x:1010:100:Compte de Robert:/home/robert:/bin/bash

 La commande ne crée pas de mot de passe. Il faut le faire à la main

avec la commande passwd.

passwd robert Changing password for robert. Nouveau mot de passe : Retaper le nouveau mot de passe : Mot de passe changé.

31

Modifier le mot de passe (1/6)

 La commande passwd permet de gérer les mots de passe mais aussi les autorisations de connexion et la plupart des champs présents dans /etc/shadow.

 Tout utilisateur a le droit de changer son mot de passe, dans le délai

précisé par le champ 4 de /etc/shadow.

 L’action par défaut est de changer le mot de passe de l’utilisateur

courant.

 L’ancien mot de passe est demandé par sécurité.

 L’utilisateur root a le droit de modifier les mots de passe de tous les utilisateurs du système, sans avoir à connaître le précédent mot de passe.

32

Modifier le mot de passe (2/6)

La commande passwd :

Syntaxe :

$ passwd <options> login

Description :

 Permet le gestion des informations de validité

 Tous les champs de /etc/shadow peuvent être modifiés par la

commande passwd.

33

Modifier le mot de passe (3/6)

Options:

Option

Rôle

-l

-u

-d

-n <j>

-x <j>

Lock : verrouille le compte (! devant le mot de passe crypté).

Unlock : déverrouille le compte. Il n’est pas possible de déverrouiller un compte qui n’a pas de mot de passe, il faut utiliser en plus -f pour cela.

Supprime le mot de passe du compte.

Durée de vie minimale en jours du mot de passe.

Durée de vie maximale en jours du mot de passe.

-w <j>

Nombre de jours avant avertissement.

-i <j>

Délai de grâce avant désactivation si le mot de passe est expiré.

-S

Statut du compte.

34

Exercice

Le compte esprit doit être modifié comme ceci :

• Il doit attendre 5 jours après saisie d’un nouveau mot de passe pour pouvoir le changer, • Son mot de passe est valide 45 jours, • Il est prévenu 7 jours avant qu’i l doit changer de mot de passe, • S’il ne change pas de mot de passe après 45 jours, il dispose encore de 5 jours avant d’être désactivé.

Donnez la commande passwd :

passwd -n 5 -x 45 -w 7 -i 5 esprit

Voici la ligne de /etc/shadow associée. esprit:$2a$10$dwbUGrC75bs3l52V5DHxZefkZyB6VTHsLH5ndjsNe/vF/HAzHOcR2 :13 984:5:45:7:5::

35

Modifier le mot de passe (4/6)

La commande chage permet de faire à peu près la même chose que passwd.

Syntaxe :

$ chage <options> login

Description :

 Elle n’est accessible que par le root .

 Lancée sans autre argument que le login de l’utilisateur, elle est interactive.

 Notez à la fin la possibilité de modifier la date du dernier changement du mot de passe et une date fixe d’expiration du mot de passe (champ 8) :

36

Modifier le mot de passe (5/6)

Options:

Option

Rôle

-E

-M

-m

-W

-d

permet de fixer une date d'expiration sous la forme Unix standard (nombre de jours depuis le 1er janvier 1970) ou sous la forme YYYY/MM/DD

permet de changer la valeur du nombre maximal de jours de validité du mot de passe.

permet de changer la valeur du nombre minimal de jours de validité de mot de passe.

permet de changer le nombre de jours d'alerte avant un changement obligatoire de mot de passe.

permet de changer la date de dernier changement de mot de passe

37

Modifier le mot de passe (6/6)

38

Modification d’un utilisateur (1/2)

La commande usermod est utilisée pour modifier un compte.

Syntaxe :

$ usermod <options> login

Description :

 Elle prend la même syntaxe et les mêmes options que

useradd mais dispose aussi d’une syntaxe complémentaire

39

Modification d’un utilisateur (2/2)

Options:

Option

Rôle

-L

-U

verrouillage du compte, comme passwd -l .

Déverrouillage du compte, comme passwd -u.

-e <n>

Expire : le mot de passe expire n jours après le 01/01/1970.

-u <UID>

Modifie l’UID associé au login. Le propriétaire des fichiers appartenant à l’ancien UID au sein du répertoire personnel est modifié en conséquence.

-l <login>

Modifie le nom de login.

-m

Move : implique la présence de -d pour préciser un nouveau répertoire personnel. Le contenu de l’ancien répertoire est déplacé dans le nouveau.

40

Suppression d’un utilisateur

Publicité

Supprimez un utilisateur avec la commande userdel.

Par défaut le répertoire personnel n’est pas supprimé.

Vous devez pour ceci passer l’option -r.

userdel -r esprit

41

La gestion des groupes

42

Ajout d’un groupe

Vous pouvez créer un groupe directement dans le fichier /etc/group ou bien passer par les commandes associées.

La commande groupadd permet de créer un groupe.

Sa syntaxe simple accepte l’argument -g pour préciser un GID précis.

Pour lister tous les groupes (primaire et secondaires) d'un utilisateur :

groups Salah Esprit Ecole Admin

43

Modification d’un groupe

La commande groupmod permet de modifier un groupe.

Syntaxe:

$ groupmod <options> nom_du groupe

Options:

Option

Role

-n <nom>

Renomme le groupe.

-g <GID>

Modifie le GID.

-A <user>

Ajoute l’utilisateur spécifié dans le groupe (groupe secondaire).

-R <user>

Supprime l’utilisateur spécifié du groupe.

44

Suppression d’un groupe

La commande groupdel supprime un groupe.

La commande vérifie d’abord si le groupe que vous voulez supprimer est le groupe principal d’un utilisateur.

Dans ce cas le groupe ne peut pas être supprimé.

Il faut alors vérifier le système de fichiers pour supprimer toute trace de ce groupe.

Exemple :

groupdel amis

45

Contrôle du propriétaire d'un fichier

 La commande chfn (change full name) permet d'indiquer dans le champ numéro 5 du fichier /etc/passwd différentes informations sur un utilisateur.

 Pour changer le propriétaire d'un fichier ou d'un répertoire, il faut utiliser chown. # chown nom_user nom_fich

 Pour modifier le groupe d'un fichier ou d'un répertoire, il faut

utiliser chgrp.

chgrp nom_group nom_fich

46

Récapitulatif

useradd, usermod, userdel

groupadd, groupmod, groupdel

gestion des comptes utilisateur

gestion des groupes

passwd

changer le mot de passe d'un utilisateur

chfn, id, groups, chage

utilitaires divers

47

Les droits étendus

48

Les droits étendus (SUID,SGID) (1/3)

Il est possible d’établir des droits d’accès étendus pour les fichiers exécutables.

Quand on applique ces droits à une commande, cette dernière s’exécutera avec les droits du propriétaire ou du groupe d’appartenance de la commande et non plus avec les droits d’utilisateurs l’ayant lancée.

49

Les droits étendus (SUID,SGID) (2/3)

L’exemple le plus simple est le programme passwd permettant de changer son mot de passe. Si la commande était exécutée avec les droits d’un utilisateur classique, passwd ne pourrait pas ouvrir et modifier les fichier /etc/passwd et /etc/shadow

Seul le root peut modifier le fichier. La commande passwd ne pourrait donc pas modifier ce fichier pour un simple utilisateur.

50

Les droits étendus (SUID,SGID) (3/3)

Si on regarde les droit de la commande passwd :

Un nouveau droit est apparu: le droit s pour les droits de root, Ce nouvel attribut permet l’exécution de la commande avec des droits d’accès étendus. Pendant le traitement, le programme est exécuté avec les droit du propriétaire du fichier ou de son groupe d’appartenance, Le droit s sur l’utilisateur est appelé le SUID-bit (Set User ID bit), et sur le groupe GUID-Bit (Set Group ID bit),

51

Attribution des droits étendus (1/2)

La commande chmod permet de placer les SUID-Bit et GUID-Bit :

 Méthode littérale :

chmod u+s commande # chmod g+s commande

 Méthode numérique : Les valeurs octales sont 4000 pour le SUID-Bit et 2000 GUID-Bit.

chmod 4755 commande # chmod 2755 commande

52

Attribution des droits étendus (2/2)

NB:

 Seul le propriétaire ou l’administrateur peut attribuer ce droit.

 Affecter le SUID ou le GUID n’a pas de sens que si les droits d’exécution ont préalablement été établis (attribut x sur le propriétaire ou le groupe).

 Si ceux-ci ne sont pas présents, le s et remplacé par S

53

Le sticky bit (1/2)

Le sticky bit (bit collant) permet d’affecter une protection contre l’effacement du contenu d’un répertoire. Prenant l’exemple du répertoire /tmp, tout les utilisateurs ont tous les droits sur son contenu :

Dans ce répertoire, tout le monde peut supprimer des fichiers y compris ceux qui ne lui appartiennent pas.

54

Le sticky bit (2/2)

Le sticky bit appliqué à un répertoire, empêche cette manipulation. Le fichier peut encore être visualisé et modifié , mais seul son propriétaire et le root peuvent le supprimer.

 Méthode littérale

 Méthode numérique En octal, on utilisera la valeur 1000 pour le sticky bit :

chmod 1777

/tmp

55

Environnement utilisateur

56

Les fichiers d’environnement (1/2)

Comme tout autre programme, le shell se base sur des fichiers de configuration. Pour le Bash, les deux types de fichiers de configuration utilisés pour la personnalisation de l'environnement:

 Les fichiers de configuration utilisateur se trouvant dans les répertoires personnels des utilisateurs (~/.bashrc et ~/.profile ou ~/.bash_profile ). Ces deux fichiers sont spécifiques à chaque utilisateur et permettent à chacun d'entre eux de spécifier leurs préférences personnelles

 Les fichiers de configuration globaux se trouvant sous le répertoire /etc (/etc/profile et /etc/bashrc). Ce sont les fichiers de configuration dans lesquels on défini toutes les options communes à tous les utilisateurs et ne sont éditables que par un administrateur.

57

Les fichiers d’environnement (2/2)

 Lors du démarrage d’une session, le fichier de configuration /etc/profile est exécuté, puis les fichiers de configuration ~/.bash_profile et ~/.bashrc sont exécutés pour charger les données personnelles de l’utilisateur qui vient de se loguer.

 Le fichier ~/.bash_profile n'est exécuté que lors d'un nouveau login, alors que le fichier ~/.bashrc est exécuté à chaque nouveau lancement de bash.

58

Les variables d’environnement (1/3)

 Variables dynamiques stockant des données et des options de programmes, des informations sur l’ordinateur qui peuvent être le comportement de ces derniers selon la manière appropriée à l’environnement courant.

pour modifier

programmes

utilisées

par

les

 L'utilisation de ces

chaque programme, certaines variables définissent des fonctions précises:

variables est définie par

59

Les variables d’environnement (2/3)

• PATH : indique la liste des chemins où trouver les programmes à

lancer.

• SHELL : indique l’interpréteur shell utilisé par défaut. • HOME : contient le chemin absolu vers le répertoire personnel de

l'utilisateur connecté.

• LOGNAME : pour le nom de l'utilisateur • HISTFILE : pour le fichier historique. • HISTSIZE : pour la limite de commandes historiques accessibles. • EDITOR : pour l'éditeur de ligne de commandes.

60

Les variables d’environnement (3/3)

 Pour afficher la valeur d'une variable: $ echo $VAR_ENV

 Pour déclarer des variables d’environnement $VARNAME=valeur $export VARNAME export rend la variable visible pour tous les shells et les programmes  Pour remplacer les deux commandes précédentes: $export VARNAME=valeur

 Pour effacer le contenu d'une variable $unset VARNAME

 Afficher toutes les variables d'environnements $ env

61