diff --git a/Born2beroot-subject-fr.pdf b/Born2beroot-subject-fr.pdf new file mode 100644 index 0000000..cc13aad --- /dev/null +++ b/Born2beroot-subject-fr.pdf @@ -0,0 +1,278 @@ + Born2beRoot + +Résumé: Ce document est un sujet d’Administration Système. + Version: + Table des matières + +I Préambule 2 + +II Introduction 3 + +III Consignes générales 4 + +IV Partie obligatoire 5 + +V Partie Bonus 10 + +VI Rendu et peer-evaluation 12 + + 1 + Chapitre I +Préambule + + 2 + Chapitre II +Introduction + + Ce projet a pour but de vous faire découvrir le merveilleux monde de la virtualisation. + Vous allez créer votre première machine en respectant des consignes précises et en +utilisant VirtualBox (ou UTM si VirtualBox ne fonctionne pas sur votre machine). Ainsi, +à la suite de ce projet, vous serez capable d’installer votre propre système d’exploitation +implémentant des règles strictes. + + 3 + Chapitre III +Consignes générales + + • L’utilisation de VirtualBox (ou UTM si VirtualBox ne fonctionne pas sur votre + machine) est obligatoire. + + • Vous devez rendre uniquement un fichier signature.txt à la racine de votre dépôt. + Ce fichier contiendra la signature du disque virtuel de votre machine (cf. Rendu + et peer-evaluation pour plus d’informations). + + 4 + Chapitre IV +Partie obligatoire + + Ce projet consiste à vous faire mettre en place votre premier serveur en suivant des +règles spécifiques. + + Puisqu’il s’agit de mettre en place un serveur, vous installerez le + minimum de services. Pour cette raison, une interface graphique n’a + pas d’utilité ici. Il est donc interdit d’installer X.org ou tout + autre serveur graphique équivalent. Dans le cas contraire, votre note + sera de 0. + + Vous devez utiliser comme système d’exploitation, au choix : Debian latest stable +(pas de testing/unstable), ou Rocky latest stable. L’utilisation de Debian est fortement +conseillée pour quelqu’un débutant dans ce domaine. + + La mise en place de Rocky est plus complexe. Par conséquent, vous + n’avez pas l’obligation de mettre en place KDump. Cependant, SELinux + devra rester actif et sa configuration sera adaptée au sujet. + AppArmor pour Debian devra également rester actif. + + Vous devez créer au minimum 2 partitions chiffrées en utilisant LVM. Voici un exemple +de partition attendue pour votre machine virtuelle : + + 5 + Born2beRoot + + Durant la soutenance, des questions seront posées en fonction + du système d’exploitation choisi. Informez-vous sur ce que vous + utilisez. Par exemple, connaître la différence entre aptitude et apt, + mais aussi ce qu’est SELinux ou AppArmor. En bref, il faut comprendre + ce que l’on utilise ! + + Un service SSH sera obligatoirement actif sur le port 4242 dans votre machine vir- +tuelle. Pour des questions de sécurité, on ne devra pas pouvoir se connecter par SSH avec +l’utilisateur root. + + L’utilisation de SSH sera testée durant la soutenance par la mise en + place d’un nouveau compte. Il faut par conséquent comprendre comment + fonctionne ce service. + + Vous allez configurer votre système d’exploitation avec le pare-feu UFW (ou pare-feu +pour Rocky) et ainsi ne laisser ouvert que le port 4242 dans votre machine virtuelle. + + Votre pare-feu devra être actif au lancement de votre machine + virtuelle. Pour Rocky, vous utiliserez firewalld au lieu de UFW. + + • Votre machine aura pour hostname votre login suivi de 42 (exemple : wil42). Vous + serez amené(e) à modifier ce hostname durant votre évaluation. + + • Vous allez mettre en place une politique de mot de passe fort. + • Vous allez installer et configurer sudo selon une pratique stricte. + • Un utilisateur sera présent avec pour nom votre login en plus de l’utilisateur root. + • Cet utilisateur appartiendra aux groupes user42 et sudo. + + Durant la soutenance, vous allez devoir créer un nouvel utilisateur + et lui assigner un groupe. + + Pour mettre en place une politique de mot de passe fort, il faudra remplir les condi- +tions suivantes : + + • Votre mot de passe devra expirer tous les 30 jours. + • Le nombre minimum de jours avant de pouvoir modifier un mot de passe sera + + configuré à 2. + • L’utilisateur devra recevoir un avertissement 7 jours avant que son mot de passe + + n’expire. + • Votre mot de passe sera de 10 caractères minimums dont une majuscule, une + + 6 + Born2beRoot + + minuscule et un chiffre, et ne devra pas comporter plus de 3 caractères identiques + consécutifs. + • Le mot de passe ne devra pas comporter le nom de l’utilisateur. + • La règle suivante ne s’applique pas à l’utilisateur root : le mot de passe devra + comporter au moins 7 caractères qui ne sont pas présents dans l’ancien mot de + passe. + • Bien entendu votre mot de passe root devra suivre cette politique. + + Après avoir mis en place vos fichiers de configuration, il faudra + changer tous les mots de passe des comptes présents sur la machine + virtuelle, compte root inclus. + + Pour mettre en place une configuration stricte dans votre groupe sudo, il faudra rem- +plir les conditions suivantes : + + • L’authentification en utilisant sudo sera limitée à 3 essais en cas de mot de passe + erroné. + + • Un message de votre choix s’affichera en cas d’erreur suite à un mauvais mot de + passe lors de l’utilisation de sudo. + + • Chaque action utilisant sudo sera archivée, aussi bien les inputs que les outputs. + Le journal se trouvera dans le dossier /var/log/sudo/. + + • Le mode TTY sera activé pour des questions de sécurité. + • Les paths utilisables par sudo seront restreints, là encore pour des questions de + + sécurité. Exemple : + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin + + 7 + Born2beRoot + + Enfin, vous devrez mettre en place un petit script nommé monitoring.sh. Ce dernier +sera à développer en bash. + + Dès le lancement de votre serveur, le script écrira des informations toutes les 10 mi- +nutes sur tous les terminaux (jetez un oeil du côté de wall). La bannière est facultative. +À aucun moment la moindre erreur ne doit être visible. + + Votre script devra toujours pouvoir afficher les informations suivantes : + + • L’architecture de votre système d’exploitation ainsi que sa version de kernel. + • Le nombre de processeurs physiques. + • Le nombre de processeurs virtuels. + • La mémoire vive disponible actuelle sur votre serveur ainsi que son taux d’utilisa- + + tion sous forme de pourcentage. + • La mémoire disponible actuelle sur votre serveur ainsi que son taux d’utilisation + + sous forme de pourcentage. + • Le taux d’utilisation actuel de vos processeurs sous forme de pourcentage. + • La date et l’heure du dernier redémarrage. + • Si LVM est actif ou pas. + • Le nombre de connexions actives. + • Le nombre d’utilisateurs utilisant le serveur. + • L’adresse IPv4 de votre serveur, ainsi que son adresse MAC (Media Access Control). + • Le nombre de commande executées avec le programme sudo. + + Durant la soutenance, vous serez amené(e) à expliquer le + fonctionnement de ce script et à interrompre son exécution sans + le modifier. Regardez du côté de cron. + + Voici un exemple d’exécution attendue du script : + + Broadcast message from root@wil (tty1) (Sun Apr 25 15:45:00 2021): + #Architecture: Linux wil 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux + #CPU physical : 1 + #vCPU : 1 + #Memory Usage: 74/987MB (7.50%) + #Disk Usage: 1009/2Gb (49%) + #CPU load: 6.7% + #Last boot: 2021-04-25 14:45 + #LVM use: yes + #Connexions TCP : 1 ESTABLISHED + #User log: 1 + #Network: IP 10.0.2.15 (08:00:27:51:9b:a5) + #Sudo : 42 cmd + + 8 + Born2beRoot + Voici deux exemples avec des commandes simples pour vérifier une partie des de- + +mandes du sujet : + Pour Rocky : + + Pour Debian : + + 9 + Chapitre V +Partie Bonus + + Liste de bonus : + • Mettre correctement en place des partitions afin d’obtenir une structure proche de + + cet exemple : + + • Mettre en place un site web WordPress fonctionnel avec, comme services, lighttpd, + MariaDB et PHP. + + • Mettre en place un service qui vous semble utile (NGINX/Apache2 exclus !). Du- + rant la soutenance, vous aurez à justifier ce choix. + + Dans le cadre des bonus, vous avez la possibilité de mettre en place + d’autres services. Dans ce cas, il pourra y avoir plus de ports + ouverts selon vos besoins. Bien entendu, les règles d’UFW/Firewalld + seront adaptées en conséquence. + + 10 + Born2beRoot + + Les bonus ne seront évalués que si la partie obligatoire est + PARFAITE. Par parfaite, nous entendons complète et sans aucun + dysfonctionnement. Si vous n’avez pas réussi TOUS les points de la + partie obligatoire, votre partie bonus ne sera pas prise en compte. + + 11 + Chapitre VI + +Rendu et peer-evaluation + + Vous devez rendre uniquement un fichier signature.txt à la racine de votre dépôt +Git. Ce fichier contiendra la signature du disque virtuel de votre machine. Pour récupérer +cette signature, il faudra tout d’abord aller dans le dossier d’installation par défaut (c’est +dans ce dossier que sont sauvegardées vos VMs) : + + • Pour Windows : %HOMEDRIVE%%HOMEPATH%\VirtualBox VMs\ + • Pour Linux : ~/VirtualBox VMs/ + • Pour Mac M1 : ~/Library/Containers/com.utmapp.UTM/Data/Documents/ + • Pour MacOS : ~/VirtualBox VMs/ + + Il suffira alors de récupérer la signature du fichier ".vdi" (ou .qcow2 pour les utilisa- +teurs de UTM) de votre machine virtuelle au format sha1. Voici 4 exemples de commande +avec un fichier rocky_serv.vdi : + + • Pour Windows : certUtil -hashfile rocky_serv.vdi sha1 + • Pour Linux : sha1sum rocky_serv.vdi + • Pour Mac M1 : shasum rocky.utm/Images/disk-0.qcow2 + • Pour MacOS : shasum rocky_serv.vdi + Voici un exemple de résultat attendu : + • 6e657c4619944be17df3c31faa030c25e43e40af + + Attention, votre signature risque de changer à la suite de votre + première évaluation. Pour pallier à ce problème, plusieurs solutions + s’offrent à vous, comme dupliquer votre machine virtuelle ou encore + utiliser les save state. + + Il est INTERDIT de rendre votre machine virtuelle dans votre dépôt + Git. Durant la soutenance, la signature du fichier signature.txt + sera comparée avec celle de votre machine virtuelle. Si les deux + signatures ne sont pas identiques, vous aurez 0. + + 12 + Born2beRoot + + 0010 01 11 111 001 000 11 01 10 1 0000 01 1 1010 111 11 0 000 + 011 00 1 0000 1 0000 0 01 0100 1 0 010 10 01 1 0 0001 0 010 000 + 00 111 10 111 0010 001100 001100 001100 + + 13 +