Paillasse/design/js/contenus-lot-9.js
2026-10-06 23:28:18 +02:00

225 lines
54 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Cours complets · lot 9 : cybersécurité (menaces et hygiène, vulnérabilités, détection et réponse, gouvernance et droit)
(function () {
var reg = function (c) {
(window.CONTENUS_PRO = window.CONTENUS_PRO || []).unshift(c.cours);
(window.CONTENUS_PLUS = window.CONTENUS_PLUS || {})[c.cours.id] = c.plus;
(window.CONTENUS_EXEMPLES = window.CONTENUS_EXEMPLES || {})[c.cours.id] = c.exemples;
(window.CONTENUS_SCHEMAS = window.CONTENUS_SCHEMAS || {})[c.cours.id] = { termes: c.termes, figs: [] };
};
reg({
cours: { id: 'menaces', match: /Hygiène numérique|Menaces|hameçonnage|rançongiciel|ingénierie sociale|42 mesures/i,
titre: 'Menaces et hygiène numérique : hameçonnage, rançongiciels et mesures essentielles', duree: '',
niveau: 'SNT · BTS SIO / CIEL · BUT R&T · Titres pro · sensibilisation des personnels',
prerequis: ['Aucun'],
competences: ['BTS SIO · Bloc 3 · Protéger les données et les usages', 'BUT R&T Cyber · Protéger', 'PIX · Protéger et sécuriser'],
intro: 'Les attaques qui touchent les établissements scolaires et les collectivités ne commencent presque jamais par une prouesse technique : un courriel piégé, un mot de passe réutilisé, un serveur jamais mis à jour. Le rançongiciel qui chiffre tout le réseau un lundi matin est l’aboutissement de plusieurs semaines d’intrusion silencieuse. Ce module décrit les menaces réelles, le déroulé d’une attaque, et les mesures d’hygiène qui en bloquent l’essentiel, telles que les recommande l’ANSSI.',
cm: [
{ t: 'Qui attaque, pourquoi', d: '', html: 'La grande majorité des attaques est <b>opportuniste et lucrative</b> : des groupes criminels balaient Internet à la recherche de failles connues et de mots de passe faibles, puis revendent l’accès ou déploient un rançongiciel. S’y ajoutent l’<b>espionnage</b> (vol de données), la <b>déstabilisation</b> (défiguration de site, déni de service) et les actes internes (vengeance, curiosité d’un élève). Pour un établissement, la question n’est pas « qui voudrait nous attaquer ? » mais « sommes-nous plus faciles que les autres ? ».' },
{ t: 'L’hameçonnage et l’ingénierie sociale', d: '', html: 'L’<b>hameçonnage</b> (phishing) imite un expéditeur de confiance pour obtenir des identifiants ou faire ouvrir une pièce jointe piégée : faux message de l’ENT, faux colis, fausse facture. Le <b>harponnage</b> (spear phishing) cible une personne précise avec des détails réalistes. La <b>fraude au président</b> fait croire à un virement urgent demandé par la direction. Signes d’alerte : urgence, demande inhabituelle, adresse ou lien qui ne correspond pas au domaine officiel, pièce jointe inattendue. La parade repose sur la technique (filtrage, DMARC, authentification multifacteur) et sur un réflexe humain : vérifier par un autre canal.' },
{ t: 'Anatomie d’une attaque par rançongiciel', d: '', html: 'Le schéma type suit plusieurs étapes. <b>Accès initial</b> : hameçonnage, accès à distance exposé (RDP, VPN non corrigé) ou identifiants volés. <b>Installation</b> d’un outil de contrôle à distance. <b>Reconnaissance</b> et <b>élévation de privilèges</b> jusqu’aux comptes d’administration, souvent via l’annuaire. <b>Déplacement latéral</b> vers les serveurs. <b>Exfiltration</b> des données, pour faire pression par la menace de publication (double extorsion). <b>Destruction des sauvegardes</b> accessibles, puis <b>chiffrement</b> simultané de tout le parc. Chaque étape est une occasion de détecter et d’arrêter l’attaque.', attention: 'On ne paie pas la rançon : rien ne garantit la restitution, cela finance les attaquants et désigne la victime comme payeuse. On isole, on alerte (hiérarchie, CERT, dépôt de plainte, CNIL en cas de violation de données) et on restaure à partir de sauvegardes saines.' },
{ t: 'Les mesures d’hygiène essentielles', d: '', html: 'Le guide d’hygiène informatique de l’ANSSI regroupe ses mesures en thèmes. Les plus efficaces au regard des attaques réelles : <b>connaître son parc</b> (inventaire à jour) ; <b>mettre à jour</b> systèmes et logiciels, en priorité ce qui est exposé sur Internet ; <b>authentification</b> : mots de passe longs et uniques, gestionnaire de mots de passe, <b>multifacteur</b> sur la messagerie, les accès distants et l’administration ; <b>moindre privilège</b> : comptes d’administration séparés et réservés à l’administration ; <b>cloisonnement</b> du réseau et filtrage ; <b>sauvegardes</b> hors ligne testées ; <b>journalisation</b> et supervision ; <b>sensibilisation</b> des utilisateurs ; et une <b>procédure de crise</b> connue de tous.' },
{ t: 'Mots de passe et multifacteur', d: '', html: 'Un mot de passe doit être <b>long</b> (au moins 12 caractères, ou une phrase de passe de plusieurs mots), <b>unique</b> par service et stocké dans un <b>gestionnaire</b> (KeePassXC, Bitwarden). La réutilisation est le vrai danger : un mot de passe fuité sur un site est testé automatiquement sur tous les autres (bourrage d’identifiants). L’<b>authentification multifacteur</b> ajoute un second élément (application d’authentification, clé physique FIDO2) : même si le mot de passe est volé, le compte reste protégé. Les recommandations de la CNIL et de l’ANSSI privilégient désormais la longueur à la complexité imposée et au renouvellement systématique.' },
{ t: 'Réagir et signaler', d: '', html: 'Face à un incident, les premiers gestes comptent : ne pas éteindre brutalement (des traces utiles sont en mémoire), <b>déconnecter du réseau</b> la machine suspecte, prévenir immédiatement le référent, noter les heures et les observations. En France, <b>cybermalveillance.gouv.fr</b> accompagne les victimes et oriente vers des prestataires ; les établissements publics disposent aussi de leur CERT académique ou ministériel. Une violation de données personnelles doit être notifiée à la <b>CNIL</b> sous 72 heures lorsqu’elle présente un risque pour les personnes.' }
],
synthese: ['Attaques surtout opportunistes : être plus difficile que les autres', 'Hameçonnage : urgence, lien douteux ; vérifier par un autre canal', 'Rançongiciel : accès initial → privilèges → déplacement → exfiltration → destruction des sauvegardes → chiffrement', 'Hygiène : inventaire, mises à jour, MFA, moindre privilège, cloisonnement, sauvegardes hors ligne, journaux', 'Mots de passe longs, uniques, gestionnaire', 'Isoler, alerter, ne pas payer ; CNIL sous 72 h en cas de violation'],
qcm: [
['Signe typique d’hameçonnage ?', ['Message attendu', 'Urgence et lien vers un domaine inhabituel', 'Signature du proviseur', 'Pièce jointe PDF'], 1, 'L’urgence empêche de réfléchir.'],
['Quelle mesure protège un compte même si le mot de passe a fuité ?', ['Changer d’écran', 'L’authentification multifacteur', 'Un antivirus', 'Un mot de passe complexe'], 1, 'Second facteur.'],
['Pourquoi les attaquants détruisent-ils les sauvegardes avant de chiffrer ?', ['Par erreur', 'Pour empêcher la restauration et forcer le paiement', 'Pour gagner de la place', 'Ils ne le font pas'], 1, 'D’où les sauvegardes hors ligne.'],
['Premier geste face à un poste suspect ?', ['L’éteindre de force', 'Le déconnecter du réseau et prévenir', 'Formater', 'Payer'], 1, 'Isoler sans détruire les traces.'],
['Délai de notification d’une violation de données à la CNIL ?', ['24 h', '72 h', '1 mois', 'Aucun'], 1, 'RGPD, article 33.'],
['Quel est le vrai danger des mots de passe ?', ['Leur longueur', 'La réutilisation entre services', 'Les chiffres', 'Les majuscules'], 1, 'Bourrage d’identifiants.']
],
td: [
{ n: 'Application', c: 'Analyser trois courriels fournis (faux ENT, faux colis, vraie convocation) et justifier pour chacun le verdict.', r: 'Vérifier l’adresse réelle de l’expéditeur, le domaine des liens au survol, les en-têtes d’authentification, le ton d’urgence et la cohérence de la demande.' },
{ n: 'Application', c: 'Classer par ordre de priorité dix mesures d’hygiène pour un lycée qui part de zéro, en justifiant.', r: 'MFA messagerie et accès distants · mises à jour des services exposés · sauvegardes hors ligne · comptes d’administration séparés · inventaire · cloisonnement · gestionnaire de mots de passe · journalisation · sensibilisation · procédure de crise.' },
{ n: 'Approfondissement', c: 'Rédiger la fiche réflexe « rançongiciel » affichée dans la salle des professeurs.', r: 'Ne pas éteindre · débrancher le câble ou couper le Wi-Fi · appeler le référent (numéro) · noter heure et message affiché · ne pas payer · ne rien supprimer.' }
],
tp: { type: 'Quiz', url: 'apercu-quiz-projection.html', desc: 'Atelier de reconnaissance d’hameçonnage et audit d’hygiène.', etapes: ['Quiz flash sur des captures de courriels', 'Vérifier ses mots de passe sur haveibeenpwned', 'Installer un gestionnaire de mots de passe', 'Activer la MFA sur un compte de test', 'Audit d’hygiène de la salle de TP'] },
plusLoin: [['ANSSI · Guide d’hygiène informatique', 'https://cyber.gouv.fr/publications/guide-dhygiene-informatique'], ['Cybermalveillance.gouv.fr', 'https://www.cybermalveillance.gouv.fr/'], ['CNIL · Notifier une violation de données', 'https://www.cnil.fr/fr/notifier-une-violation-de-donnees-personnelles'], ['PIX · Protéger et sécuriser', 'https://pix.fr/']] },
plus: { cas: { titre: '', texte: '' },
resolu: { enonce: 'Une enseignante signale avoir saisi ses identifiants sur une page « ENT » reçue par courriel. Une heure plus tard, des messages frauduleux partent de son compte vers tous les parents de sa classe.', etapes: [
['Contenir', '→ Désactivation temporaire du compte, révocation des sessions en cours, réinitialisation du mot de passe par le support, vérification des règles de transfert ajoutées dans la messagerie (souvent créées par l’attaquant).'],
['Évaluer', '→ Journaux de connexion : connexions depuis une adresse étrangère à 10 h 12 ; 214 messages envoyés ; aucun autre service accédé. Le mot de passe était aussi utilisé pour sa messagerie personnelle : elle est prévenue.'],
['Informer', '→ Message aux parents depuis l’adresse officielle de l’établissement pour signaler le courriel frauduleux ; signalement du site d’hameçonnage ; information de la hiérarchie et du DPO, qui évalue la nécessité d’une notification à la CNIL.'],
['Bloquer la campagne', '→ Blocage du domaine d’hameçonnage au niveau du résolveur DNS et du filtre de messagerie ; recherche des autres destinataires du courriel initial et vérification de leurs comptes.'],
['Prévenir', '→ Activation de l’authentification multifacteur pour tous les personnels, campagne de sensibilisation, et rappel : l’ENT ne demande jamais de saisir ses identifiants par un lien reçu par courriel.']
] },
erreurs: ['Penser « personne ne nous visera »', 'Réutiliser un mot de passe', 'Administrer avec son compte du quotidien', 'Sauvegardes toujours connectées', 'Éteindre ou formater une machine compromise avant analyse', 'Payer la rançon', 'Ne pas signaler par honte'],
memo: [['Mesure', 'Effet'], ['MFA messagerie et accès distants', 'bloque l’usage d’identifiants volés'], ['Mises à jour des services exposés', 'ferme les failles exploitées en masse'], ['Comptes d’administration séparés', 'limite l’élévation de privilèges'], ['Sauvegardes hors ligne testées', 'permet de restaurer sans payer'], ['Cloisonnement réseau', 'limite le déplacement latéral'], ['Gestionnaire de mots de passe', 'mots de passe longs et uniques'], ['Journaux centralisés', 'détecter et comprendre'], ['Sensibilisation régulière', 'réduit le succès de l’hameçonnage'], ['Fiche réflexe et contacts', 'réaction rapide'], ['cybermalveillance.gouv.fr · CNIL', 'signalement et accompagnement']],
examen: { titre: 'Sujet type · 20 points', q: ['Décrire les étapes d’une attaque par rançongiciel. (5 pts)', 'Analyser un courriel d’hameçonnage fourni. (4 pts)', 'Proposer six mesures d’hygiène prioritaires et justifier. (6 pts)', 'Rédiger les premiers gestes face à un incident. (3 pts)', 'Obligations en cas de violation de données. (2 pts)'], r: ['accès, privilèges, latéral, exfiltration, sauvegardes, chiffrement', 'expéditeur, liens, urgence', 'MFA, mises à jour…', 'isoler, alerter, noter', 'CNIL 72 h, information des personnes'] },
prof: { deroule: [['Ouverture', 'Quiz flash : vrai ou faux courriel'], ['Cours', 'Menaces et déroulé d’attaque'], ['Cours', 'Mesures d’hygiène'], ['Pratique', 'Mots de passe et MFA'], ['Étude de cas', 'Compte d’enseignant compromis'], ['Clôture', 'Fiche réflexe rédigée par la classe']], diff: 'Tous niveaux : cas concrets. Élèves avancés : analyse d’en-têtes, matrice MITRE ATT&CK.', eval: 'Analyse de courriels, fiche réflexe, sujet type.' } },
exemples: [
['Vérifier un lien', 'Courriel « Votre ENT va expirer ».', 'Survol du lien → https://ent-lycee-exemple.fr-connexion.info/login', 'Domaine réel : fr-connexion.info', 'Le domaine officiel n’apparaît qu’en début de nom ; le vrai domaine est celui qui précède l’extension finale.'],
['Lire les en-têtes', 'Courriel suspect au nom du proviseur.', 'Authentication-Results: … dmarc=fail header.from=lycee-exemple.fr', 'Échec DMARC', 'Le message prétend venir du lycée mais n’en vient pas : usurpation. Si le domaine était ressemblant (lycee-exemp1e.fr), DMARC ne protégerait pas.'],
['Tester une fuite de mot de passe', 'Sensibilisation.', 'curl -s https://api.pwnedpasswords.com/range/$(printf "Rentree2026" | sha1sum | cut -c1-5) | grep -i $(printf "Rentree2026" | sha1sum | cut -c6-40)', 'D2C7…:142', 'Ce mot de passe apparaît 142 fois dans des fuites publiques. Seuls les 5 premiers caractères du hachage sont envoyés au service.'],
['Règles de transfert suspectes', 'Compte compromis.', 'Recherche dans la messagerie : règles de la boîte de l’enseignante', 'Règle « . » : transférer tout à zz.recup@exemple.net, marquer comme lu, supprimer', 'Règle typique créée par un attaquant pour continuer à lire les messages après le changement de mot de passe : à supprimer.'],
['Services exposés', 'Audit de surface d’attaque.', 'nmap -Pn -p 3389,22,445,443 203.0.113.0/29', '203.0.113.12 3389/tcp open ms-wbt-server', 'Un bureau à distance est exposé sur Internet : principale porte d’entrée des rançongiciels. On le ferme et on passe par un VPN avec MFA.'],
['Mises à jour en attente', 'Contrôle d’un serveur.', 'apt list --upgradable 2>/dev/null | grep -i security | wc -l', '23', '23 mises à jour de sécurité non appliquées : activer unattended-upgrades pour les correctifs de sécurité.']
],
termes: ['hameçonnage', 'harponnage', 'ingénierie sociale', 'fraude au président', 'rançongiciel', 'double extorsion', 'déplacement latéral', 'élévation de privilèges', 'exfiltration', 'MFA', 'gestionnaire de mots de passe', 'bourrage d’identifiants', 'moindre privilège', 'cloisonnement', 'ANSSI', 'CNIL', 'cybermalveillance.gouv.fr', 'CERT']
});
reg({
cours: { id: 'vulns', match: /Scan et reconnaissance|nmap|Vulnérabilités|CVE|CVSS|Élévation de privilèges|CTF/i,
titre: 'Vulnérabilités : reconnaissance avec nmap, CVE, CVSS et gestion des correctifs', duree: '',
niveau: 'BTS SIO / CIEL option cyber · BUT R&T Cyber · Master cybersécurité',
prerequis: ['TCP et UDP', 'Pare-feu', 'Terminal Linux'],
competences: ['BTS SIO · Bloc 3 · Cybersécurité des services informatiques', 'BUT R&T Cyber · Surveiller et auditer', 'Master · Évaluer la sécurité d’un système'],
intro: 'On ne protège bien que ce que l’on connaît. Un administrateur doit voir son réseau comme un attaquant le voit : quelles machines répondent, quels services sont exposés, dans quelles versions, avec quelles failles publiées. Ce module présente la reconnaissance avec nmap, l’univers des vulnérabilités (CVE, CVSS, bulletins du CERT-FR), la priorisation et le déploiement des correctifs, dans un cadre légal strict.',
cm: [
{ t: 'Le cadre légal d’abord', d: '', html: 'En France, accéder ou se maintenir frauduleusement dans un système, ou en entraver le fonctionnement, est puni par les articles 323-1 et suivants du Code pénal (loi <b>Godfrain</b>). Scanner, tester ou exploiter une faille n’est licite que sur ses propres systèmes ou avec une <b>autorisation écrite</b> précisant le périmètre et la période. En TP, on travaille exclusivement sur les machines du lab. Découvrir une faille chez un tiers se signale (divulgation responsable), sans l’exploiter.' },
{ t: 'Reconnaissance avec nmap', d: '', html: '<b>nmap</b> découvre les hôtes actifs (<code>-sn</code>), les ports ouverts, les services et leurs versions (<code>-sV</code>) et parfois le système (<code>-O</code>). Le scan SYN (<code>-sS</code>, par défaut en root) envoie un SYN et interprète la réponse : SYN-ACK = <b>ouvert</b>, RST = <b>fermé</b>, rien = <b>filtré</b>. <code>-p-</code> teste les 65 535 ports TCP, <code>-sU</code> les ports UDP (lent). Les scripts NSE (<code>--script vuln</code>, <code>ssl-enum-ciphers</code>) approfondissent. On compare régulièrement le résultat à ce qui devrait être exposé.', exemple: '$ sudo nmap -sS -sV -p- --min-rate 500 10.62.40.0/24 -oA audit-serveurs\nNmap scan report for 10.62.40.20\nPORT STATE SERVICE VERSION\n22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u3\n443/tcp open ssl/http nginx 1.22.1\n5432/tcp open postgresql PostgreSQL DB 15.6' },
{ t: 'CVE, CVSS et bulletins', d: '', html: 'Chaque vulnérabilité publique reçoit un identifiant <b>CVE</b> (CVE-2024-3094, par exemple, la porte dérobée de xz). Le score <b>CVSS</b> (0 à 10) estime sa gravité selon le vecteur d’attaque (réseau ou local), la complexité, les privilèges requis, l’interaction utilisateur et l’impact. Le <b>CERT-FR</b> publie des avis et des alertes en français ; le catalogue <b>KEV</b> de la CISA liste les vulnérabilités effectivement exploitées. La priorité ne dépend pas seulement du score : une faille notée 7 exploitée activement sur un service exposé passe avant une faille notée 9 sur un service interne inaccessible.' },
{ t: 'Scanner les vulnérabilités', d: '', html: 'Des scanners comme <b>OpenVAS / Greenbone</b> comparent les versions et le comportement des services à des bases de vulnérabilités, et produisent un rapport priorisé. Pour les conteneurs et les dépendances, <b>Trivy</b> ou <b>Grype</b> analysent images et fichiers de paquets. Ces outils produisent des faux positifs (version rétroportée par Debian, par exemple) et des faux négatifs : un rapport se vérifie, il ne se transmet pas tel quel.' },
{ t: 'Gérer les correctifs', d: '', html: 'Un processus de gestion des correctifs comprend : l’<b>inventaire</b> (sans lui, on ne sait pas qui est concerné), la <b>veille</b> (abonnement aux avis CERT-FR et des éditeurs), la <b>priorisation</b> (exposition, exploitation connue, criticité du système), le <b>test</b> en préproduction, le <b>déploiement</b> planifié et la <b>vérification</b>. Sous Debian, <code>unattended-upgrades</code> applique automatiquement les correctifs de sécurité ; <code>needrestart</code> signale les services à redémarrer pour charger les bibliothèques corrigées. Quand aucun correctif n’existe, on applique des <b>mesures de contournement</b> (désactiver la fonction, filtrer l’accès).' },
{ t: 'Élévation de privilèges et CTF', d: '', html: 'Une fois un accès limité obtenu, un attaquant cherche à devenir root : binaire SUID mal choisi, règle sudo trop large, tâche cron modifiable, service tournant en root avec un fichier de configuration inscriptible, noyau non corrigé. Ces vérifications font aussi partie de l’<b>audit</b> défensif (<code>sudo -l</code>, <code>find / -perm -4000</code>, droits de /etc/cron.d). Les <b>CTF</b> (Capture The Flag), sur des plateformes comme Root-Me ou HackTheBox, entraînent légalement à ces techniques sur des machines prévues pour.' }
],
synthese: ['Tester uniquement ses systèmes ou avec autorisation écrite (loi Godfrain)', 'nmap : ouvert (SYN-ACK), fermé (RST), filtré (rien) ; -sV pour les versions', 'CVE = identifiant, CVSS = gravité, CERT-FR et KEV = exploitation réelle', 'Scanners : vérifier les faux positifs', 'Correctifs : inventaire, veille, priorisation, test, déploiement, vérification', 'Élévation de privilèges : sudo -l, SUID, cron ; CTF pour s’entraîner légalement'],
qcm: [
['Dans quel cadre peut-on scanner un réseau ?', ['Toujours', 'Sur ses systèmes ou avec autorisation écrite', 'La nuit', 'Si on ne casse rien'], 1, 'Code pénal art. 323-1.'],
['nmap indique « filtered » : cela signifie', ['port ouvert', 'aucune réponse, un pare-feu bloque probablement', 'port fermé', 'service arrêté'], 1, 'Pas de SYN-ACK ni de RST.'],
['Que représente un CVE ?', ['Un score', 'Un identifiant unique de vulnérabilité', 'Un correctif', 'Un antivirus'], 1, 'Le CVSS est le score.'],
['Quelle faille corriger en premier ?', ['CVSS 9 sur un service interne isolé', 'CVSS 7 exploitée activement sur un service exposé', 'La plus ancienne', 'Au hasard'], 1, 'Exposition et exploitation réelle.'],
['Quel outil Debian applique automatiquement les correctifs de sécurité ?', ['apt-cache', 'unattended-upgrades', 'dpkg -l', 'lynis'], 1, 'Avec needrestart.'],
['Quelle commande montre les droits sudo d’un utilisateur ?', ['sudo -l', 'id', 'whoami', 'groups'], 0, 'À vérifier en audit.']
],
td: [
{ n: 'Application', c: 'Sur le lab, découvrir les hôtes du réseau 10.99.1.0/24, lister leurs services et comparer avec la liste des services autorisés fournie.', r: 'nmap -sn 10.99.1.0/24 · nmap -sS -sV -p- hôtes · tableau écarts : service non prévu → à fermer ou justifier.' },
{ n: 'Application', c: 'Interpréter le vecteur CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.', r: 'Attaque réseau, faible complexité, sans privilège ni interaction, impact total sur confidentialité, intégrité et disponibilité : score 9,8, critique.' },
{ n: 'Approfondissement', c: 'Rédiger la procédure de gestion d’une alerte CERT-FR critique touchant le VPN de l’établissement.', r: 'Vérifier la version installée · si vulnérable : appliquer le correctif ou la mesure de contournement dans la journée · rechercher des traces de compromission antérieure (journaux) · vérifier · documenter.' }
],
tp: { type: 'Lab VM', url: 'apercu-labs.html', desc: 'Réseau de lab volontairement vulnérable.', etapes: ['Découverte des hôtes', 'Inventaire des services et versions', 'Recherche des CVE correspondantes', 'Priorisation', 'Correction et nouveau scan', 'Défi d’élévation de privilèges'] },
plusLoin: [['CERT-FR · avis et alertes', 'https://www.cert.ssi.gouv.fr/'], ['Nmap Reference Guide', 'https://nmap.org/book/man.html'], ['FIRST · CVSS', 'https://www.first.org/cvss/'], ['Root-Me', 'https://www.root-me.org/']] },
plus: { cas: { titre: '', texte: '' },
resolu: { enonce: 'Le CERT-FR publie une alerte sur une vulnérabilité critique activement exploitée dans le logiciel de VPN utilisé par l’établissement.', etapes: [
['Vérifier l’exposition', 'Inventaire : passerelle VPN version 7.0.12 ; l’avis concerne les versions antérieures à 7.0.14.\n→ L’établissement est vulnérable et le service est exposé sur Internet.'],
['Mesure immédiate', '→ En attendant la fenêtre de mise à jour : restriction de l’accès au portail VPN aux adresses connues des personnels itinérants et désactivation de la fonction vulnérable indiquée dans l’avis.'],
['Corriger', '→ Application du correctif 7.0.14 le soir même, après sauvegarde de la configuration. Vérification de la version et test de connexion.'],
['Chercher une compromission', '→ Analyse des journaux du VPN sur les 30 jours précédents à la recherche des indicateurs publiés dans l’avis (adresses, requêtes caractéristiques). Aucune trace trouvée.'],
['Documenter', '→ Fiche de suivi : date de l’alerte, délai de correction (9 heures), mesures, vérifications. Abonnement confirmé aux avis de l’éditeur.']
] },
erreurs: ['Scanner sans autorisation', 'Se fier au seul score CVSS', 'Transmettre un rapport de scanner sans vérification', 'Oublier de redémarrer les services après une mise à jour de bibliothèque', 'Pas d’inventaire', 'Aucune veille'],
memo: [['Commande', 'Usage'], ['nmap -sn réseau', 'hôtes actifs'], ['nmap -sS -sV -p- hôte', 'ports et versions'], ['nmap -sU --top-ports 50 hôte', 'principaux ports UDP'], ['nmap --script vuln hôte', 'scripts de vulnérabilités'], ['nmap -oA fichier', 'enregistrer les résultats'], ['apt list --upgradable', 'mises à jour disponibles'], ['unattended-upgrades --dry-run -d', 'tester les mises à jour automatiques'], ['needrestart -r l', 'services à redémarrer'], ['trivy image nom', 'analyser une image'], ['sudo -l · find / -perm -4000', 'audit de privilèges']],
examen: { titre: 'Sujet type · 20 points', q: ['Rappeler le cadre légal d’un test. (2 pts)', 'Interpréter une sortie nmap. (5 pts)', 'Interpréter un vecteur CVSS et prioriser trois failles. (6 pts)', 'Décrire un processus de gestion des correctifs. (4 pts)', 'Citer trois vérifications d’élévation de privilèges. (3 pts)'], r: ['autorisation écrite', 'ouvert, fermé, filtré, versions', 'exposition, exploitation', 'inventaire → vérification', 'sudo -l, SUID, cron'] },
prof: { deroule: [['Ouverture', 'Cadre légal et charte du lab'], ['Cours', 'nmap'], ['Pratique', 'Reconnaissance du lab'], ['Cours', 'CVE, CVSS, correctifs'], ['Pratique', 'Correction et nouveau scan'], ['Clôture', 'Quiz flash']], diff: 'Élèves en difficulté : scans guidés. Élèves avancés : CTF Root-Me, OpenVAS.', eval: 'Rapport d’audit, sujet type.' } },
exemples: [
['Découvrir les hôtes', 'Inventaire du lab.', 'sudo nmap -sn 10.99.1.0/24', 'Nmap scan report for 10.99.1.1\nNmap scan report for 10.99.1.20\nNmap scan report for 10.99.1.33\nNmap done: 256 IP addresses (3 hosts up)', 'Trois machines actives.'],
['Interpréter les états', 'Pare-feu en place ?', 'sudo nmap -p 22,80,3306 10.99.1.20', '22/tcp open ssh\n80/tcp closed http\n3306/tcp filtered mysql', 'SSH ouvert, rien sur 80 (RST), 3306 bloqué par un pare-feu.'],
['Version d’un service', 'Recherche de failles.', 'sudo nmap -sV -p 21 10.99.1.33', '21/tcp open ftp vsftpd 2.3.4', 'Cette version historique contient une porte dérobée célèbre : machine de lab volontairement vulnérable.'],
['Correctifs de sécurité', 'Serveur Debian.', 'apt list --upgradable 2>/dev/null | grep security | head -2', 'openssl/stable-security 3.0.14-1~deb12u2 amd64 [upgradable from: 3.0.13-1~deb12u1]\nlinux-image-amd64/stable-security 6.1.106-3 amd64', 'OpenSSL et le noyau ont des correctifs en attente ; le noyau demandera un redémarrage.'],
['Services à redémarrer', 'Après mise à jour d’OpenSSL.', 'sudo needrestart -r l -b | grep NEEDRESTART-SVC', 'NEEDRESTART-SVC: nginx.service\nNEEDRESTART-SVC: postgresql@15-main.service', 'Ces services utilisent encore l’ancienne bibliothèque en mémoire.'],
['Audit sudo', 'Élévation de privilèges.', 'sudo -l -U stagiaire', 'User stagiaire may run the following commands:\n (root) NOPASSWD: /usr/bin/vim', 'vim en root permet d’ouvrir un shell root : règle à supprimer ou à remplacer par sudoedit.']
],
termes: ['loi Godfrain', 'autorisation', 'nmap', 'scan SYN', 'open', 'closed', 'filtered', '-sV', 'NSE', 'CVE', 'CVSS', 'CERT-FR', 'KEV', 'OpenVAS', 'Trivy', 'correctif', 'unattended-upgrades', 'needrestart', 'élévation de privilèges', 'SUID', 'sudo -l', 'CTF']
});
reg({
cours: { id: 'detection', match: /IDS|Suricata|SIEM|SOC|Wazuh|forensique|Réponse à incident|Observabilité|Centralisation des journaux/i,
titre: 'Détection et réponse à incident : IDS, SIEM, analyse et retour d’expérience', duree: '',
niveau: 'BTS SIO / CIEL option cyber · BUT R&T Cyber · Master · analyste SOC',
prerequis: ['Menaces et hygiène', 'Supervision', 'Analyse de trames'],
competences: ['BUT R&T Cyber · Détecter et répondre', 'Master · Piloter la réponse à incident', 'BTS SIO · Bloc 3 · Surveiller la sécurité'],
intro: 'Aucune protection n’est parfaite : un attaquant finira par entrer. La différence se joue sur le temps qu’il met à être détecté et sur la qualité de la réponse. Ce module présente la détection réseau (IDS), la corrélation des journaux (SIEM), le travail d’un SOC, puis la méthode de réponse à incident, de l’analyse des premières traces au retour d’expérience.',
cm: [
{ t: 'Détecter sur le réseau : IDS', d: '', html: 'Un <b>IDS</b> (système de détection d’intrusion) analyse le trafic et lève des alertes quand il reconnaît une <b>signature</b> d’attaque (motif connu) ou un comportement anormal. Un <b>IPS</b> va plus loin et bloque. <b>Suricata</b>, libre, s’installe sur un port miroir ou un tap et applique des jeux de règles (ET Open) ; il produit aussi des journaux détaillés de flux, de requêtes DNS, HTTP et TLS au format JSON (eve.json), précieux pour les investigations.', exemple: 'alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"Téléchargement d’un exécutable depuis un domaine récent"; flow:established,to_server; http.uri; content:".exe"; endswith; sid:1000001; rev:1;)' },
{ t: 'Corréler : SIEM', d: '', html: 'Un <b>SIEM</b> collecte les journaux de toutes les sources (pare-feu, annuaire, serveurs, VPN, IDS, postes), les normalise et applique des <b>règles de corrélation</b> : dix échecs de connexion suivis d’une réussite depuis la même adresse ; un compte qui se connecte depuis deux pays en une heure ; un compte d’administration utilisé sur un poste élève. <b>Wazuh</b> associe un SIEM libre et des agents qui surveillent l’intégrité des fichiers, les configurations et les vulnérabilités. La qualité de la détection dépend d’abord de la qualité des journaux collectés et de l’horodatage synchronisé.' },
{ t: 'Le SOC et le tri des alertes', d: '', html: 'Un <b>SOC</b> (centre opérationnel de sécurité) surveille en continu. Le niveau 1 trie les alertes : vrai positif, faux positif, à approfondir. Le niveau 2 investigue, le niveau 3 traite les incidents complexes. Le cadre <b>MITRE ATT&CK</b> décrit les techniques des attaquants et sert à classer les alertes et à évaluer la couverture de détection. Trop de faux positifs épuisent les analystes : chaque règle doit être ajustée à l’environnement.' },
{ t: 'La réponse à incident', d: '', html: 'Le déroulé classique suit six phases. <b>Préparation</b> : contacts, procédures, outils, journaux disponibles. <b>Identification</b> : confirmer l’incident, en évaluer le périmètre. <b>Confinement</b> : isoler les machines, bloquer les comptes et les flux, sans détruire les preuves. <b>Éradication</b> : supprimer l’accès de l’attaquant (comptes, portes dérobées, failles). <b>Restauration</b> : remettre en service à partir de sources saines, sous surveillance renforcée. <b>Retour d’expérience</b> : comprendre, corriger les causes, améliorer la détection. On tient un <b>journal de bord</b> horodaté de toutes les actions.' },
{ t: 'Analyse : chronologie et traces', d: '', html: 'L’analyse reconstitue une <b>chronologie</b> à partir des journaux (authentification, commandes, connexions réseau), des fichiers (dates de modification, nouveaux binaires, tâches planifiées, clés SSH ajoutées) et, si possible, de la mémoire vive. On travaille sur des <b>copies</b> et on calcule les empreintes des éléments collectés pour préserver leur valeur probante. Sur Linux : <code>last</code> et <code>journalctl</code> pour les connexions, <code>find / -newer</code> pour les fichiers récents, <code>ss -tnp</code> et <code>ps</code> pour l’activité en cours, <code>crontab -l</code> et les unités systemd pour la persistance.' },
{ t: 'Obligations et communication', d: '', html: 'Selon la nature de l’incident : notification à la CNIL sous 72 heures en cas de violation de données personnelles présentant un risque, information des personnes concernées si le risque est élevé, dépôt de plainte, signalement au CERT compétent, et pour les entités concernées par la directive <b>NIS2</b>, notification de l’incident significatif à l’ANSSI dans les délais prévus. La communication interne et externe se prépare : un message clair et factuel évite les rumeurs.' }
],
synthese: ['IDS : signatures et anomalies ; Suricata et eve.json', 'SIEM : collecter, normaliser, corréler ; Wazuh', 'SOC : tri N1, investigation N2/N3, MITRE ATT&CK', 'Réponse : préparation, identification, confinement, éradication, restauration, retour d’expérience', 'Chronologie à partir de journaux et de fichiers, sur des copies avec empreintes', 'CNIL 72 h, plainte, CERT, NIS2'],
qcm: [
['Différence entre IDS et IPS ?', ['Aucune', 'L’IPS bloque, l’IDS alerte', 'L’IDS chiffre', 'L’IPS est un antivirus'], 1, 'Prévention.'],
['Rôle d’un SIEM ?', ['Chiffrer', 'Collecter et corréler les journaux', 'Remplacer le pare-feu', 'Sauvegarder'], 1, 'Vision d’ensemble.'],
['Quelle phase vient juste après l’identification ?', ['Éradication', 'Confinement', 'Restauration', 'Retour d’expérience'], 1, 'Arrêter la propagation.'],
['Pourquoi travailler sur des copies lors de l’analyse ?', ['Plus rapide', 'Préserver les preuves', 'Obligatoire pour Linux', 'Économiser le disque'], 1, 'Valeur probante.'],
['Que décrit MITRE ATT&CK ?', ['Des pare-feux', 'Les tactiques et techniques des attaquants', 'Des lois', 'Des protocoles'], 1, 'Référentiel commun.'],
['Condition préalable à une bonne corrélation ?', ['Des écrans larges', 'Des horloges synchronisées et des journaux complets', 'Un IPS', 'Un VPN'], 1, 'NTP et collecte.']
],
td: [
{ n: 'Application', c: 'Écrire trois règles de corrélation utiles pour un établissement scolaire.', r: 'Compte d’administration utilisé hors du réseau d’administration · plus de 20 échecs puis une réussite pour un même compte en 10 min · création d’une règle de transfert externe dans une boîte de personnel.' },
{ n: 'Application', c: 'À partir d’extraits de journaux fournis, reconstituer la chronologie d’une intrusion SSH.', r: 'Échecs répétés depuis une IP · connexion réussie · ajout d’une clé dans authorized_keys · téléchargement d’un binaire · tâche cron ajoutée · connexions sortantes vers un serveur externe.' },
{ n: 'Approfondissement', c: 'Rédiger le plan de réponse d’un serveur web compromis, phase par phase.', r: 'Préparation (contacts, sauvegardes) · identification (périmètre) · confinement (isoler, bloquer les comptes, conserver une image) · éradication (réinstallation propre, correction de la faille) · restauration (données saines, surveillance) · retour d’expérience.' }
],
tp: { type: 'Lab VM', url: 'apercu-labs.html', desc: 'Suricata, Wazuh et un serveur ciblé.', etapes: ['Déployer Suricata sur un port miroir', 'Déclencher une alerte connue', 'Remonter les journaux dans Wazuh', 'Écrire une règle de corrélation', 'Mener l’analyse d’un serveur compromis simulé', 'Rédiger le rapport d’incident'] },
plusLoin: [['Documentation Suricata', 'https://docs.suricata.io/'], ['Documentation Wazuh', 'https://documentation.wazuh.com/'], ['MITRE ATT&CK', 'https://attack.mitre.org/'], ['ANSSI · Crise d’origine cyber, les clés d’une gestion opérationnelle et stratégique', 'https://cyber.gouv.fr/publications/crise-dorigine-cyber-les-cles-dune-gestion-operationnelle-et-strategique']] },
plus: { cas: { titre: '', texte: '' },
resolu: { enonce: 'Wazuh signale à 22 h 40 la création d’un compte utilisateur « support2 » sur le serveur web public, en dehors de toute demande.', etapes: [
['Identifier', 'journalctl --since "22:00" | grep -E "useradd|sshd.*Accepted"\n22:31:07 sshd: Accepted password for www-admin from 45.143.220.9\n22:39:52 useradd: new user: name=support2, UID=1004\n→ Connexion par mot de passe avec un compte d’administration du site, puis création d’un compte : compromission confirmée.'],
['Confiner', '→ Blocage de l’adresse au pare-feu, verrouillage des comptes www-admin et support2, retrait du serveur de la répartition de charge, copie des journaux et image du disque avant toute modification.'],
['Analyser', 'find / -xdev -newer /tmp/repere -type f 2>/dev/null | grep -v proc\n/home/support2/.ssh/authorized_keys\n/etc/cron.d/maj-sys\n→ Persistance par clé SSH et tâche cron qui télécharge un script. Le mot de passe de www-admin était faible et l’authentification par mot de passe était encore autorisée.'],
['Éradiquer et restaurer', '→ Réinstallation du serveur à partir d’une image propre, restauration du site depuis la sauvegarde de la veille (vérifiée), authentification SSH par clé uniquement, fail2ban, rotation de tous les secrets du site.'],
['Retour d’expérience', '→ Cause racine : exception « temporaire » autorisant les mots de passe, jamais retirée. Actions : revue des exceptions, règle SIEM sur les connexions SSH par mot de passe, audit des autres serveurs. Pas de données personnelles concernées : pas de notification CNIL, décision documentée.']
] },
erreurs: ['Éteindre ou réinstaller avant de collecter les traces', 'Nettoyer au lieu de réinstaller une machine compromise', 'Oublier de changer les secrets', 'Trop de règles non ajustées', 'Pas de journal de bord', 'Pas de retour d’expérience'],
memo: [['Commande / outil', 'Usage'], ['suricata -T -c /etc/suricata/suricata.yaml', 'valider la configuration'], ['jq \'select(.event_type=="alert")\' eve.json', 'filtrer les alertes'], ['last -F · lastb', 'connexions réussies et échouées'], ['journalctl --since … | grep sshd', 'connexions SSH'], ['find / -xdev -newer repère', 'fichiers modifiés récemment'], ['ss -tnp', 'connexions en cours et processus'], ['ls -la /etc/cron.* ; systemctl list-timers', 'persistance planifiée'], ['sha256sum preuve', 'empreinte des éléments collectés'], ['Wazuh · tableau de bord', 'corrélation et alertes']],
examen: { titre: 'Sujet type · 20 points', q: ['Comparer IDS, IPS et SIEM. (3 pts)', 'Écrire trois règles de corrélation. (4 pts)', 'Décrire les six phases de la réponse à incident. (6 pts)', 'Reconstituer une chronologie à partir de journaux. (5 pts)', 'Obligations légales. (2 pts)'], r: ['alerte, blocage, corrélation', 'voir TD', 'voir cours', 'étapes horodatées', 'CNIL, plainte, NIS2'] },
prof: { deroule: [['Ouverture', 'Combien de temps pour détecter une intrusion ?'], ['Cours', 'IDS et SIEM'], ['Pratique', 'Suricata et Wazuh'], ['Cours', 'Réponse à incident'], ['Exercice de crise', 'Serveur compromis'], ['Clôture', 'Retour d’expérience collectif']], diff: 'Élèves en difficulté : chronologie guidée. Élèves avancés : règles Sigma, analyse mémoire.', eval: 'Rapport d’incident, sujet type.' } },
exemples: [
['Filtrer les alertes Suricata', 'Point du matin.', 'jq -r \'select(.event_type=="alert") | [.timestamp, .src_ip, .alert.signature] | @tsv\' /var/log/suricata/eve.json | tail -2', '2026-10-01T02:14:09 10.62.20.57 ET POLICY curl User-Agent Outbound\n2026-10-01T03:40:51 10.62.40.20 ET MALWARE Possible Cobalt Strike Beacon', 'La seconde alerte, sur un serveur, est prioritaire : investigation immédiate.'],
['Connexions échouées', 'Suspicion de force brute.', 'lastb -F | head -3', 'admin ssh:notty 45.143.220.9 Thu Oct 1 22:30:58 2026\nadmin ssh:notty 45.143.220.9 Thu Oct 1 22:30:55 2026', 'Tentatives répétées sur le compte admin depuis la même adresse.'],
['Fichiers récents', 'Analyse d’un serveur.', 'find /etc /home /var/www -xdev -newermt "2026-10-01 22:00" -type f', '/etc/cron.d/maj-sys\n/home/support2/.ssh/authorized_keys\n/var/www/html/.cache.php', 'Trois fichiers créés pendant l’intrusion : persistance cron, clé SSH et porte dérobée web.'],
['Connexions actives', 'Activité en cours.', 'ss -tnp state established | grep -v :22', 'ESTAB 0 0 10.62.40.20:48822 185.220.101.4:443 users:(("kworker-upd",pid=3107,fd=3))', 'Un processus au nom trompeur communique avec l’extérieur : isoler et collecter la mémoire du processus.'],
['Empreinte d’une preuve', 'Collecte.', 'sha256sum /mnt/preuves/srv-web.img', '8f3a…c21e /mnt/preuves/srv-web.img', 'L’empreinte, consignée dans le journal de bord, prouve que l’image n’a pas été modifiée.'],
['Tester une règle Suricata', 'Nouvelle règle.', 'suricata -T -c /etc/suricata/suricata.yaml -S local.rules', 'Configuration provided was successfully loaded. Exiting.', 'La règle se charge sans erreur ; on la valide ensuite sur une capture de test.']
],
termes: ['IDS', 'IPS', 'Suricata', 'signature', 'eve.json', 'SIEM', 'corrélation', 'Wazuh', 'SOC', 'faux positif', 'MITRE ATT&CK', 'réponse à incident', 'confinement', 'éradication', 'restauration', 'retour d’expérience', 'chronologie', 'persistance', 'journal de bord', 'NIS2']
});
reg({
cours: { id: 'gouvernance', match: /Gouvernance|ISO 27001|EBIOS|PSSI|Droit|RGPD|loi Godfrain|NIS2|Gouvernance et RGPD|licences libres|Droit du numérique/i,
titre: 'Gouvernance et droit du numérique : RGPD, PSSI, ISO 27001, EBIOS RM, NIS2', duree: '',
niveau: 'BTS SIO (CEJM) · BUT R&T / Informatique · Master · RSSI et DPO',
prerequis: ['Menaces et hygiène'],
competences: ['BTS SIO · CEJM et Bloc 3 · Protéger les données personnelles', 'Master · Piloter la sécurité', 'BUT · Respecter le cadre légal'],
intro: 'La sécurité et la protection des données ne sont pas qu’une affaire de technique : elles reposent sur des obligations légales, une organisation, des responsabilités et une analyse des risques. Un technicien qui installe un outil de suivi des élèves doit savoir quelles données il a le droit de collecter, combien de temps les garder et qui doit être informé. Ce module présente le RGPD, le cadre pénal, la politique de sécurité, les normes et méthodes de gestion des risques, et les nouvelles obligations européennes.',
cm: [
{ t: 'Le RGPD : principes', d: '', html: 'Le <b>Règlement général sur la protection des données</b> (applicable depuis mai 2018) encadre tout traitement de données personnelles. Ses principes : <b>licéité</b> (une base légale : mission d’intérêt public pour un établissement, obligation légale, consentement…), <b>finalité</b> déterminée, <b>minimisation</b> (seulement les données nécessaires), <b>exactitude</b>, <b>durée de conservation</b> limitée, <b>sécurité</b> et <b>responsabilité</b> (accountability : pouvoir démontrer sa conformité). Les mineurs bénéficient d’une protection renforcée.' },
{ t: 'Droits, registre et AIPD', d: '', html: 'Les personnes disposent de droits : information, accès, rectification, effacement, limitation, opposition, portabilité. Le responsable de traitement tient un <b>registre des traitements</b>, désigne un <b>délégué à la protection des données</b> (DPO, obligatoire pour les organismes publics), encadre ses <b>sous-traitants</b> par contrat (article 28) et réalise une <b>analyse d’impact</b> (AIPD) pour les traitements à risque élevé, par exemple le suivi à grande échelle de mineurs ou l’usage d’algorithmes d’aide à la décision. Les transferts de données hors de l’Union européenne sont strictement encadrés : l’hébergement en France ou dans l’UE simplifie la conformité.' },
{ t: 'Le cadre pénal', d: '', html: 'La <b>loi Godfrain</b> (1988), intégrée aux articles 323-1 à 323-8 du Code pénal, punit l’accès ou le maintien frauduleux dans un système, l’entrave à son fonctionnement, l’introduction ou la modification frauduleuse de données, et la détention d’outils conçus pour ces infractions sans motif légitime. Le manquement à l’obligation de sécurité des données personnelles est aussi sanctionnable. Les chartes informatiques d’établissement rappellent ces règles aux utilisateurs.' },
{ t: 'PSSI et ISO 27001', d: '', html: 'La <b>politique de sécurité des systèmes d’information</b> (PSSI) fixe les objectifs, les règles et les responsabilités de l’organisation : gestion des accès, des mots de passe, des sauvegardes, des postes nomades, des incidents. La norme <b>ISO/IEC 27001</b> décrit un <b>système de management de la sécurité</b> (SMSI) fondé sur l’amélioration continue (planifier, faire, vérifier, agir) et sur l’analyse des risques ; l’annexe A et la norme ISO 27002 proposent un catalogue de mesures. La certification est un argument fort pour un hébergeur ou un éditeur de logiciels scolaires.' },
{ t: 'EBIOS Risk Manager', d: '', html: 'La méthode <b>EBIOS RM</b>, publiée par l’ANSSI, structure l’analyse des risques en ateliers : définir le <b>cadre et le socle de sécurité</b> ; identifier les <b>sources de risque</b> et leurs objectifs ; construire des <b>scénarios stratégiques</b> (par quelles parties prenantes l’attaquant passe) puis <b>opérationnels</b> (quelles techniques) ; enfin décider du <b>traitement du risque</b> : réduire, transférer, accepter, avec des mesures et un risque résiduel assumé par la direction. Elle permet de justifier les investissements de sécurité par les risques réels.' },
{ t: 'NIS2, licences et contrats', d: '', html: 'La directive européenne <b>NIS2</b>, transposée en droit français, étend fortement le nombre d’entités soumises à des obligations de cybersécurité (entités essentielles et importantes, dont de nombreuses administrations et collectivités) : mesures de gestion des risques, notification des incidents significatifs à l’ANSSI, responsabilité de la direction. Le <b>règlement sur l’IA</b> (AI Act) et le <b>règlement sur la cyber-résilience</b> complètent ce cadre.<br><br>Côté logiciels, une <b>licence</b> fixe les droits d’usage : licences libres permissives (MIT, BSD, Apache) ou à réciprocité (GPL, AGPL, qui impose de publier les modifications d’un logiciel utilisé en service en ligne). Un contrat d’hébergement ou de service précise niveaux de service, localisation des données, réversibilité et clauses de sous-traitance RGPD.' }
],
synthese: ['RGPD : licéité, finalité, minimisation, conservation limitée, sécurité, responsabilité', 'Droits des personnes, registre, DPO, contrats de sous-traitance, AIPD', 'Loi Godfrain : accès, maintien, entrave, modification frauduleux', 'PSSI et ISO 27001 : SMSI et amélioration continue', 'EBIOS RM : sources de risque, scénarios, traitement', 'NIS2, AI Act, licences libres et contrats'],
qcm: [
['Quel principe impose de ne collecter que les données nécessaires ?', ['Licéité', 'Minimisation', 'Portabilité', 'Exactitude'], 1, 'Article 5.'],
['Quand une AIPD est-elle obligatoire ?', ['Toujours', 'Pour les traitements susceptibles d’un risque élevé', 'Jamais', 'Pour les sites web'], 1, 'Par exemple suivi de mineurs à grande échelle.'],
['Qu’impose la licence AGPL ?', ['Rien', 'Publier les modifications d’un logiciel utilisé en service en ligne', 'Payer', 'Interdire l’usage commercial'], 1, 'Réciprocité étendue au réseau.'],
['Quelle méthode française d’analyse des risques ?', ['ITIL', 'EBIOS RM', 'Scrum', 'CVSS'], 1, 'Publiée par l’ANSSI.'],
['Que décrit ISO 27001 ?', ['Un pare-feu', 'Un système de management de la sécurité', 'Une loi', 'Un protocole'], 1, 'SMSI.'],
['Qui notifie un incident significatif sous NIS2 ?', ['La CNIL', 'L’entité concernée, à l’ANSSI', 'Le fournisseur', 'Personne'], 1, 'Obligation de notification.']
],
td: [
{ n: 'Application', c: 'Remplir la fiche du registre des traitements pour la fonction de suivi des élèves de Syllabus.', r: 'Finalité : suivi pédagogique · base légale : mission d’intérêt public · personnes : élèves, enseignants · données : identité, résultats, activité dans les labs · destinataires : équipe pédagogique, vie scolaire · durée : année scolaire + 1 an · hébergement : France · mesures : chiffrement, contrôle d’accès, journalisation.' },
{ n: 'Application', c: 'Identifier trois données dont la collecte serait excessive pour ce traitement et justifier.', r: 'Adresse postale des familles, données de santé, géolocalisation : non nécessaires au suivi pédagogique (minimisation).' },
{ n: 'Approfondissement', c: 'Mener un atelier EBIOS RM simplifié sur le risque « fuite des notes des élèves ».', r: 'Source : élève curieux ou groupe criminel · objectif : revente ou divulgation · scénario : compte enseignant hameçonné → accès aux exports · mesures : MFA, journalisation des exports, alertes, sensibilisation · risque résiduel accepté par la direction.' }
],
tp: { type: 'Étude de cas', url: 'apercu-legal.html', desc: 'Mise en conformité d’un nouvel outil numérique.', etapes: ['Lire les mentions légales et la politique de confidentialité', 'Remplir la fiche du registre', 'Décider si une AIPD est nécessaire', 'Vérifier le contrat de sous-traitance', 'Rédiger l’information aux familles'] },
plusLoin: [['CNIL · Guide RGPD pour les établissements d’enseignement', 'https://www.cnil.fr/fr/education'], ['ANSSI · Méthode EBIOS Risk Manager', 'https://cyber.gouv.fr/la-methode-ebios-risk-manager'], ['ANSSI · NIS2', 'https://cyber.gouv.fr/la-directive-nis-2'], ['Légifrance · Code pénal, art. 323-1', 'https://www.legifrance.gouv.fr/']] },
plus: { cas: { titre: '', texte: '' },
resolu: { enonce: 'Un enseignant souhaite utiliser en classe une application gratuite de quiz, hébergée hors de l’Union européenne, qui demande nom, prénom et adresse électronique des élèves.', etapes: [
['Qualifier le traitement', '→ Données personnelles de mineurs, finalité pédagogique, responsable de traitement : le chef d’établissement. Le DPO académique doit être consulté.'],
['Analyser l’outil', '→ Politique de confidentialité : données utilisées pour la publicité, hébergement aux États-Unis, pas de contrat de sous-traitance proposé.'],
['Conclure', '→ L’outil ne peut pas être utilisé en l’état : pas de base contractuelle, finalité publicitaire incompatible, transfert hors UE non encadré.'],
['Proposer une alternative', '→ Utilisation d’un outil référencé par l’académie ou hébergé en France, avec comptes pseudonymes et sans adresse électronique des élèves.'],
['Documenter', '→ Inscription au registre de l’outil retenu, information des familles, et note interne rappelant la procédure de validation des outils numériques.']
] },
erreurs: ['Collecter « au cas où »', 'Pas de durée de conservation', 'Utiliser un outil sans contrat de sous-traitance', 'Oublier le DPO', 'Confondre anonymisation et pseudonymisation', 'Ignorer la licence d’un logiciel réutilisé'],
memo: [['Notion', 'À retenir'], ['Données personnelles', 'toute information sur une personne identifiable'], ['Responsable de traitement', 'qui décide des finalités et moyens'], ['Sous-traitant', 'traite pour le compte du responsable, contrat art. 28'], ['Registre', 'liste des traitements'], ['AIPD', 'analyse d’impact si risque élevé'], ['Violation de données', 'notification CNIL sous 72 h si risque'], ['Loi Godfrain', 'Code pénal 323-1 et suivants'], ['PSSI', 'règles de sécurité de l’organisation'], ['ISO 27001', 'système de management de la sécurité'], ['EBIOS RM', 'analyse des risques ANSSI'], ['NIS2', 'obligations cyber étendues, notification ANSSI']],
examen: { titre: 'Sujet type · 20 points', q: ['Énoncer les principes du RGPD et les appliquer à un cas. (6 pts)', 'Remplir une fiche de registre. (4 pts)', 'Qualifier juridiquement trois situations (accès non autorisé, outil sans contrat, fuite). (4 pts)', 'Présenter EBIOS RM. (3 pts)', 'Comparer licences MIT et GPL. (3 pts)'], r: ['voir cours', 'finalité, base, données, durée', 'Godfrain, art. 28, art. 33', 'ateliers', 'permissive / réciprocité'] },
prof: { deroule: [['Ouverture', 'Quelles données l’établissement a-t-il sur vous ?'], ['Cours', 'RGPD'], ['Étude de cas', 'Outil de quiz'], ['Cours', 'PSSI, ISO 27001, EBIOS, NIS2'], ['Clôture', 'Quiz flash']], diff: 'Tous niveaux : cas concrets. Élèves avancés : atelier EBIOS complet.', eval: 'Fiche registre, sujet type.' } },
exemples: [
['Fiche registre', 'Nouveau traitement.', 'Traitement : suivi des labs · Finalité : aide pédagogique · Base : mission d’intérêt public · Durée : année + 1 an', 'Fiche complète', 'Chaque champ se justifie ; la durée évite de conserver indéfiniment l’historique des élèves.'],
['Pseudonymiser un export', 'Statistiques pour le conseil pédagogique.', 'python3 -c "import hashlib; print(hashlib.sha256(b\'sel-secret:070123456AB\').hexdigest()[:12])"', 'a3f9c1e07b42', 'L’identifiant est remplacé par une valeur dérivée ; sans le sel, il est difficile de remonter à l’élève. Ce sont encore des données personnelles (pseudonymisées), pas anonymes.'],
['Vérifier la localisation', 'Choix d’un hébergeur.', 'dig +short app.fournisseur.example ; whois 51.15.0.10 | grep -i country', '51.15.0.10\ncountry: FR', 'Serveur situé en France. On vérifie aussi contractuellement la localisation des sauvegardes et du support.'],
['Licence d’une dépendance', 'Réutilisation d’un composant.', 'grep -m1 -i license node_modules/xterm/package.json', '"license": "MIT"', 'Licence permissive : réutilisation possible en conservant la mention de copyright.'],
['Durée de conservation', 'Purge annuelle.', 'SELECT COUNT(*) FROM activites WHERE date < now() - interval \'2 years\';', '184 233', 'Ces lignes dépassent la durée prévue au registre : elles doivent être supprimées ou anonymisées.'],
['Journal des accès', 'Démontrer la conformité.', 'SELECT utilisateur, action, date FROM journal_acces WHERE action = \'export_notes\' ORDER BY date DESC LIMIT 2;', 'm.belkacemi | export_notes | 2026-09-30 16:02\nd.roche | export_notes | 2026-09-28 11:47', 'La traçabilité des exports permet de répondre à une demande de la CNIL ou d’une famille.']
],
termes: ['RGPD', 'donnée personnelle', 'responsable de traitement', 'sous-traitant', 'base légale', 'finalité', 'minimisation', 'durée de conservation', 'registre', 'DPO', 'AIPD', 'violation de données', 'CNIL', 'loi Godfrain', 'PSSI', 'ISO 27001', 'SMSI', 'EBIOS RM', 'NIS2', 'AI Act', 'licence MIT', 'GPL', 'AGPL', 'pseudonymisation']
});
})();