Quatrième projet de 42, le but est de créer une machine virtuelle avec des partitions chiffrées, une politique de mot de passe forte ainsi que de créer un script de monitorage.
Les bonus consistent à auto héberger un site web avec le CMS WordPress et ajouter un service supplémentaire, dans cet exemple, un serveur Minecraft.
- Installer VirtualBox.
- Créer une machine virtuelle avec 8Gio de stockage, 4Gio de RAM, carte réseau en mode NAT.
-
Téléchargement de l'ISO Debian stable net install et lancer l'installation.
-
Partitionner les disques pour avoir une structure proche de celle-ci :
-
Installer aucun des paquets proposés par tasksel.
-
Mettre à jour la liste des paquets disponibles.
-
- Passer en sudo :
su
.
- Passer en sudo :
-
- Mettre à jour les paquets :
apt-get update
.
- Mettre à jour les paquets :
-
-
Installer
sudo
et y ajouter un utilisateur.-
- Installation :
apt-get install sudo
.
- Installation :
-
- Ajout d'un utilisateur à sudo :
sudo usermod -a -G sudo intra_login
.
- Ajout d'un utilisateur à sudo :
-
-
Éditer le fichier sudoers et y ajouter un utilisateur grace à
sudo visudo
et y ajouter :intra_login ALL=(ALL) ALL
-
-
- Redémarrer la machine virtuelle
sudo reboot
.
- Redémarrer la machine virtuelle
-
-
Copier l'historique des commandes exécutées avec le programme
sudo
dans un fichier distinct.-
-
Éditer le fichier de configuration de
sudo
grace ànano /etc/sudoers
et y ajouter :Defaults logfile="/var/log/sudo/sudo.log" Defaults log_input,log_output
-
-
- Créer le répertoire
/var/log/sudo
:mkdir /var/log/sudo
.
- Créer le répertoire
-
- Redémarrer la machine virtuelle
sudo reboot
.
- Redémarrer la machine virtuelle
-
-
Installer un serveur
OpenSSH
et le faire écouter sur le port 4242, désactiver la connexion en root.-
- Installation :
sudo apt-get install openssh-server
.
- Installation :
-
- Édition du fichier de configuration
sudo nano /etc/ssh/sshd_config
.
- Édition du fichier de configuration
-
- Éditer
#Port 22
parPort 4242
.
- Éditer
-
- Ajouter
PermitRootLogin no
.
- Ajouter
-
-
Installer le part-feu
UFW
et n'autoriser que les connexions entrantes en 4242 (bannir toutes les autres) et vérifier qu'il soit actif au démmarage.-
- Installation :
sudo apt install ufw
.
- Installation :
-
- Activation :
sudo ufw enable
.
- Activation :
-
- Autorisation des connexions sur le port 4242 :
sudo ufw allow 4242
.
- Autorisation des connexions sur le port 4242 :
-
- Afficher les règles de part-feu :
sudo ufw status
.
- Afficher les règles de part-feu :
-
-
Modifier le hostname de la machine par
intra_login42
.-
- Modification du hostname
hostnamectl set-hostname intra_login42
.
- Modification du hostname
-
- Modification du nom de domaine local
sudo nano /etc/hosts
et éditer :
- Modification du nom de domaine local
127.0.0.1 localhost 127.0.0.1 intra_login42
-
- Redémarrer la machine virtuelle
sudo reboot
.
- Redémarrer la machine virtuelle
-
-
Créer un utilisateur qui aura pour login
intra_login
et appartiendra au groupeuser42
etsudo
.-
- Création du groupe :
sudo groupadd user42
.
- Création du groupe :
-
- Assignation d'un utilisateur à ce groupe :
sudo usermod -aG user42 intra_login42
.
- Assignation d'un utilisateur à ce groupe :
-
-
: Installation de
libpam-cracklib
afin de définir une politique de mot de passe :sudo apt-get install libpam-cracklib
. -
: Définir la politique de mot de passe en éditant le fichier
/etc/pam.d/common-password
:sudo nano /etc/pam.d/common-password
afin d'imposer 10 caractères dont une majuscule et un chiffre, sans comporter 3 caractères consécutifs identiques en modifier la lignepassword [success=1 default=ignore]
par :password requisite pam_cracklib.so retry=3 minlen=10 lcredit =-1 ucredit=-1 dcredit=-1 maxrepeat=3 usercheck=0 difok=7 enforce_for_root reject_username password [success=1 default=ignore] pam_unix.so obscure sha512
-
: Définir une politique d'expiration des mots de passe, expiration tous les 30 jours, modification possible tous les 2 jours, alerte de redéfinition de mot de passe 7 jours avant l'expiration en modifiant le fichier
sudo nano /etc/login.defs
:PASS_MAX_DAYS 30 PASS_MIN_DAYS 2 PASS_WARN_AGE 7
-
: Appliquer la politique d'expiration de mot de passe aux utilisateurs déjà créés ainsi qu'à root.
sudo chage -M 30 intra_login42 sudo chage -m 2 intra_login42 sudo chage -W 7 intra_login42 sudo chage -M 30 root sudo chage -m 2 root sudo chage -W 7 root
-
: Définir un message d'erreur en cas d'echec à l'authentification en tant que
sudo
.-
- Éditer le fichier de configuration
sudoers
:sudo nano /etc/sudoers
et y ajouter :
- Éditer le fichier de configuration
Defaults badpass_message="So Long, and Thanks for All the Fish"
-
- Redémarrer la machine virtuelle
sudo reboot
.
- Redémarrer la machine virtuelle
-
-
: Définir les
paths
utilisables parsudo
.-
- Éditer le fichier de configuration
sudoers
:sudo nano /etc/sudoers
et y modifier :
- Éditer le fichier de configuration
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
-
- Redémarrer la machine virtuelle
sudo reboot
.
- Redémarrer la machine virtuelle
-
-
: Installation de
net-tools
:sudo apt-get install net-tools
. -
: Copier le script
monitoring.sh
(voir le dépôt) dans/usr/local/bin/monitoring.sh
grace àsudo nano
.-
- Rendre le script exécutable :
sudo chmod +x /usr/local/bin/monitoring.sh
.
- Rendre le script exécutable :
-
- Créer une tâche cron afin d'exécuter tous les 10 minutes le script de monitorage
sudo crontab -u root -e
et y ajouter :
- Créer une tâche cron afin d'exécuter tous les 10 minutes le script de monitorage
*/10 * * * * /usr/local/bin/monitoring.sh
-
-
Installation de
lighttpd
,mariadb-server
,php-fpm
.-
- Installation :
sudo apt-get install lighttpd mariadb-server php-fpm php-cgi php-mysql
.
- Installation :
-
- Ouvrir le port 80 et 443 :
sudo ufw allow 80
,sudo ufw allow 443
.
- Ouvrir le port 80 et 443 :
-
-
Ajouter à
lighttpd
le support des fichiers PHP :-
- Éditer la configuration du fichier
/etc/lighttpd/conf-available/15-fastcgi-php.conf
par celui disponible dans ce dépôt.
- Éditer la configuration du fichier
-
- Activer le mode
fastcgi
etfastcgi-php
delighttpd
:lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php
- Activer le mode
-
- Recharger toutes les configuration de
lighttpd
:service lighttpd force-reload
.
- Recharger toutes les configuration de
-
- Créer un fichier de test PHP et y ajouter ceci :
nano /var/www/html/index.php
<?php echo "Hello World!";
-
- Ouvrir avec un navigateur web l'adresse
http://localhost:80/index.php
, le messageHello World!
devrait s'afficher.
- Ouvrir avec un navigateur web l'adresse
-
-
Configurer le service
MariaDB
:-
- Définir le mot de passe du service de base de données et les différentes options de sécurités :
sudo mysql_secure_installation
.
- Définir le mot de passe du service de base de données et les différentes options de sécurités :
-
- Se connecter au service
MariaDB
:sudo mysql -u root -p
.
- Se connecter au service
-
- Créer une table
wordpress
:CREATE DATABASE wordpress;
- Créer une table
-
- Créer un utilisateur pour la base de données
wordpress
:GRANT ALL PRIVILEGES ON wordpress.* to wordpress@localhost identified by 'password';
(remplacerpassword
par un mot de passe).
- Créer un utilisateur pour la base de données
-
- Recharger les droits de la base de données :
FLUSH PRIVILEGES;
.
- Recharger les droits de la base de données :
-
- Pour quitter l'invité de commandes de la base de données :
QUIT;
.
- Pour quitter l'invité de commandes de la base de données :
-
-
Mettre en place un site WordPress :
-
- Changer les droits du répertoire web :
sudo chmod 777 /var/www/html/
puis se rendre dedanscd /var/www/html
.
- Changer les droits du répertoire web :
-
- Installer
wget
:sudo apt-get install wget
.
- Installer
-
- Supprimer les données temporaires de
apt
afin de libérer de la place :sudo apt-get clean
.
- Supprimer les données temporaires de
-
- Supprimer le fichier
/var/www/html/index.php
:sudo rm /var/www/html/index.php
.
- Supprimer le fichier
-
- Télécharger la dernière version de WordPress :
wget https://wordpress.org/latest.zip
.
- Télécharger la dernière version de WordPress :
-
- Décompresser les fichiers d'installation de WordPress :
unzip ./latest.zip
.
- Décompresser les fichiers d'installation de WordPress :
-
- Copier les fichiers d'installation à la racine du répertoire serveur web :
cp -r ./wordpress/* .
.
- Copier les fichiers d'installation à la racine du répertoire serveur web :
-
- Nétoyer le répertoire serveur web en supprimant les dossiers et fichiers inutiles :
rm ./latest.zip
etrm -rf wordpress
.
- Nétoyer le répertoire serveur web en supprimant les dossiers et fichiers inutiles :
-
- Ouvrir avec un navigateur web l'adresse
http://localhost:80/
, et configurer les informations de connexion à la base de données comme configurées précédemment.
- Ouvrir avec un navigateur web l'adresse
-
- Suivre les étapes d'intallations / configuration de
WordPress
.
- Suivre les étapes d'intallations / configuration de
-
-
: Installer la version 17 de JDE sans interface graphique :
sudo apt install openjdk-17-jre-headless
. -
: Télécharger l'exécutable Minecraft server et le démarrer.
-
- Créer un répertoire
minecraft
, dans le répertoireopt
:mkdir /opt/minecraft
.
- Créer un répertoire
-
- Changer les droits du répertoire
minecraft
et changer le répertoire de travail par ce dernier :chmod 777 /opt/minecraft
etcd /opt/minecraft/
.
- Changer les droits du répertoire
-
- Télécharger l'archive
.jar
du serveur Minecraft dans le répertoire de travail :wget https://launcher.mojang.com/v1/objects/3cf24a8694aca6267883b17d934efacc5e44440d/server.jar
- Télécharger l'archive
-
- Lancer une première fois le serveur Minecraft afin de créer les fichiers de configuration :
java -jar server.jar nogui
- Lancer une première fois le serveur Minecraft afin de créer les fichiers de configuration :
-
- Accepter les conditions générales d'utilisation :
nano eula.txt
et remplacerfalse
partrue
.
- Accepter les conditions générales d'utilisation :
-
- Relancer le serveur Minecraft :
java -Xmx1024M -Xms1024M -jar server.jar nogui
.
- Relancer le serveur Minecraft :
-
- Ouvrir le port 25565 :
sudo ufw allow 25565
.
- Ouvrir le port 25565 :
-
-
: Ajout d'un service Minecraft avec lancement automatique au démarrage.
-
- Créer un utilisateur nommé
minecraft
:sudo useradd minecraft
.
- Créer un utilisateur nommé
-
- Changer le propriétaire des répertoires
logs
etworld
:sudo chown minecraft:minecraft /opt/minecraft/logs
etsudo chown minecraft:minecraft /opt/minecraft/world
.
- Changer le propriétaire des répertoires
-
- Changer les droits des répertoires
logs
etworld
:sudo chmod -R 777 /opt/minecraft/logs
etsudo chmod -R 777 /opt/minecraft/world
.
- Changer les droits des répertoires
-
- Créer un script de démarrage en ajoutant le fichier
minecraft.service
disponible dans le dépôt à l'adresse/etc/systemd/system/minecraft.service
.
- Créer un script de démarrage en ajoutant le fichier
-
- Changer les droits du script de démarrage :
sudo chmod 644 /etc/systemd/system/minecraft.service
.
- Changer les droits du script de démarrage :
-
- Activer le script de démarrage :
sudo systemctl enable minecraft
.
- Activer le script de démarrage :
-
-
: Installation de
htop
:apt-get intall htop
. -
: Installation de
ponysay
et afficher un poney en message de login.-
- Suivre la procédure sur le dépôt distant du projet
ponysay
.
- Suivre la procédure sur le dépôt distant du projet
-
- Changer le type de police du
TTY
et séléctionnerGreek
etTerminus
avec une dimenssion de8x14
:sudo dpkg-reconfigure console-setup
.
- Changer le type de police du
-
- Ajouter le fichier
/etc/profile
pour lancer le programme d'affichage d'un poney après l'authentification par :ponysay -b linux-vt "Hello $USER, eat apples and drink water !"
.
- Ajouter le fichier
-
- Supprimer le message d'avertissement de Debian après l'authentification :
sudo nano /etc/motd
.
- Supprimer le message d'avertissement de Debian après l'authentification :
-
Capture d'écran du script monitoring.sh . |
---|
Capture d'écran du site web WordPress |
---|
Capture d'écran du serveur Minecraft |
---|
Correcteur 1 | |
Correcteur 2 | |
Correcteur 3 |