diff --git a/tp5.md b/tp5.md index 2a2b697..5156ff6 100644 --- a/tp5.md +++ b/tp5.md @@ -1,3 +1,139 @@ # Travail pratique 5 -## Objectif \ No newline at end of file +## Objectif + +Le but de ce tp est de sécuriser notre système embarqué en ajoutant utilisateurs politique de confidentialité etc... + +On va aussi utiliser mdev pour gèrer les peripheriques + +Faire des modifs noyeau. + +## 1. Sécurisation du système et authentification + +dans /etc/ `touch passwd` et `touch group` + +Voici l'exemple du cours du contenu du fichier passwd : + +`username : password : UID : GID : d e s c r i p t i o n : home_dir : shell` + +Dans notre cas on va mettre : + +`root::0:0:root user,,,:/root:/bin/sh` + +On a un utilisateur root sans mot de passe avec une description "root user" qui a comme dossier par défaut le repertoire root et le shell localisé dans /bin/sh + +Avec ca on va créer un repertoire /root et /home + +`mkdir root` et `mkdir home` + +Maintenant voici une ligne exemple pour le fichier group : + +`groupname:x:GID:username1,username2 ,...` + +Dans notre cas + +`root:x:0:` + +Maintenant que on a mis les valeurs basiques à la main on peut utiliser des commandes de busybox pour modifier et peupler ces fichiers automatiquement. + +On peut utiliser la commande passwd pour changer le mot de passe root. Il faut trouver un mot de passe assez long sinon on se fait engeuler. J'ai choisi "Super2024" + +Et si on verifier dans le fichier passwd on peut voir que ca a bien été changé. + +`root:dDs2HI7zOXCjg:0:0:root user,,,:/root:/bin/sh` + +Pour ajouter un utilisateur on peut utiliser adduser + +`adduser -h /home/moi -s /bin/sh moi` + +Dans ce cas on créée un utilisateur "moi" avec un home directory au même nom et le même shell que tout le monde. + +J'ai donné un mot de passe classique également et maintenant le fichier passwd ressemble à ca : + +``` +root:dDs2HI7zOXCjg:0:0:root user,,,:/root:/bin/sh +moi:h/F/aO4UQZcSc:1000:1000:Linux User,,,:/home/moi:/bin/sh +``` + +on ajoute le group "addgroup nogroup" + +`adduser -D -H -G nogroup -s /bin/false www` + +Permet de crééer un user www avec la config par défaut mais -H empêche la création du home directory -s /bin/false empêche le user de se logger + +Si on cat le repertoire group + +``` +moi:x:1000: +nogroup:x:1001:www +``` + +On peut aller modifier ensuite le fichier user pour set manuellement le repertoire www comme default home pour le user www + +On a maintenant ce fichier passwd : + +``` +~ # cat /etc/passwd +root:dDs2HI7zOXCjg:0:0:root user,,,:/root:/bin/sh +moi:h/F/aO4UQZcSc:1000:1000:Linux User,,,:/home/moi:/bin/sh +www:x:1001:1001:Linux User,,,:/var/www:/bin/false +``` + +Maintenant on veut activer l'authentification au démarrage alors on ajoute cette ligne au init (trouvée dans le cours) + +`::respawn:/sbin/getty 115200 ttyS0` + +à la place de + +`::respawn:-/bin/sh` + +On peut désormais essayer de reboot notre linux pour voir si ces changements sont effectifs. + +On a ce prompt : + +``` +192.168.144.100 login: root +Password: +login[46]: root login on 'ttyS0' +``` + +et ensuite on est bien connecté en root +On peut faire la même chose en essayant de se connecter en www + +``` +192.168.144.100 login: www +Password: +Login incorrect +login[45]: invalid password for 'www' on 'ttyS0' +``` + +On ne peut bien pas se connecter en tant que www + +Maintenant on peut faire en sorte que httpd soit executé par uniquement ce user. On peut aller dans /etc/init.d et edit notre Script StartHttp en remplacant la ligne + +`httpd -h /var/www` + +par la ligne + +`httpd -h /var/www -u www` + +Pour que le service se lance au nom de www et que au cas ou le service soit compromis il ne puisse rien faire d'autre + +Avant de mettre la ligne dans le script on peut tester en faisant un `killall httpd` voir que le site n'est plus up et ensuite on peut lancer la commande et voir si le site fonctionne à nouveau. + +`chown www:nogroup /var/www` + +Avec cette commande, le repertoire /www appartient à l'utilisateur www + + + + + + + + + + + + +