85% authorisation

This commit is contained in:
2024-11-18 16:57:05 +01:00
parent 367a38f623
commit 241a7f4167

138
tp5.md
View File

@@ -1,3 +1,139 @@
# Travail pratique 5
## Objectif
## 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