Épreuve synthèse – 2023

Déployer un serveur multi-services en nuage

version 2023.11.06.01

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

(50% + 20% journal de bord)

Remise

16 décembre (Voir au bas du document pour les directives de remise)


1 – Énoncé

Vous devez, en utilisant;

  1. Un serveur Linux en nuage (cloud.google.com),
  2. Une pile AMP
  3. WordPress, un thème, deux modules
  4. Zabbix
  5. NodeRed (Astuce pour installation facile: snap install node-red). Ouvrir le port 1880 sur le pare feu.
  6. Mattermost
  7. NextCloud
  8. Un service de serveur FTP
  9. Une paire de Clés RSA
  10. Un journal de bord
  11. Un service de nom de domaine (noip ou autre)
  12. Installer Lynis et implémenter 5 recommandations.

Dans un nouveau projet cloud.google nommé projet4203c3 – NOTE: Pour ceux et celles qui utilisent le projet du Cegep il suffira de passer à la création d’une nouvelle VM.

Créer une VM Ubuntu 22.04 15GO disque nommé vm-votreMatricule-4203c3 et mettre en place un site web WordPress proposant un menu offrant les options suivantes:

-> Il faut générer une paire de clés RSA pour le projet de session. Associer la clé publique à votre VM. Tester la clé à partir d’une session ‘ssh’. Note: Il faudra m’envoyer votre clé privée pour la correction du projet.

-> 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.

-> Il faut installer au moins deux extensions ‘wordpress’.

-> Il faut associer l’adresse IP externe de votre VM du projet à un nom de domaine. Vous pouvez utiliser noip.com ou dynu.com pour les noms de domaine.


Les applications à installer (autre que WordPress) sur votre serveur Linux

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


2 – NodeRed

Pour l’instalation de NodeRed, utilisez la commande ‘snap‘. Cela simplifie considérablement le processus.

Il faut protéger l’accès à NodeRed avec un compte utilisateur ‘projet123‘ et un mot de passe ‘123projet‘.


3 – Le journal de bord (10%)

Le lien ‘Journal‘ du site principal doit pointer sur une deuxième instalation 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, …


4 – Lynis

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 :


Installer Lynis


Analyser les failles du système

$ sudo lynis audit system

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-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 ]

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

Lynis security scan details:

  Hardening index : 70 [##############      ]
  Tests performed : 255
  Plugins enabled : 0

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/


Voici un exemple de la page d’accueil:


5 – 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:


Directives de remise

Renseigner un fichier texte avec les informations suivantes:

  1. L’URL de votre projet
  2. Les accès (user:psw) aux services;
    • mysql
    • wordpress
    • Zabbix
    • Mattermost
  3. Votre clé privée
  4. la commande ssh d’accès au serveur. Par exemple;
    • ssh -i ~/.ssh/unecle unCompte@nomDomaineDuServeur

À confirmer -> Déposer le fichier dans LÉA