Parties

  1. Table des matières
    1. revision apt, dpkg
    2. consoles
  2. gestion des utilisateurs
    1. création d'un utilisateur
    2. questions /etc/passwd
    3. questions /etc/passwd : root
    4. questions /etc/passwd: gid
    5. questions /etc/passwd : groupe
    6. questions /etc/group
    7. questions /etc/group
    8. questions /etc/group
    9. questions /etc/passwd: shell apache
    10. questions /etc/passwd : nologin
    11. questions /etc/passwd : homedir
    12. questions /etc/passwd : homedir 2
    13. questions /etc/passwd : uid utilisateurs normaux
    14. droits de /etc/passwd
    15. droits de /etc/shadow
    16. droits de /etc/shadow 2
  3. Cryptage des mots de passe dans /etc/shadow
    1. /etc/shadow : champ crypté
    2. Mot de passe crypté
    3. la fonction crypt
    4. crack principe
    5. crack mot de passe court mais maj
    6. crack mot de passe long
    7. crack mot de passe long : temps
    8. Dictionnaire
    9. decryptage brute force
  4. Manipualtion des droits d'acces
    1. droits

1. Table des matières

1.1 Table des matières


Bienvenue au TP 3.

Avez vous bien fait et fini le TP précèdent?

C'est important d'avoir bien compris les notions du TP précèdent avant de faire ce TP.
Si ce n'est pas fait, finissez d'abord le TP précèdent.

Cliquez sur "début du TP" pour commencer.

1.2 revision apt, dpkg

Révision apt, dpkg

Vous devez absolument comprendre les commandes suivantes.
Ne vous contentez pas de répondre, vérifiez que vous comprenez précisément chaque option.

Si vous avez des doutes, prenez le temps de chercher sur internet les informations nécessaires.

Voir entre-autres:
http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool
http://www.debian.org/doc/manuals/apt-howto/index.fr.html
http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.fr.html
http://www.coagul.org/article.php3?id_article=157

[des questions seront posées au contrôle sur le fonctionnement de certaines de ces commandes]

1.3 consoles

Consoles

Attention! Lisez jusqu'au bout avant d'appuyer sur les touches!

Un système Linux fournit normalement une série de consoles sur lesquelles on peut se connecter.
On peut changer d'une console à l'autre à l'aide des touches "control-alt-f1, control-alt-f2 ..."

Attention! Vous allez perdre temporairement l'accès à votre interface graphique. Il faudra essayer toutes les consoles (f1, f2 ... f12) jusqu'à ce que vous retrouviez l'interface graphique.

Essayez plusieurs consoles en vous loguant à chaque fois et en tapant quelques commandes.

Les consoles peuvent-être très pratiques lorsque vous avez un problème d'affichage.

Une des consoles correspond au serveur X (interface graphique), laquelle?
(f1, f2, f3 ... f12 ) ?

2. gestion des utilisateurs

2.1 gestion des utilisateurs

Dans cette partie du TP nous allons nous intéresser à la création et à la gestion des utilisateurs.

Voici les transparents du cours correspondants:

xx

2.2 création d'un utilisateur

Création d'un utilisateur


Créez un utilisateur avec la commande "adduser nom_utilisateur" et donnez lui un mot de passe avec la commande "passwd nom_utilisateur".

Vérifiez dans le fichier /etc/passwd et /etc/shadow qu'il y a des lignes correspondantes à cet utilisateur.

Vérifiez qu'un répertoire personnel à bien été crée pour cet utilisateur.

Avec la commande "sudo su - nom_utilisateur", devenez l'utilisateur "nom_utilisateur" (cela lance un shell)

Vous pouvez quitter ce shell avec control-d (ou la commande "exit").

2.3 questions /etc/passwd

Quel est le numero d'identifiant (uid) de l'utilisateur "nobody" ?

2.4 questions /etc/passwd : root

Quel est le login de l'utilisateur ayant le numero d'identifiant (uid) 0 ?

2.5 questions /etc/passwd: gid

Quel est le numero de groupe (gid) primaire de l'utilisateur "mail" ?

2.6 questions /etc/passwd : groupe

Dans quel fichier trouve-on la liste des groupes?
(on demande le chemin complet)

2.7 questions /etc/group

Dans une question precedente, on avait determiné le gid primaire de l'utilisateur "mail".
Quel est le nom du groupe correspondant à ce gid ?

2.8 questions /etc/group

La 18eme ligne de /etc/group est:
cdrom:x:24:etudiant
à quoi correspond le "cdrom:" en debut de ligne?

2.9 questions /etc/group

La 4eme ligne de /etc/group est:
adm:x:4:root,adm,daemon
à quoi correspond le ",adm," en fin de ligne?

2.10 questions /etc/passwd: shell apache

Quel est le shell attribué à l'utilisateur "www-data" ?

2.11 questions /etc/passwd : nologin

En regardant dans /etc/passwd, quel est le shell associé a des utilisateurs "normaux" (root, etudiant ...)

2.12 questions /etc/passwd : homedir

Quel est le répertoire personnel de l'utilisateur "etudiant" ?

2.13 questions /etc/passwd : homedir 2

Quel est le répertoire personnel de l'utilisateur "mail" ?

2.14 questions /etc/passwd : uid utilisateurs normaux

Comparez les numéros d'utilisateur des types d'utilisateurs suivants:

A partir de quel numéro commencent les utilisateurs normaux?

2.15 droits de /etc/passwd

en utilisant la commande "ls -l nom_fichier", determinez les droits d'accés au fichier "/etc/passwd"

2.16 droits de /etc/shadow

Qui a le droit de lire le fichier "/etc/shadow" ?

2.17 droits de /etc/shadow 2

Qui a le droit d'ecrire dans /etc/shadow ?

3. Cryptage des mots de passe dans /etc/shadow

3.1 Cryptage des mots de passe dans /etc/shadow

Dans cette partie nous allons essayer de comprendre quelques principes sur le cryptage des mots de passe utilisé dans /etc/shadow

N'oubliez pas: un des buts et d'eviter que des mots de passe soient enregistrés en clair (non cryptées) dans un fichier. Même si ce fichier est protegé en lecture. C'est très dangereux.

x

3.2 /etc/shadow : champ crypté

/etc/shadow : champ crypté


Parcourez le fichier "/etc/shadow". Les champs sont delimités par des ":"
Quel est le le numéro du champ ou se trouve le mot de passe crypté?
(champs1:champs2:champs3:....)
(en cas de doute, regardez "shadow" dans la section 5 du manuel: "man 5 shadow")

3.3 Mot de passe crypté

Mot de passe crypté


Un mot de passe crypté dans /etc/shadow ressemble à ca
$1$s1f5m5j4$oLyi.z6g6/.Fx4x0y6nxD0

Ce mot de passe crypté est composé de deux parties:

La première partie : $1$s1f5m5j4$ correspond au "salt"
vous remarquerez que cette partie commence toujours par $1$ et finit par $
Le "salt" est une chaîne choisie aléatoirement, qui n'est pas secrète, et qui sert à perturber le cryptage.
Par exemple: deux utilisateurs avec des mots de passe identiques auront un "salt" aléatoire différent et donc des mots de passe cryptés differents. De cette manière, quelqu'un qui regarderait /etc/shadow ne se rendra pas compte qu'ils ont le même mot de passe.

Et la deuxième partie : oLyi.z6g6/.Fx4x0y6nxD0 est le mot de passe crypté
Il est crypté à l'aide d'un alogithme appelé MD5
http://fr.wikipedia.org/wiki/MD5
Ce cryptage (fonction de hachage cryptographique, pour être précis), est à sens unique.
On peut aller dans le sens clair->crypté mais pas dans le sens crypté->clair

3.4 la fonction crypt

La fonction crypt


La fonction "C " crypt() permet d'encrypter un mot de passe.
Lisez rapidement la page man de crypt.

le deuxième champ de /etc/shadow contient le mot de passe crypté sous la forme:

$1$abcdefgh$xyz....

la première partie "$1$abcdefgh$" est utilisé pour des raisons cryptographiques et s'appelle "salt".
la deuxième partie "xyz...." représente le mot de passe crypté.

Créez un fichier password.c :

#define _XOPEN_SOURCE
#include <unistd.h>
#include <stdio.h>

int
main()
{
printf("resultat:\n%s\n",crypt("motdepasse", "salt"));
return 0;
}

remplacez "salt" avec une valeur trouvée dans /etc/shadow et "motdepasse" par le mot de passe correspondant (par exemple, pour le compte "etudiant")
puis compilez le avec: "gcc -l crypt password.c -o password"

Exécutez le programme et vérifiez qu'il affiche effectivement le mot de passe cryptée, tel qu'on le trouve dans /etc/shadow

Attention: ne créez jamais des fichiers de travail dans /etc !!!
Vous devez travailler dans votre répertoire personnel (/home/etudiant)

Question: Quel est la ligne affichée pour:
salt: $1$s1f5m5j4$
mot de passe: iutparis13


3.5 crack principe

"Cracker" un mot de passe


Supposons que vous soyez un pirate qui a réussi à lire le fichier /etc/shadow
Vous avez donc un mot de passe crypté, et vous voulez obtenir le mot de passe en clair correspondant.

Il n'est pas possible de trouver directement le mot de passe reel ("iutparis13") à partir du mot de passe crypté ("$1$s1f5m5j4$oLyi.z6g6/.Fx3x...").

Une solution très simple (mais longue) est d'essayer tous les mots de passes possibles. Vous pouvez crypter chacun de ces essais et comparer au mot de passe crypté que vous avez trouvé dans /etc/shadow. Si la version crypté de votre essai est egale au mot de passe crypté de /etc/shadow, c'est que vous avez trouvé le bon mot de passe.

Supposons que vous sachiez que l'utilisateur a choisi un mot de passe composé de 3 lettres minuscules (sans accents).

Combien de combinaisons possibles est-ce qu'il faudra essayer au maximum?


3.6 crack mot de passe court mais maj


Supposons que vous sachiez que l'utilisateur a choisi un mot de passe composé de 3 lettres sans accents.
MAIS: majuscules et minuscules et 10 caracteres de ponctuation permis (,;:!&"'-_=)

Combien de combinaisons possibles est-ce qu'il faudra essayer au maximum?

3.7 crack mot de passe long

Combien de combinaisons sont possibles si l'utilisateur a choisi un mot de passe de 10 lettres minuscules non-accentués?

(utilisez la commande "bc" pour faire le calcul exact, les calculatrices n'affichent pas assez de chiffres)

3.8 crack mot de passe long : temps

En supposant que votre machine puisse vérifier 1000 mots de passe à la seconde, combien de temps faudra-il pour décrypter un mot de passe de 10 lettres minuscules sans accents.

3.9 Dictionnaire

Dictionnaire

Les gens utilisent souvent des mots de passe longs, mais contenant des mots en français.

Les programmes de décryptage peuvent alors essayer tous les mots du dictionnaire pour essayer de trouver le mot de passe correspondant.

Un dictionnaire français contient environ 40 000 mots.

Un utilisateur choisit le mot de passe "diplodocus"

Comparez le nombre d'essais qu'il faut faire avec :

(en pratique les méthodes dictionnaire ont des approches beaucoup plus sophistiqués)


3.10 decryptage brute force

Decryptage "brute force"


(exercice un peu plus long, si vous êtes en retard, vous pouvez passer cette question en répondant "retard")

Écrivez un programme en C qui balaye tous les mots de passe possibles à 3 lettres (minuscules sans accents).

Trouvez le mot de passe de l'utilisateur "toto". Voici sa ligne dans /etc/shadow :
toto:$1$rXGhjmGD$qtuklX26hky6/TDbGxjCo.:11745:0:99999:7:::
Conseils et rappels C:
Saisissez le mot de passe trouvé ci-dessous (ou "retard" si vous ne souhaitez pas faire cette question).

4. Manipualtion des droits d'acces

4.1 Manipualtion des droits d'acces

Dans l'exercice suivant nous allons construire une arborescence en y associant des utilisateurs et des groupes.
Le but est de s'habituer à l'utilisation des commandes de gestion des utilisateurs et des droits.

xx

4.2 droits

Utilisateurs et droits d'accès

Cet exercice de manipulation de droits est assez long, mais important. N'hésitez pas à prendre du temps.

Des commandes qui pourront être utiles sont données en pas de cette page.

Un petit programme (script) est fourni, pour vérifier si vous ne vous êtes pas trompés, une fois que vous aurez fini les 4 questions de cet exercice.
Vous pouvez l'exécuter, en tant que root, et il vous dira si vos répertoires sont conformes à ce qui est demandé.
Pour télécharger le script cliquez sur ce lien: verif-droits.sh

Exceptionnellement, pour cet exercice, il peut-être intéressant de travailler dans un shell en tant que root.
Pour ça, vous pouvez taper la commande "sudo su - "

1. création des fichiers et répertoires

Créez l'arborescence suivante (figure)
Vous pouvez créer très simplement des fichier vides à l'aide de la commande "touch nom_fichier" .
Indication: /var existe déjà, vous devez donc commencer par créer le répertoire "jeu"
droits

2. création des utilisateurs

En utilisant la commande appropriée, créez les utilisateurs: jeu, jean, akima, dupond
Attention, ne confondez pas les répertoires (que vous avez déjà crée) avec les utilisateurs du système.
Vérifiez que les utilisateurs ont bien été crées en regardant le fichier /etc/passwd

3. création de groupes d'utilisateurs

4. manipulation des droits et des propriétaires

Dans cette partie vous devez changer les propriétaires, les groupes et les droits de différents fichiers et répertoires pour obtenir les point suivants:

Conseil : n'hésitez pas à devenir un des utilisateurs pour voir si ses droits sont corrects. Par exemple, pour devenir akima, vous pouvez taper: "sudo su - akima"

Les commandes utiles

N'hésitez pas à regarder la page "man" de ces commandes.