50 + 20 pour le journal de bord
14 décembre, 23h05
👉 Une remise avant le 6 décembre 23h05, donnera 10% de plus à la note. Par exemple, 80 -> 88, 95 -> 100%
Dans ce projet, il faudra déployer, dans le réseau Internet, deux serveurs et des applications de type AMP.
Le point de départ étant un site WordPress, sécurisé, proposant un menu vers les différentes applications.
Voici un exemple,
NOTE: L’image est un lien vers une version fonctionnelle du projet.
Il faut créer, installer et assurer la configuration des éléments suivants;
NOTE: Dans ce document, les items marqués de l’icône ‘👉’, sont facultatifs et donnent des points supplémentaires.
Créer deux VM Ubuntu 24.04:
Il faut générer une paire de clés de connexion ssh , nommées ‘votreMatricule’, pour l’utilisateur sysadmin.
Associer la clé publique aux deux VM. Il faut tester la clé à partir d’une session ‘ssh’.
NOTE: Il faudra m’envoyer la clé privée du compte sysadmin pour la correction du projet.
Sur serveur01, mettre en place un site web WordPress proposant un menu offrant les options suivantes:
✋ NOTE IMPORTANTE -> Sauf pour Node-RED, tous les accès sont de type HTTPS.
Vous pouvez utiliser noip.com ou dynu.com pour les noms de domaine.
Voici un exemple sous dyne.com
NOTE: Le champ IPv4 renseigne l’adresse IP externe de la VM serveur01.
NOTE IMPORTANTE: Il faut utiliser le nom de domaine de votre site pour faire l’installation de WordPress et non pas inscrire l’adresse IP de la VM dans le fureteur, sans quoi, WordPress risque de ne pas fonctionner correctement.
Mettre en place un partage NFS, sur serveur-nfs, en lecture seulement, du dossier /projet-session, qui sera utilisé par un hôte virtuel web de serveur01, nommé nfs.es-matricule.gleeze.com, pour son contenu Web.
C-A-D:
Un requête sur https://nfs.es-matricule.gleeze.com doit afficher un contenu stocké sur serveur-nfs.
Par exemple,
Ce contenu est stocké sur le serveur-nfs. Par contre, le site web est défini sur le serveur01.
Vous devez programmer la page d’accueil pour ce site Web.
👉 De plus, il faut renseigner une règle, dans le fichier .htaccess de ce site, pour une erreur 404.
✋ NOTE IMPORTANTE: Il ne faut pas installer apache2 sur le serveur-nfs!
😳 ATTENTION: Le point 1.4 a une pondération importante dans la grille de correction.
C’est à vous de faire les recherches nécessaires pour les étapes d’installation de Zabbix, MediaWiki, NodeRed, Lychee et Lynis sur le serveur de votre projet. Documenter votre démarche dans le journal de bord.
L’application Node-Red est utilisée pour le contrôle d’objets connectés (Internet des objets – IOT).
Pour l’installation de Node-Red, il faut utiliser la méthode avec le script conçu pour le Raspberry PI. Il fonctionne parfaitement sous Ubuntu 24.04.
Node-Red doit démarrer automatiquement avec le serveur.
Pensez à ouvrir le port de fonctionnement de Node-RED dans les règles du par feu du projet.
Il faut protéger l’accès à Node-RED avec un compte utilisateur ‘projet123‘ et un mot de passe ‘123projet‘.
✋ ATTENTION: Si Node-RED est installé par une autre méthode que celle mentionnée ici, ce module ne sera pas corrigé.
Pare feu Google Cloud – Rappel
ATTENTION: Ne pas installer avec le compte root ou avec la commande 'sudo'. Erreur: # bash <(curl -sL ...) --> User votre_utilisateur not in sudoers group. Exiting Il sera nécessaire d'ajouter votre compte utilisateur dans le groupe 'sudo' pour exécuter le script d'installation de NodeRED:
Sécuriser le site avec un certificat. C-A-D, n’y avoir accès qu’en utilisant le préfix https://.
Les directives sont disponibles sur le site de Node-RED à l’adresse suivante.
Zabbix est un outil qui permet de centraliser le monitoring d’un parc de serveur.
Les instructions pour son installation sont disponibles ici.
L’installation de Zabbix propose un bon défi. Plusieurs étapes sont requises pour mener à bien l’opération.
# Les instructions d'installation de Zabbix indique de passer au compte root avant de suivre la procédure avec la commande # su - # Il faudra avant, renseigner un mot de passe sur le compte root de serveur01: sudo passwd root # Entrer le nouveau mot de passe ... # Puis, connectez-vous au compte root avec la commande suivante: su -
Dans les étapes d’installation, la commande suivante:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
prend de nombreuses minutes. Il faut être TRÈS TRÈS patient 🙃
Si jamais la commande était interrompue avant la fin, il faudra effacer les tables dans la BD Zabbix et recommencer.
Dans le cas de l’erreur suivante:
ERROR 1419 (HY000) at line 2493: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Il faut effacer toutes les tables de la BD Zabbix et exécuter la commande suivante:
mysql -u root -p SET GLOBAL log_bin_trust_function_creators = 1; exit; # Et refaire la commandez zcat ...
L’installation de Zabbix est fonctionnelle si vous obtenez l’écran suivant dans l’application:
NOTE: Le compte/password par défaut est ‘Admin/zabbix‘.
NOTE: Si ‘ZBX’ sous Availabity n’est pas vert, il y a probablement un problème de connexion à la BD zabbix. Si c’est le cas, il faudra vérifier le contenu des fichiers suivants:
nano /etc/zabbix/web/zabbix.conf.php nano /etc/zabbix/zabbix_server.conf
Après un certain moment, Zabbix devrait présenter des graphiques d’utilisation des ressources du serveur.
Ajouter le serveur-ftp dans le domaine de surveillance de Zabbix
NOTE: Pour obtenir les points supplémentaires, il faut que le ‘LABEL’ ZBX du serveur-ftp soit en vert.
Son code source est libre de droits et il est possible de l’installer sur un serveur pour pouvoir tenir un Wiki local.
Voici le lien vers le site de MediaWiki.
Le site propose un lien vers le code source et des instructions d’installation.
NOTE: Il faudra créer un utilisateur/BD mySQL pour procéder à l’installation.
Lychee est une application, libre de droits, qui permet de monter une collection de photos.
L’application utilise ‘composer‘ et ‘npm‘ pour gérer ses dépendances php et node.js. Elle utilise aussi une base de données pour stocker les images et les collections. C’est base de données peut-être MySQL si son fichier de configuration le précise.
Voici le lien vers le dépôt Github de Lychee.
Le dépôt propose le code source et des instructions d’installation.
NOTE: Il faudra créer un utilisateur/BD mySQL avant de procéder à la migration avec ‘composer‘ .
# Obtenir le code source de Lychee git clone lé_dépôt_de_lychee # Installer les outils nécessaires à l'installation de Lychee apt install composer npm # Suivre les instructions disponibles sur le dépôt GitHub. ### En cas d'erreur suivante: --> npm "overrides": "rollup": Invalid comparator a) Trouver une solution sur le Net # Si vous ne trouvez pas de solution pour l'erreur, alors cette modification va permettre de terminer l'installation: # Supprimer la section suivante du fichier package.json : , "overrides": { "rollup": "npm:@rollup/wasm-node" } # Ce qui devrait permettre de: $ npm install added 335 packages, and audited 336 packages in 11s 63 packages are looking for funding run `npm fund` for details 1 high severity vulnerability To address all issues, run: npm audit fix $ npm audit fix # Il restera à renseigner les variables dans le fichier .env APP_URL= (L'URL défini dans le fichier .conf du site virtuiel) DB_CONNECTION=mysql DB_HOST= (L'adresse du serveur MySQL) DB_PORT= (Le port de MySQL) DB_DATABASE= DB_USERNAME= DB_PASSWORD= # Et de lancer la migration avec 'composer'
Le lien ‘Journal‘ du site principal doit pointer sur une deuxième installation de WordPress, dans un site de type ‘hote virtuel’ et sécurisé par un certificat (certbot).
Le contenu du journal bord doit-être protégé par un mot de passe (à fournir à l’enseignant lors de la remise).
Il faut tenir dans ce journal de bord toutes les étapes de réalisation de l’épreuve synthèse:
ATTENTION: Ne pas inscrire de mots de passe dans le journal de bord.
NOTE IMPORTANTE: Le journal compte pour 20% de la note finale, il doit donc être bien étoffé. Un résumé de 5 lignes ne vaudra que 1/20.
Lynis est un outil ‘open source’ d’analyse des failles de sécurité d’un serveur Linux. Le dépôt public git est disponible ici.
Il est possible d’installer cet outil de deux façons :
$ sudo lynis audit system
[+] Initializing program ------------------------------------ - Detecting OS... [ DONE ] - Checking profiles... [ DONE ] --------------------------------------------------- Program version: 3.0.6 Operating system: Linux Operating system name: Ubuntu Operating system version: 20.04 Kernel version: 5.11.0 Hardware platform: x86_64 Hostname: projet-session-420-3c3-1 --------------------------------------------------- Profiles: /etc/lynis/default.prf Log file: /var/log/lynis.log Report file: /var/log/lynis-report.dat Report version: 1.0 Plugin directory: /usr/share/lynis/plugins --------------------------------------------------- Auditor: [Not Specified] Language: en Test category: all Test group: all --------------------------------------------------- - Program update status... [ SKIPPED ] [+] System tools ------------------------------------ - Scanning available tools... - Checking system binaries... [+] Plugins (phase 1) ------------------------------------ Note: plugins have more extensive tests and may take several minutes to complete - Plugins enabled [ NONE ] [+] Boot and services ------------------------------------ - Service Manager [ systemd ] - Checking UEFI boot [ ENABLED ] - Checking Secure Boot [ DISABLED ] - Checking presence GRUB2 [ FOUND ] - Checking for password protection [ NONE ] - Check running services (systemctl) [ DONE ] Result: found 25 running services - Check enabled services at boot (systemctl) [ DONE ] Result: found 54 enabled services - Check startup files (permissions) [ OK ] - Running 'systemd-analyze security' - apache2.service: [ UNSAFE ] - apport.service: [ UNSAFE ] - atd.service: [ UNSAFE ] - chrony.service: [ EXPOSED ]
Lynis security scan details: Hardening index : 70 [############## ] Tests performed : 255 Plugins enabled : 0
* Consider hardening system services [BOOT-5264] - Details : Run '/usr/bin/systemd-analyze security SERVICE' for each service https://cisofy.com/lynis/controls/BOOT-5264/ * Default umask in /etc/login.defs could be more strict like 027 [AUTH-9328] https://cisofy.com/lynis/controls/AUTH-9328/ * Purge old/removed packages (1 found) with aptitude purge or dpkg --purge command. This will cleanup old configuration files, cron jobs and startup scripts. [PKGS-7346] https://cisofy.com/lynis/controls/PKGS-7346/ * Install Apache mod_evasive to guard webserver against DoS/brute force attempts [HTTP-6640] https://cisofy.com/lynis/controls/HTTP-6640/ * Install Apache modsecurity to guard webserver against web application attacks [HTTP-6643] https://cisofy.com/lynis/controls/HTTP-6643/ * Consider hardening SSH configuration [SSH-7408] - Details : AllowTcpForwarding (set YES to NO) https://cisofy.com/lynis/controls/SSH-7408/
Il faut installer, sur le serveur01, le service vsftpd, offrant une connexion exclusivement de type Anonymous, sans mot de passe.
Un fois connecté, via par exemple FileZilla, Anonymous devra avoir accès, pour téléchargement, un fichier ‘lisez-moi.txt’ qui contient votre nom et matricule.
Voir ici pour un retour sur les concepts.
Par défaut, l’accès à des ports autres que 22, 80 et 443 est bloqué par les règles de pare feu des projets cloud.google.
Cette contrainte bloquera l’accès, par exemple, au port de Node-RED:1880.
Il est possible d’ajouter des règles supplémentaires au niveau du projet ou d’un VM avec les TAGs.
Le projet est à livrer au plus tard le samedi, 14 décembre 2024, avant 23h05.
Renseigner un fichier texte avec les informations suivantes:
À confirmer -> Déposer le fichier dans LÉA
Section | Description | Pondération | Points |
---|---|---|---|
Les VM | 5 | ||
Respect des spécifications | 2 | ||
Clé ssh pour sysadmin | 2 | ||
Utilisation d’un DNS | 1 | ||
WordPress principal | 5 | ||
HTTPS – Chiffrement TLS | 0,5 | ||
Page à propos | 1,5 | ||
Éléments du menu | 2 | ||
Page d’explications d’accès à ftp | 1 | ||
WordPress journal | 2 | ||
HTTPS – Chiffrement TLS | 0,5 | ||
URL: https://mon-journal.votre-domaine.com | 0,5 | ||
Accès à l’accueil sans mot de passe | 1 | ||
Zabbix | 6 | ||
Fonctionnalité | 6 | ||
NFS | 6 | ||
Mise en place du service sur serveur-nfs | 1 | ||
Montage automatique sur serveur01 (fstab) | 0,5 | ||
Chiffrement tls, url: nfs.votre-domaine.com | 0,5 | ||
Gestion du 404 avec .htaccess | 1 | ||
index.html original | 1 | ||
Fonctionnalité | 2 | ||
NodeRED | 5 | ||
Non respect de la méthode d’installation | -5 | ||
Fonctionnalité, démarrage automatique du service | 3 | ||
Fenêtre de login | 1 | ||
Règle de pare feu | 1 | ||
Lychee | 6 | ||
HTTPS – Chiffrement TLS | 0,5 | ||
URL: https://photos.votre-domaine.com | 0,5 | ||
Fonctionnalité | 4 | ||
Contenu – Ajouter quelques photos | 1 | ||
FTP | 4 | ||
Accès anonyme en lecture seule | 1 | ||
Accès à ‘lisez-moi.txt’ et son contenu | 1 | ||
Fonctionnalité | 2 | ||
MediaWiki | 5 | ||
HTTPS – Chiffrement TLS | 0,5 | ||
URL: https://wiki.votre-domaine.com | 0,5 | ||
Fonctionnalité | 4 | ||
Lynis | 5 | ||
Fonctionnalité | 1 | ||
Implémentation de 5 recommandations Liste dans la remise | 4 | ||
Fichiers de remise | 1 | 1 | |
Journal | 20 | ||
Protection par mot de passe | 2 | ||
Qualité du contenu | 18 | ||
Total | /70 | /70 | |
Défi supplémentaire Node-RED | 3 | ||
Défi supplémentaire Zabbix | 4 | ||
Remise avant le 6 décembre 23h05 | +10% | ||
Grand Total | 77/70 | /70 |
Matricule | Nom | URL du projet |
ve2cuy | Solution du prof (présentement hors ligne) | mon-projet.freeddns.org |
1868687 | 🎄- Beauchamp, Antoine | es-1868687.gleeze.com |
1191869 | 🎄- Bebnowski-Lavoie, Guillaume | es-1191869.gleeze.com |
6227790 | 🎄- Buttet-Allard, Alexandre | es-6227790.gleeze.com |
6223355 | 🎄 – Cliche, Thomas | es-6223355.hopto.org |
1938852 | 🎄- Fallu, Esteban | es-1938852.gleeze.com |
2386023 | 🎄- Gauthier, Étienne | es-2386023.gleeze.com |
2393320 | 🎄- Giang, Ronn | es-2393320.hopto.org |
6226374 | 🎄- Gosselin-Beaudoin, Xavier | es-6226374.gleeze.com |
2071623 | 🎄- Grenier, Anthony | es-2071623.gleeze.com |
2375397 | 🎄- Kemp, Adam | es-2375397.hopto.org |
1712268 | 🎄- Lajeunesse, Layah | es-1712268.hopto.org |
2383950 | Lalonde, Félix | es-2383950.ddnsgeek.com |
2176750 | 🎄- Lamonde, Louis | es-2176750.gleeze.com |
6224915 | 🎄- Lamoureux, Samaël | es-6224915.gleeze.com |
1958267 | ☔️🎄 – Lopera Cuesta, Juan-Manuel | es-1958267.gleeze.com |
2156548 | 🎄- Mechmachi, Achraf | es-2156548.hopto.org |
2246747 | 🎄- Mesiti, William | es-2246747.gleeze.com |
2388879 | 🎄- Messavussu, Claude Junior | es-2388879.hopto.org |
1701738 | ☔️🎄 – Mirville, Lens Emmanuel | es-1701738.gleeze.com |
6239687 | 🎄- Pierre Patrick Tamo | es-6239687.gleeze.com |
2077933 | 🎄- Oubad, Adam | es-2077933.gleeze.com |
1533177 | 🎄- Roy, Charles-Étienne | es-1533177.gleeze.com |
6238992 | 🎄- Tizanou Ndé, James Béranger | es-6238992.gleeze.com |
2369089 | 🎄 – Vidal, Jolan | es-2369089.hopto.org |
6181512 | 🎄- Zakhour, Georges | es-6181512.gleeze.com |