Épreuve synthèse – A2-2022

23 novembre 2022

Déployer un serveur multi-services

V1.0-2022.11.23



ATTENTION À VOS MOTS DE PASSE, VOTRE SERVEUR EST SUR LE RÉSEAU INTERNET.
NE PAS UTILISER ‘PASSWORD‘ COMME MOT DE PASSE, POUR AUCUN SERVICE

Pondération

Projet: 50%
Journal de bord: 10%


Remise

Vendredi, le 16 décembre 2022, 16h00

Voir au bas du document pour les directives de remise.

NOTE: Il faut m’envoyer (via Teams) les URL des deux sites avant le 30 novembre.
Par exemple, http://es.matricule.x.y, https://jb.matricule.x.y


1 – Énoncé

Il faut déployer les fonctions et systèmes suivants:

  1. Un serveur Linux en nuage (cloud.google.com) avec un minimum de 4 Go de RAM,
  2. Une pile AMP,
  3. WordPress (latest),
    • 2 sites virtuels
      • Attention, les deux wordpress doivent-être définis en site virtuel,
    • un thème par site,
    • deux extensions WordPress, au choix,
    • un certificat SSL pour le site du journal de bord,
  4. Un domaine noip et/ou dynu.com par site: es-matricule.x.y et jb-matricule.x.y ,
  5. Zabbix (un bon défi d’installation, vaut 6 points) – documenter les problèmes rencontrés,
  6. NodeRed (Astuce pour installation facile: snap install node-red). Ouvrir le port 1880 sur le pare feu,
  7. Mattermost
  8. NextCloud,
    • Attention, pour NextCloud, ne pas installer dans le répertoire du site principale ‘.’ mais bien dans un sous répertoire. Comme par exemple, ‘nextcloud’,
  9. Un service de serveur FTP, en mode ‘anonyme’ avec accès à un fichier de citations du jour,
  10. Une paire de Clés RSA pour la connexion ssh,
  11. Un journal de bord (utilisant WordPress), sur le site jb-matricule.x.y (Attention: Contenu protégé par un mot de passe)
  12. Pour 5 points bonis, installer Lynis et implémenter 5 recommandations (à documenter dans le journal).

Un exemple du projet est disponible ici:
Note: certains modules ne sont pas installés dans cet exemple

NOTE: pour tester zabbix: Admin:zabbix


1.1 – Directives supplémentaires

Dans un nouveau projet cloud.google nommé projet42021e, il faut créer une VM Ubuntu 20.04; 15GO disque, au moins 4 Go de RAM (Zabbix est très gourmand en ressources), nommé vm-votreMatricule-42021e et mettre en place un site web WordPress proposant un menu offrant les options suivantes:


  1. Il faut générer une paire de clés RSA pour le projet de session.
    • Associer la clé publique à la VM.
    • Tester la clé à partir d’une session ‘ssh’.
    • Note: Il faudra m’envoyer la clé privée pour la correction du projet.
  2. Le site WordPress doit proposer un thème autre que le thème installé par défaut.
    • Choisissez un thème qui vous représente.
  3. Il faut installer au moins deux extensions (à votre choix) ‘wordpress’.
  4. Il faut associer l’adresse IP externe de votre VM du projet à un nom de domaine.

1.2 – Les applications à installer, autre que WordPress

C’est à vous de faire les recherches nécessaires pour les étapes d’installation de Zabbix, Mattermost, NextCloud et NodeRed sur le serveur de votre projet.

Il faut documenter votre démarche dans le journal de bord.


2 – Le journal de bord (10%)

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: commandes, recherches, difficultés, solutions, …


3 – Lynis – Étape optionnelle pour 5 points

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 :


Instructions pour l’installation de Lynis


3.1 – Analyser les failles du système

$ sudo lynis audit system

3.2 – Extrait d’une analyse

[+] 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-21e-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 ]

3.3 – Implémenter 5 recommandations pour augmenter le ‘Hardening index’

Lynis security scan details:
  Hardening index : 70 [##############      ]
  Tests performed : 255
  Plugins enabled : 0

3.4 – Extrait de la liste des recommandations

* 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/

Si vous décidez de relever ce défi sur votre serveur de l’épreuve synthèse il faut alors:


4 – Règles du pare feu

Par défaut, l’accès à des ports autres que 22, 80 et 443 est bloqué.

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:


5 – Directives de remise

  1. Renseigner un fichier texte (matricule.txt) avec les informations suivantes:
    • L’URL de votre projet et du journal. Par exemple, http://es.matricule.x.y
    • Les accès (user:psw) aux services;
      • mysql (root)
      • compte d’administration de wordpress (projet et journal)
      • Zabbix
      • NodeRED
      • ftp
      • NextCloud
      • MatterMost
    • la commande ssh d’accès au serveur. Par exemple;
      • ssh votreCompteGoogle@nomDomaineDuProjet(ou adresse IP)
    • Le mot de passe pour la page de contenu du journal de bord (attention – pas un mot de passe facile à deviner!)
  2. Le fichier de la clé privée (avec votre login ‘google‘ pour que je puisse faire: ssh -i votreClé votreLogin@votreNomDeDomaine). ATTENTION: Ne pas envoyer le contenu du fichier (copier/coller), mais bien le fichier, sinon la clé sera inutilisable.

Envoyer le fichier matricule.txt ainsi que votre clé privée (dans un fichier matricule.zip) à aboudrea@cstj.qc.ca avec comme entête: Remise du projet 21E-VotreMatricule.


6 – Voici les liens vers vos projets:

NOTE: Il faut m’envoyer (via Teams) les deux URL de votre projet avant le 30 novembre.

MatriculeNomProjet
1234567Alain Boudreaulthttp://projet-42021e.hopto.org
https://jb-42021e.hopto.org
1135623Olivier Moreauhttp://es-1135623.ddns.net
https://jb-1135623.ddnsfree.com
pouchie47798
1369092Gabriel Rhéaumehttp://es-1369092.ddns.net/
https://jb-1369092.kozow.com/
passwordSUPERcompliqué
9246343Patrick Gingrashttp://es9246343.freeddns.org
https://jb9246343.freeddns.org
9m**CotA3ypWMuYcF1MRd5S9o2e
Bp2mrrvlhk1U40^@ee9^0F&
1573062Jérémie Mailléhttp://es1573062.freeddns.org
https://jb1573062.freeddns.org
Pierre27!!
1624506Hugo Claessenshttp://es-1624506.freeddns.org
https://jb-1624506.freeddns.org
Meilleur15243
1308617Danick Méthothttp://es-1308617.freeddns.org
https://jb-1308617.freeddns.org
(attention – pas un mot de passe facile à deviner!)
1765891Davio Robitaillehttp://es-1765891.ddnsfree.com
http://jb-1765891.ddnsfree.com
je1reve2de3soleil4
6173424Miriame Laure Dibago Ndjapahttp://es-6173424.ddns.net
https://jb-6173424.ddnsfree.com
passw0rd!23
8961241David Duchesnehttp://es-8961241.freeddns.org/
http://jb-8961241.freeddns.org/
alainprof ?? 😉
0471351Samuel Tremblayhttp://es-0471351.ddns.net/
https://jb-0471351.freeddns.org
0471351
1546960Nicolas Paquettehttp://es-1546960.freeddns.org
https://jb-1546960.freeddns.org
nicopacman2104
9555901Benoit Chevalierhttps://es-9555901.ddns.net
https://jb-9555901.freeddns.org
benoit-synthese-9555901
1072742Pier-Alexandre Auger-Matteauhttp://es-1072742.ddns.net/
https://jb-1072742.ddnsfree.com/
SyntheseEnvWeb02
0819696Jacqueline Lebelhttp://es-0819696.ddns.net/
https://jb-0819696.freeddns.org/
lebel42021e
0877044William Arcand-Flibottehttp://es-0877044.ddnsfree.com/
https://jb-0877044.ddnsfree.com/
SecretDefense007!
1573670Alexandre Boudreaulthttp://es-1573670.ddns.net/
https://jb-1573670.ddnsfree.com/
pasunmotdepassefacileadeviner1573670
Vanessa Sara Aubin Côtéhttps://jb9816526.mywire.org/
http://es9816526.hopto.org/
patatedynamique42
Jean-Victor Brindamourhttp://es-1725951.freeddns.org
https://jb-1725951.ddnsfree.com
journaldebord!1234$
Alessia Espositohttp://es-1760981.freeddns.org/
https://jb-1760981.freeddns.org/
aespo123
Olivier Leblanchttp://www.es-6181380.ddnsfree.com
https://www.jb-6181380.ddnsfree.com
Ee0142570
Patricia Massiehttp://es-1139073.ddns.net
https://jb-1139073.freeddns.org
pat1139073massie
Mohamed Sbaitihttp://es2226332.ddnsgeek.com
https://jb2226332.ddnsgeek.com
bd42021e%2226332
Wylliam Sénéchalhttp://es1980193.ddnsfree.com/
https://jb1980193.ddnsfree.com/
12qazwsxedc1277
Martin Ulrichhttp://es-1526461.freeddns.org
https://jb-1526461.freeddns.org
jortex (vortex)
Carolann Théorêthttp://es-1348512.ddns.net
https://jb-1348512.ddnsfree.com
Carolann0802