Il faut un compte rendu au format PDF sur l’email du professeur

On va expliquer et utiliser les notions de root et sudo et création de comptes utilisateurs

On va utiliser la famille Simpson pour illustrer nos travaux

root et sudo

🕒 : 5.5 h maximum

Pré-requis:

  • VirtualBox X.X disponible sur virtualbox.org
  • mais nous allons préfèrer en ligne de commande :
  • avec les dépots de UBUNTU
  •  usage de vim (vi)  savoir copier et deplacer des lignes ou et des mots. yy  pour copier et p pour coller (paste) 
  •  cours présentation VirtualBox 
  • Droits et Propriétés des fichiers.
  • VM0 disposer d’une Debian11 avec virtualbox
  • Les fichiers /etc/passwd /etc/shadow /etc/group et hash

But:

Savoir administrer la machine 

  1. créer un compte de façon propre et de façon hack (cyber sécurite)
  2. Expliquer et savoir exploiter les fichiers passwd/shadow /group
  3. installation sudo sur une machine avec un compte root
  4. gestion des droits utilisateurs et groupes (groups)

Etre root ou etudiant

Homer and Lisa

Sur cette machine on dispose d’un mot de passe , ici debian ! bonjour la sécurité .

login : root  / passwd : debian

certes c’est légèrement protégé ! et c’est tellement facile à craquer ! 

il suffit de tester .. des mots .. on sait que root est l’administrateur ! (il faut un dictionnaire avec debian )

une machine virtuelle est contenue, isolé du monde … donc pas de problème avec les mots de passes si simple .. on est la pour apprendre .

Devenir root en étant etudiant

Vous vous connectez en tant que etudiant  (ici etudiant/etduiant) 

en tapant 

su - 

on devient root , dans son contexte (contexte de root)

vérifier avec pwd ou vous êtes.

bien quittons root en tapant exit  , qui suis je pwd?

root là ou je suis

changer de terminal

en tapant 

su

vérifier avec pwd ou vous êtes.

bien quittons root en tapant exit  , qui suis je pwd?

en tapant

su etudiant

login:etudiant

vérifier avec pwd ou vous êtes.

pwd

bien quittons root en tapant exit , qui suis je pwd?

exit
pwd

Quel est la différence entre su et su – ?

Sécurisons l’usage de root

Le but ici est d’installer l’outil sudo pour gérer root autrement que par son mot de passe, et ici l’idée est de faire disparaître son mot de passe (ici sur notre vm « debian », qui peut être trouvé par force brut. Si il n’existe plus ,le risque est écarté!

mise en place de sudo

sudo est une commande qui va pouvoir donner temporairement des droits root à un utilisateur privilégie du système 

ici  etudiant pourra devenir root de façon temporaire.

(par contre etudiant peut être aussi trouvé par force brut. (il ne faut pas le claironner !) ,mais le niveau de sécurité monte !

Attention! : Si vous êtes chez vous (pas de proxy  comme au lycée) 

La machine debian11_house est disponible pour chez vous (sans proxy)

Au lycée la debian11 est prête pour le lycée (sachant qu’on y a fait installation du proxy)

revenons a notre installation de sudo:

il faut juste installer sudo ! en étant root (update de la liste des depots) et install sudo 

apt update 
apt install sudo

puis ajouter etudiant dans les groupes sudo et adm , car ici on va donner les privilèges à etudiant qui a un mot de passe encore plus affligeant ! mais déjà il est moins connu que root ! (il va de soit que si c’était sérieux il  est facile de modifier le mot de passe ), ici on apprend!

pour ajouter etudiant dans les groupes sudo et adm

on peut manuellement intervenir avec un éditeur de texte dans le fichier group

vi /etc/group

et sinon il existe la commande usermod

usermod -a -G sudo,adm  etudiant

ici les 2 groupes sont importants pourquoi ?

avec man déterminer l’utilité des options -a -G

vérifier que etudiant est bien dans les 2 groupes en question

cat /etc/group

on peut vérifier les groupes ou est etudiant

groups

Pour valider ce changement il faut redémarrer la machine.

en root: nous avons ces 2 commandes pour relancer le système (seul root a ce pouvoir!)

shutdown -h 0

a quoi sert l’option -h ? (man shutdown)

ou 

reboot

testons notre sudo

se logger etudiant 

et tester 

sudo -s  

puis (exit) puis tester

sudo -i 

donner les rôles des options -s et -i pour sudo ?

Maintenant que sudo fonctionne

Donc maintenant on peut devenir root avec le mot de passe root, mais aussi en étant étudiant grâce à la commande sudo

vérifier bien cela!

Enlevons le mot de passe de root

root actuellement peut se connecter avec son mot de passe , et cette faiblesse doit disparaître

il y a plusieurs technique pour supprimer le mot de passe de root.

la technique la plus propre et facile est d’utiliser la commande passwd

passwd -l root

Avec cette commande le mot de passe de root ne devient plus possible (lock)

cette commande à juste rajouter un ! devant le hash du mot de passe de root , ce qui rend le mot de passe bloqué . (lock)

si on veut être plus sécurisé encore on peut supprimer le hash de root et la plus de mot de passe possible pour root, ici pour le remettre la commande

passwd -u root

sinon on peut le faire avec vi ! mais il est conseillé de passer par les commandes du sytème.

le fichier à vérifier ici est:

vi /etc/shadow

vérifier les 2 fonctions lock et unlock de passwd

fichiers passwd et shadow

/etc/passwd

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 
bin:x:2:2:bin:/bin:/usr/sbin/nologin 
sys:x:3:3:sys:/dev:/usr/sbin/nologin 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/usr/sbin/nologin 
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin 
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin 
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin 
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin 
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin 
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin 
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin 
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin 
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin 
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin 
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin 
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin 
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin 
systemd-timesync:x:101:101:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin 
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin 
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin 
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin 
avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin 
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin 
etudiant:x:1000:1000:etudiant,,,:/home/etudiant:/bin/bash 
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin 
tcpdump:x:107:114::/nonexistent:/usr/sbin/nologin
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
-- VISUAL --                                                                               28        28,50         All

sur la ligne d’etudiant on a différents champs:

/etc/shadow

root:$y$j9T$DBA7PGtwvvFtjHvibgIxm/$/0kupbcNKnDnDquloyqvJUWnJzsUIUyvXuKA0xo9WA2:19039:0:99999:7:::
daemon:*:19039:0:99999:7:::
bin:*:19039:0:99999:7:::
sys:*:19039:0:99999:7:::
sync:*:19039:0:99999:7:::
games:*:19039:0:99999:7:::
man:*:19039:0:99999:7:::
lp:*:19039:0:99999:7:::
mail:*:19039:0:99999:7:::
news:*:19039:0:99999:7:::
uucp:*:19039:0:99999:7:::
proxy:*:19039:0:99999:7:::
www-data:*:19039:0:99999:7:::
backup:*:19039:0:99999:7:::
list:*:19039:0:99999:7:::
irc:*:19039:0:99999:7:::
gnats:*:19039:0:99999:7:::
nobody:*:19039:0:99999:7:::
_apt:*:19039:0:99999:7:::
systemd-timesync:*:19039:0:99999:7:::
systemd-network:*:19039:0:99999:7:::
systemd-resolve:*:19039:0:99999:7:::
messagebus:*:19039:0:99999:7:::
avahi-autoipd:*:19039:0:99999:7:::
sshd:*:19039:0:99999:7:::
etudiant:$y$j9T$rKq3i4YpsvfM521ydp0Sc1$vjw2wbRtiptmbW5Et3WaQtVJLWwOmlE99S9en/crTP/:19039:0:99999:7:::
systemd-coredump:!*:19039::::::
tcpdump:*:19039:0:99999:7:::
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
~                                                                                                                      
"/etc/shadow" 28L, 941B                                                                              1,1           All

sur ce fichier le mot de passe (hash) est il bloqué ?

Pour sécuriser la machine il faut bloquer la connexion sur root avec le mot de passe , rectifier la situation

Tester l’accès à root.

Administration des utilisateurs

bart le premier utilisateur après étudiant (devenu admin de la machine)

on va créer un nouvel utilisateur de la machine

les applicatifs adduser et deluser sont codés en perl il faut installer ce dernier en étant root.

apt install perl

perl est un langage de script souvent employé sous linux (se prononce peurl)

en étant root 

adduser bart

rentrer les champs qui seront purement informatif , pas de réponse critique attendue, mais nous allons nous appliquer a remplir les champs. Comme dans l’image ci-dessous

juste placer le mot de passe etudiant  pour l’utilisateur bart (pour simplifier et pour la suite du tp)

se connecter en bart

on peut rebooter la machine  pour se logger en bart (fermer la fenêtre de la machine virtuelle)

y a t’il une autre méthode  sans rebooter?

exit est la solution !

nous sommes donc bart , connecté

ou est bart vérifier avec pwd ?

visualiser ensuite le contenu /etc/passwd

repérer les champs concernant bart (son nom salle etc…) oui c’est bien la !

et si on veut regarder le fichier /etc/shadow

more /etc/shadow

que se passe t’il ?

Passons root pour regarder le /etc/shadow

Expliquer pourquoi  root a le droit de voir ce fichier et non pas bart !

on doit faire un terminal tty2 (super F2) ou un autre , et devenir root en passant par etudiant , expliquer la procédure.

repérer le hash  du mot de passe ici bart , comparer le a celui de etudiant qui est pourtant le même vu que c’est nous qui avons défini cela !

hash: en francais , hache ..ou chiffrement du mot de passe. 

  • Un hash (ou hachage en français) est une fonction mathématique qui transforme des données (comme une chaîne de caractères ou un fichier) en une valeur de taille fixe, souvent une séquence de chiffres et de lettres. Cette valeur est appelée empreinte ou somme de contrôle.
  • Les fonctions de hachage sont utilisées pour :
    • Vérifier l’intégrité des données (par exemple, vérifier qu’un fichier n’a pas été modifié).
    • Stocker des mots de passe de manière sécurisée (les mots de passe sont hachés avant d’être enregistrés).
    • Accélérer la recherche dans des structures de données comme les tables de hachage.
  • Exemples d’algorithmes de hachage : MD5SHA-1SHA-256.   (cyber sécurité !)

Créer un compte homer

comme nous l’avons vu créons un compte homer (le papa de bart) son mot de passe sera student

homer va écrire un fichier dans son répertoire de travail

fichier : bonjour.txt  qui contiendra « bonjour le monde »

Redevenons bart

en vous connectant bart

essayer de rentrer chez homer (/home/homer) et de lire son fichier bonjour.txt

comment y remédier ?

modifions la config de adduser

a création d’un user pourrait être faite à « la main » en remplissant vous même les fichiers 

  • /etc/passwd
  • /etc/shadow 
  • /etc/group

mais il est préférable de s’aider du script perl adduser une bonne habitude à prendre

il faut savoir que la configuration de ce dernier est dans le fichier

/etc/adduser.conf

que vous allez modifier pour donner des droits à la création du répertoire de user.

# If DIR_MODE is set, directories will be created with the specified
# mode. Otherwise the default mode 0755 will be used.
DIR_MODE=0755

755  donne tous les droits au propriétaire ,ça c’est bien ,mais 55 suivant ? corriger cette configuration

Dites comment modifier ce fichier de configuration pour empêcher les autres de voir le travail du compte créé.

créer un compte à tahitibob 

vérifier que homer ne voit pas ce que fait tahitibob ! et réciproquement ni bart

Ajoutons marge

Pour tester notre nouvelle config ajouter marge 

vérifier que ce que fait marge n’est pas visible par les autres utilisateurs?

Homer à perdu son mot de passe.

Seul root peut faire cela ! Et une petite expertise de vi (copier coller)

A partir du fichier shadow placer le hash de bart (etudiant) dans le champ du hash de homer !

Connectez vous ensuite chez homer avec student que ce passe t’il 

Alors que le mot de passe de bart ca donne quoi ?

Ajoutons burns

Créer un compte burns 

vérifier le compte en le testant.

on va supprimer burns

deluser --remove-home burns 

Vérifier que l’affreux Mr Burns n’a plus de compte !

Expert ! lisa

maintenant on crée le compte lisa en allant directement dans les fichiers passwd shadow et group ! un job de hacker

sans utiliser adduser ! à la main directement dans les fichiers de configurations.

Mais il faut noter que ça n’est pas conseillé ! mais par curiosité et comme nous sommes dans une formation Cyber Sécurité on peut se le permettre (hacker).

expliquer votre démarche .

on ne lui mettra pas de mot de passe , rien entre ‘::’ (pas de hash)

réaliser un compte pour lisa sans adduser !

Ajouter un mot de passe avec la fonction passwd car il faut prendre conscience que le hash du mot de passe est très complexe.