Visualiser les circonscriptions électorales avec OpenStreetMap. \o/
À mon taff, nous utilisons le logiciel RANCID et j'en ai jamais parlé ici. Rattrapons cela. :D
RANCID est un logiciel qui permet d'exécuter des commandes sur des équipements de réseaux informatiques (commutateurs, routeurs, etc.) en automatisant le retrait de toutes les fioritures de ces derniers (bannière de présentation, pagination, etc.).
Il permet donc un premier niveau d'automatisation : exécuter des commandes, sauvegarder la configuration dans un dépôt git, etc.
Au final, RANCID est une surcouche à expect : lancer une commande, attendre / chercher tel motif dans la sortie, lancer une commande, chercher un motif, etc.
L'utilisation de git se configure dans la conf' principale, /etc/rancid/rancid.conf, variable « RCSSYS ». Ensuite, il faut définir un (ou plusieurs) contenants : « LIST_OF_GROUPS="<NOM_GROUPE>" » dans rancid.conf + /usr/lib/rancid/bin/rancid-cvs depuis le compte utilisateur rancid pour créer l'arborescence. Le ou les dépôts seront stockés dans le homedir de l'utilisateur rancid (/var/lib/rancid sur Debian).
La base de données des équipements réseaux est le fichier router.db de chaque groupe / contenant. Format : <HOSTNAME>;<MODÈLE>;<ÉTAT>. Mettre l'état à « down » permet d'ignorer un équipement temporairement hors service afin que RANCID ne timeout pas et n'envoie pas un email d'erreur.
En parlant d'emails : RANCID en envoie à deux adresses : rancid-admin-<NOM_GROUPE> pour les erreurs et rancid-<NOM_GROUPE> pour montrer son travail. Il faut donc configurer /etc/aliases en conséquence. Nous n'avons pas trouvé le bout de configuration permettant de recevoir uniquement les emails d'erreurs donc nous avons configuré Exim (serveur d'emails sur la machine où est installé RANCID) pour jeter les emails de journalisation.
Pour prendre en charge de nouvelles marques et modèles d'équipements (Allied Telesis, H3C, Aruba, etc.), il suffit de récupérer des scripts nommés *login (authentification, désactivation de la pagination et des autres contraintes) et *rancid (enchaînement de plusieurs commandes d'affichage afin de récupérer toute la configuration et des états), de les ranger dans le dossier « bin » du homedir de l'utilisateur rancid puis de définir une correspondance entre un nom de modèle et les scripts dans /etc/rancid/rancid.types.conf. Exemple pour Alied Telesys (dans router.db, on utilisera donc le modèle « at » ;) ) :
at;script;ATrancid
at;script;ATlogin
Parfois, c'est un peu plus compliqué (mais, les concepteurs de scripts donnent les instructions d'intégration). Pour un contrôleur Wi-Fi Aruba, il s'agit d'un module Perl. Il faut le stocker dans /usr/share/perl5/rancid et remplir ainsi rancid.types.conf (on charge le modèle et le script de sauvegarde, c'est simplement RANCID armé d'un modèle) :
aruba;module;aruba
aruba;login;clogin
aruba;script;rancid -t aruba
Le fichier .cloginrc à la racine du homedir de l'utilisateur rancid permet de préciser l'identifiant et le mot de passe d'un équipement réseau (même si le mieux est d'utiliser une auth par clé SSH). Des regex minimalistes (glob) permettent d'affecter un identifiant à plusieurs équipements (exemple : add user lt* {<NOM_UTILISATEUR>} concernera tous les équipements dont le nom commence par « lt »). On peut également définir des options et des actions (pour un équipement ou plusieurs) : add method * {ssh} = se connecter en SSH à tous les équipements ; add noenable * {1} : ne pas tenter de choper des droits supplémentaires ; etc.
Si l'on ne veut pas attendre CRON pour sauvegarder les configurations, on peut lancer leur récupération à la main :
su - rancid
rancid-run
Si l'on a plusieurs groupes, on peut préciser à rancid-run le nom de celui que l'on veut sauvegarder.
Si l'on veut sauvegarder un seul équipement :
su - rancid
rancid-run -r <NOM_EQUIPEMENT>
En parlant de CRON, nous avons inhibé l'entrée proposée par défaut par le paquet Debian pour la remplacer par plusieurs qui lancent nos sauvegardes quand nous le voulons (chaque groupe a une fréquence / date de passage différente).
De même, je préconise d'effectuer un git pull avant rancid-run au cas où quelqu'un modifierait le dépôt git (pour ajouter des équipements dans router.db, par exemple ou un autre script qui sauvegarde, dans le même dépôt git, des équipements résolument inattaquables avec RANCID).
Pour exécuter un enchaînement de commandes sur un équipement (ici, un modèle HP, sinon il faut adapter le nom du script *login ;) ) :
su - rancid
cd /usr/lib/rancid/bin
./h3clogin -c '<COMMANDES_SÉPARÉES_PAR_UNE_VIRGULE>' <NOM_ÉQUIPEMENT>
Exemple : ./h3clogin -c 'sys;undo info-center loghost 192.0.2.42;quit;save fo' lt01 (désactivation de l'envoi des journaux à un serveur de journalisation configuré dans une vie antérieure).
RANCID rajoute un « quit » automatiquement à la fin de la liste des commandes. ;) Donc, dans la liste des commandes, il faut juste prévoir les « quit » pour revenir au mode non privilégié. Si tu rajoutes un « quit » excédentaire, t'auras l'erreur « Error: EOF received » et un code retour différent de 0 (pas cool dans un script).
J'ignore comment lancer une commande sur tous les équipements d'un même modèle ou sur un ensemble d'équipements (pas de regex/glob possible). J'utilise une boucle shell pour encapsuler le script *login. :D
J'ai souvent entendu parler de rancid-killers, de remplaçants à RANCID, comme oxidized, mais, au final, boarf… RANCID fait le boulot, reste simple et, vu sa base conséquente d'utilisateurs, on trouve toujours les scripts *login et *rancid qui prennent en charge un matos improbable.
Si l'on souhaite une abstraction supplémentaire comme un langage plus descriptif genre sur telle interface configure le VLAN XXXX en mode access, ajoute telle ACL ici, etc., on peut utiliser Ansible (qui dispose de modules pour Arista, Cisco, Juniper, Mellanox, FRR, etc.) ou le char d'assaut Jerikan+Ansible.
Le 22/04/2022, je me suis connecté à mon espace personnel / client (consultation de mes comptes, virements, etc.) sur le site web de la Banque Populaire (BP). C'était ma première connexion à cet espace modernisé / relooké.
Je constate deux problèmes :
ÉDIT DU 11/07/2022 : suite ici. FIN DE L'ÉDIT.
Dans la première catégorie, le cas le plus problématique est la récupération de polices de caractères / CSS auprès de Google Fonts.
Lors de la consultation de mon espace personnel sur le site web de la BP, mon adresse IP et d'autres éléments techniques permettant d'affirmer que telle adresse IP est cliente de BP (HTTP Referer, HTTP CORS Origin, etc.), à quelles dates+heures (et donc fréquence) elle consulte l'espace client BP, et quelles rubriques (relevé de compte, virements, documents) elles y consulte, sont automatiquement transmis à Google dans le cadre du chargement de ces ressources additionnelles. C'est ainsi que fonctionne le web, on ne peut pas y couper. Et croire qu'un serveur web conserve aucun journal des requêtes reçues est de la folie.
Or, l'arrêt de 2020 dit « Schrems II » de la Cour de Justice de l'Union européenne a rendu caduque le Privacy Shield, acte juridique de la Commission européenne qui disposait que le cadre législatif états-unien en matière de protection des données personnelles était en adéquation avec celui de l'UE, et qui, de ce fait, autorisait, le transfert de données personnelles de manière open-bar (automatique) entre l'UE et les USA. Dès lors, pour transférer des données personnelles aux États-Unis, il faut un consentement explicite et/ou tout un cadre interne à la société commerciale et/ou des accords avec l'autorité de contrôle du coin, et/ou…, voir Transferts de données hors UE.
Or, si je refuse le téléchargement de ressources depuis Google Fonts (avec les extensions pour navigateur web uBlock Origin ou uMatrix), l'espace client BP est inutilisable : tout le contenu utile est décalé vers la gauche au lieu d'être centré ; le même contenu est décalé vers le haut et partiellement tronqué ; l'icône « croix » qui permet de fermer les rubriques comme « Documents » ou « Prélèvements reçus » n'apparaît pas, ce qui complique la navigation (le bouton « page précédente » de tout navigateur web ne répond pas totalement au besoin à cause de protections légitimes contre le rejeu) ; la modification du motif d'un virement bancaire est impossible car les champs de saisie, leur description et les messages d'aide / d'erreurs s'empilent et empêchent la saisie.
Dès lors, l'utilisation de Google Fonts ne peut pas reposer sur la base légale du consentement explicite car les dysfonctionnements engendrés par le refus constitueraient un vice du consentement.
De toute façon, à ce jour, la BP ne demande pas un consentement explicite pour l'utilisation de Google Fonts ni pour le transfert de données personnelles hors de l'UE que cela entraîne. Or, le chargement de Google Fonts peut légalement intervenir une fois ces deux consentements exprimés.
L'utilisation de Google Fonts ne peut pas reposer sur la base légale de l'intérêt légitime car elle a des exigences de nécessité et de proportionnalité entre les intérêts du responsable du traitement et ceux de ceux qui subissent le traitement. Or, un hébergement internalisé des polices de caractères est possible à coût insignifiant, ce qui ne coche pas les cases d'une externalisation nécessaire et proportionnée.
La décision 3 O 17493/20 du 20/01/2022 de la Cour régionale de Munich appuie cette analyse. Cette décision de justice est très finement analysée ici.
Dans la première catégorie, on trouve également des frameworks de gestion de la performance (AppDynamics), des tags marketings (Tealium / tiqcdn.com), et de la gestion de la relation client / chatbot (Ibenta). Toutes récupérées depuis des sociétés commerciales ricaines.
Là encore, la BP n'informe pas du transfert de données personnelles hors de l'UE.
La base légale de l'intérêt légitime est bancale (sauf pour Ibenta, peut-être), tout comme celle du consentement explicite (mais ça dépend des implémentations). Les arguments vont arriver ci-dessous, dans l'analyse de la deuxième catégorie.
Dans la deuxième catégorie se trouvent des ressources / composants / éléments récupérés depuis des acteurs économiques européens comme KeyCDN (kxcdn.com, gestion de la performance applicative) et Kameleoon (tests A/B).
Puisque ces sociétés commerciales sont européennes, l'arrêt Schrems II n'est pas un argument recevable. En revanche, il n'existe pas d'échappatoire à la nécessité d'une base légale. Traitement prévu par la loi ? Non. Traitement nécessaire à l'exécution d'un contrat ? Non, il tourne sans ça.
Consentement explicite via le panneau de gestion des cookies ? Non, car même en cas de refus des cookies dans ce panneau, ces ressources / composants / éléments seront tout de même téléchargés par le navigateur web du client de la BP. Le refus des cookies les rend inertes / inactifs (en tout cas, on peut l'espérer), mais la récupération en elle-même transmet, sans consentement, des données personnelles à des acteurs économiques tiers (cf début de ce shaarli).
Intérêt légitime ? Pour moi, c'est irrecevable. Un client peut-il légitimement s'attendre au téléchargement d'un système de gestion de la performance (KeyCDN) alors qu'il ignore l'existence de tels produits / services, qu'il n'en comprend pas la définition (sujet extrêmement technique), et qu'il peut n'avoir que faire que son espace client soit performant à la seconde près ? Est-il proportionné d'utiliser simultanément plusieurs systèmes de gestion de la performance (KeyCDN, AppDynamics) sur un même espace client ? Un client peut-il légitimement s'attendre à la récupération d'un système de tests A/B (Kameleoon), approche essentiellement marketing, dans son espace client (qui renvoie à des notions d'intimité, de confort, à une relation individuelle entre une société commerciale et son client) ? Sait-il au moins que ça existe ? En comprend-il les tenants et aboutissements ? Ces traitements sont-ils nécessaires ? Mêmes questions pour les tag marketings de tiqcdn.
ÉDIT DU 08/05/2022 À 23 H 50 : Aeris me signale que je raconte nawak sur l'intérêt légitime. Il s'agit de celui du responsable du traitement (BP, dans le cas présent), pas de celui de l'individu dont les données sont exploitées (le client BP). Osef de savoir ce que le client pense ou est en capacité de comprendre. L'intérêt légitime est justement une base légale pour légaliser une dissonance entre ce que veut le responsable du traitement d'un côté, et l'individu de l'autre, cas qui ne peut pas se régler avec du consentement, du coup.
L'intérêt peut être celui du responsable du traitement ou d'un tiers, commercial ou sociétal, mais, comme je l'ai indiqué dans la section sur Google Fonts, il doit être en adéquation avec l'objectif affiché, nécessaire, et proportionné avec les droits et les libertés des personnes dont les données sont exploitées.
Selon Aeris, un système de gestion de la performance, de test A/B, et de tags marketings ne répond pas à ces critères : il n'y a pas de réel intérêt dans le contexte d'un espace client (j'ajoute qu'on peut même imaginer des solutions moins intrusives, comme un sondage, une prise en compte des retours spontanés auprès des conseillers, etc.), on peut internaliser de telles solutions (le coût induit n'est pas un critère suffisant pour botter en touche, d'après l'EDPB), et le flicage induit par une solution externalisée porte une atteinte (inutile, du coup) aux droits des personnes.
FIN DE L'ÉDIT DU 08/05/2022 À 23 H 50.
D'un point de vue technique, aussi, le chargement de ressources externes est une calamité.
Dépendance à des acteurs économiques hégémoniques avec lesquels la BP n'a pas contracté. Donc aucune garantie, ni de qualité de service ni de délai avant rétablissement en cas de panne (même Google a été en panne des heures), ni même de pérennité (même Google a déjà fermé des services). Or, comme je l'ai exposé ci-dessus, l'espace personnel BP est inutilisable sans Google Fonts, donc il vaudrait mieux réduire les dépendances inutiles.
Panne. Une mise à jour unilatérale et inattendue d'une bibliothèque de fonctions JavaScript (ou d'une feuille de style ou…) par le tiers peut causer une panne. Pour peu que le développement de l'espace client BP soit sous-traité, le temps de rétablissement peut se compter en jours / semaines. Ouiiii, utiliser une version précise d'une bibliothèque de fonctions permet d'éviter ce risque, mais ce n'est pas toujours possible.
Sécurité. Que se passe-t-il si le composant chargé depuis le tiers est substitué par une version malveillante ? Par le tiers lui-même (employé malveillant, erreur, etc.) ou par un attaquant de celui-ci ? Dans le cas de Google Fonts, ce risque est minime (l'équipe sécurité de Google est balèze), mais ce n'est pas le cas pour toutes les externalisations. D'où SRI, une couche de merde supplémentaire…
Lenteur. Il n'y a plus de mutualisation du cache du navigateur web entre deux sites web qui intègrent une même ressource, donc elle sera téléchargée pour chaque site. Le téléchargement de ressources / éléments web externalisés ralentit mécaniquement le chargement de l’espace client BP, même avec toutes les techniques d’optimisation du temps de chargement (comme le report du JavaScript en fin de page, etc.). En effet, le navigateur web doit effectuer des requêtes DNS supplémentaires, puis des connexions HTTP supplémentaires, etc. Or, l’établissement d’une connexion HTTP reste coûteux en temps, même en 2022. Pour rappel, cela s’explique par la poignée de main en 3 échanges de TCP, puis la poignée de main en 2 échanges minimum de TLS (chiffrement, authentification, intégrité), etc. Sans compter la perte des bénéfices du multiplexage des requêtes web introduit par HTTP/2, puisque ce multiplexage peut avoir lieu uniquement quand les ressources sont logées sur un même nom / grappe de serveurs. Le coût d’une connexion DNS ou HTTP supplémentaire dépend de la latence, donc de la qualité du réseau depuis lequel un client BP accède à son espace personnel : un accès ADSL en fin de ligne à la campagne ou un accès 3G sur une antenne surchargée ne donneront pas le même résultat qu’un accès en fibre optique.
J'ai donc envoyé deux courriers recommandés avec accusé de réception à la Banque Populaire. L'un pour le service réclamations. J'y demande le transfert de ma demande aux équipes informatiques de BP et j'y cause essentiellement technique. L'autre est adressé au délégué à la protection des données personnelles. J'y cause exclusivement de droit.
J'ai doublé le tout par deux plaintes auprès de la CNIL. Pourquoi pas une seule ? La CNIL a tendance à faire le strict minimum : dès qu'un des objets d'une plainte est satisfait (selon elle), la plainte est fermée. Sans compter qu'elles n'ont pas tout à fait le même objet. La première plainte concerne le transfert sans base légale de données personnelles aux États-Unis, l'autre de transfert de données personnelles à des acteurs économiques européens selon des bases légales discutables.
Je ne suis pas naïf, je sais que mes démarches sont vaines, mais j'aurai au moins essayé d'améliorer les choses.
Objet : observations sur le nouvel espace client
Bonjour,
Je suis client de l’agence XXXXXXXXXX de la Banque Populaire XXXXXXXXXX (BP XXXXXXXXXX).
Le 22/04/2022, je me suis connecté à mon espace personnel sur le site web de la BP depuis un ordinateur fixe (pas depuis une application mobile). Je suis arrivé sur une nouvelle version de celui-ci.
J’y ai constaté deux problèmes. Pouvez-vous, svp, transmettre le présent courrier aux équipes techniques en charge du développement du nouvel espace personnel BP (I-BP ou BPCE-IT) ?
Premier problème : externalisation.Plusieurs éléments / ressources qui composent l’espace client / personnel sont téléchargés depuis des acteurs extérieurs à la BP : police de caractères / feuille de style chez Google (Fonts), JavaScript depuis appdynamics.com, ibenta.io, et kxcdn.com. En cascade, ces éléments provoquent eux-mêmes le téléchargement de ressources depuis des acteurs externes supplémentaires.
Certes, l’ancien espace client BP contenait déjà des ressources téléchargées depuis des acteurs externes comme facil-it.com, kameleoon.com et tiqcdn.com. Ce n’était pas folichon, et, pour sûr, cela ne constitue pas une excuse valable pour ajouter de nouveaux acteurs extérieurs sur le nouvel espace client.
Ces contenus / ressources / éléments externalisés posent problèmes à plusieurs titres.
1) En application de l’arrêt « Schrems II » de la Cour de Justice de l’Union européenne, l’utilisation de Google Fonts n’est pas conforme au Règlement Général sur la Protection des Données (RGPD). En effet, lors d’une consultation de l’espace personnel BP, l’adresse IP du client (donnée personnelle) et plusieurs en-têtes techniques permettant d’affirmer que le client consulte l’espace client BP (HTTP Referer, HTTP CORS Origin, etc.), sont transférés automatiquement à Google, société commerciale états-unienne, lors du téléchargement des ressources. Cela constitue un transfert de données personnelles en dehors de l’Union européenne, à destination des États-Unis qui ne disposent pas d’un niveau de protection adéquat des données personnelles.
Ce raisonnement s’applique également aux ressources des sociétés commerciales états-uniennes AppDynamics (appdynamics.com), Tealium (tiqcdn.com), et Ibenta (ibenta.io) que vous utilisez également dans l’espace personnel BP.
Un tribunal allemand a statué en ce sens concernant Google Fonts. Voir :
- Décision originale : https ://s.42l.fr/de-gf ;
- Analyse https ://s.42l.fr/bpgf qui résume bien en quoi, en sus de l’arrêt Schrems II, l’utilisation de Google Fonts ne peut pas reposer sur la finalité de l’intérêt légitime (car un hébergement en interne est possible à coût quasi-nul) ni sur le consentement explicite (car sans Google Fonts, l’espace client BP dysfonctionne, ce qui contraint le client à accepter le traitement de données personnelles réalisé par Google, ce qui relève du vice de consentement), que vous ne recueillez de toute façon pas ;
- Un parallèle est à déduire de la décision des CNIL européennes d’une non-conformité RGPD de Google Analytics (voir https ://s.42l.fr/cnil ) et de la position de la CNIL sur le service reCAPTCHA de Google (voir https ://s.42l.fr/cnil-ca et https ://s.42l.fr/cnil-ca2) : la problématique est similaire.
2) Le chargement de ressources / éléments externes fait fuiter une partie de la vie privée de vos clients vers les acteurs économiques sus-cités (Google, AppDynamics, etc.). En effet, ces entités collectent, dans leurs journaux techniques (logs), que telle adresse IP a consulté l’espace client BP à telle date et heure. Ils collectent donc l’information que telle adresse IP est un client BP (puisque les ressources ont été téléchargées pour le compte de l’espace personnel BP). Ils peuvent également déduire, certes par un traitement additionnel, la fréquence de consultation de l’espace client BP par une adresse IP et des comportements (personne stressée par ses finances ou non ?). Pour rappel, le navigateur web communique automatiquement ces informations lors du téléchargement de ressources (adresse IP, en-têtes HTTP Referer, HTTP CORS Origin, etc.).
3) Vous dépendez d’acteurs économiques hégémoniques avec qui vous n’avez pas de contrat, donc aucune garantie, ni de qualité de service, ni de délai avant rétablissement en cas de panne (Google a déjà été en panne plusieurs heures, voir https ://s.42l.fr/pa-go )), ni même de pérennité du service (Google a déjà fermé certains de ces services populaires, voir https://killedbygoogle.com/).Or, sans Google Fonts, l’espace client BP est inutilisable :
- Tout le contenu est décalé à gauche au lieu d’être centré ;
- De même, le contenu est décalé vers le haut et le haut des pages est coupé par le menu ;
- La croix en haut à droite qui permet de fermer les rubriques comme « Documents » ou « Prélèvements reçus » n’apparaît pas, ce qui complique singulièrement la navigation (la fonction « reculer d’une page » de tout navigateur web ne répond pas entièrement au besoin, essayez vous-même, vous verrez) ;
- La modification du motif d’un virement bancaire est impossible, car la description des champs de saisie et les messages d’erreur / d’aide lors de la saisie s’empilent les uns sur les autres.
Ces problèmes n’apparaissent pas lorsque les ressources sont récupérées depuis Google Fonts.
L’ancien espace personnel restait utilisable en cas de panne de tiqcdn ou de kameleoon. Il s’agit donc d’une régression.
J’ajoute que ce type d’externalisation fait peser un risque de panne : par absence d’historisation (versioning), une mise à jour unilatérale, par le prestataire, d’une bibliothèque de fonctions JavaScript ou d’une feuille de style CSS ou de toute autre ressource externe, provoque des dysfonctionnements sur l’espace personnel BP (aussi impactant que ceux sus-mentionnés). Pour peu que le développement de l’espace personnel BP soit sous-traité, le temps de rétablissement du service se comptera en jours.
Un dernier risque est un risque de sécurité si le contenu chargé par / depuis l’espace personnel BP est substitué par un autre par le prestataire ou par un attaquant de celui-ci. Dans le cas de Google Fonts, ce risque est minime, je vous l’accorde, mais ce n’est pas le cas de tous les acteurs de ce type d’externalisation.
4) Le téléchargement de ressources / éléments web externalisés ralentissent mécaniquement le chargement de l’espace client BP, même avec toutes les techniques d’optimisation du temps de chargement (comme le report du JavaScript en fin de page, etc.). En effet, le navigateur web doit effectuer des requêtes DNS supplémentaires, puis des connexions HTTP supplémentaires, etc. Or, l’établissement d’une connexion HTTP reste coûteux en temps, même en 2022.Pour rappel, cela s’explique par la poignée de main en 3 échanges de TCP, puis la poignée de main en 2 échanges minimum de TLS (chiffrement, authentification, intégrité), etc. Sans compter la perte des bénéfices du multiplexage des requêtes web introduit par HTTP/2, puisque ce multiplexage peut avoir lieu uniquement quand les ressources sont logées sur le même nom que la page web qui les intègrent.
Le coût d’une connexion DNS ou HTTP supplémentaire dépend de la latence, donc de la qualité du réseau depuis lequel un client BP accède à son espace personnel : un accès ADSL en fin de ligne à la campagne ou un accès 3G sur une antenne surchargée ne donneront pas le même résultat qu’un accès en fibre optique.
En conclusion, vous gagnerez tout autant que vos clients à internaliser au maximum les ressources qui composent l’espace client BP pour les différents motifs exposés ci-dessus.D’autant qu’il y a aucune difficultés technique pour internaliser certaines ressources, notamment Google Fonts : hébergement de la police de caractères / de la feuille de style sur les serveurs informatiques de BP.
Vous pouvez également délester l’espace personnel / client BP des ressources externes superflues : sur un espace client, un système de tag marketing (tiqcdn) est-il vraiment justifiable ? Un framework pour la gestion de la performance (KeyCDN, AppDynamics) est-il vraiment nécessaire ? Est-il nécessaire d’en cumuler deux ? Même questionnement à propos d’un framework d’A/B testing (Kameleoon). Même interrogation pour les autres ressources.
Ma demande : pouvez-vous, svp, retirer toutes les ressources / éléments externes présents sur l’espace client BP ?
Deuxième problème : […]
Cordialement.
Objet : non-conformité RGPD nouvel espace client / personnel
Bonjour,
Je suis client de l’agence XXXXXXXXXX de la Banque Populaire XXXXXXXXXX (XXXXXXXXXX).
Le 22/04/2022, je me suis connecté à mon espace personnel sur le site web de la BP depuis un ordinateur fixe (pas depuis une application mobile). Je suis arrivé sur une nouvelle version de celui-ci.
Plusieurs éléments / ressources qui composent l’espace client / personnel sont téléchargés depuis des acteurs extérieurs à la BP : police de caractères / feuille de style depuis Google (Fonts), JavaScript depuis appdynamics.com, ibenta.io, et kxcdn.com. En cascade, ces éléments provoquent eux-mêmes le téléchargement de ressources depuis des acteurs externes supplémentaires.
En application de l’arrêt « Schrems II » de la Cour de Justice de l’Union européenne, l’utilisation de Google Fonts n’est pas conforme au Règlement Général sur la Protection des Données (RGPD).En effet, lors d’une consultation de l’espace personnel BP, l’adresse IP du client (donnée personnelle) et plusieurs en-têtes techniques permettant d’affirmer que le client consulte l’espace client BP (HTTP Referer, HTTP CORS Origin, etc.), sont communiqués automatiquement à Google, société commerciale états-unienne, lors du téléchargement des ressources. Cela constitue un transfert de données personnelles en dehors de l’Union européenne, à destination des États-Unis qui ne disposent pas d’un niveau de protection adéquat des données personnelles.
Le chargement de ressources / éléments externes fait fuiter une partie de la vie privée des clients BP vers les acteurs économiques sus-cités (Google, AppDynamics, etc.). En effet, ces entités collectent, dans leurs journaux techniques (logs), que telle adresse IP a consulté l’espace client BP à telle date et heure. Ils collectent donc l’information que telle adresse IP est un client BP (puisque les ressources ont été téléchargées pour le compte de l’espace personnel BP). Ils peuvent également déduire, certes par un traitement additionnel, la fréquence de consultation de l’espace client BP par une adresse IP et des comportements (personne stressée par ses finances ou non ?). Pour rappel, le navigateur web communique automatiquement ces informations lors du téléchargement de ressources (adresse IP, en-têtes HTTP Referer, HTTP CORS Origin, etc.).
Sans le chargement de ressources depuis Google Fonts, l’espace client BP est inutilisable :
- Tout le contenu est décalé à gauche au lieu d’être centré ;
- De même, le contenu est décalé vers le haut et le haut des pages est coupé par le menu ;
- La croix en haut à droite qui permet de fermer les rubriques comme « Documents » ou « Prélèvements reçus » n’apparaît pas, ce qui complique singulièrement la navigation (la fonction « reculer d’une page » de tout navigateur web ne répond pas entièrement au besoin, essayez vous-même, vous verrez) ;
- La modification du motif d’un virement bancaire est impossible, car la description des champs de saisie et les messages d’erreur / d’aide lors de la saisie s’empilent les uns sur les autres.
Ces problèmes n’apparaissent pas lorsque les ressources sont récupérées depuis Google Fonts.
Un tribunal allemand a statué en ce sens concernant Google Fonts. Voir :
- Décision originale : https ://s.42l.fr/de-gf ;
- Analyse https ://s.42l.fr/bpgf qui résume bien en quoi, en sus de l’arrêt Schrems II, l’utilisation de Google Fonts ne peut pas reposer sur la finalité de l’intérêt légitime (car un hébergement en interne est possible à coût quasi-nul) ni sur le consentement explicite (car sans Google Fonts, l’espace client BP dysfonctionne, ce qui contraint le client à accepter le traitement de données personnelles réalisé par Google, ce qui relève du vice de consentement), que vous ne recueillez de toute façon pas ;
- Un parallèle est à déduire de la décision des CNIL européennes d’une non-conformité RGPD de Google Analytics (voir https ://s.42l.fr/cnil ) et de la position de la CNIL sur le service reCAPTCHA de Google (voir https ://s.42l.fr/cnil-ca et https ://s.42l.fr/cnil-ca2) : la problématique est similaire.
Ce raisonnement s’applique également aux ressources des sociétés commerciales états-uniennes AppDynamics (appdynamics.com), Tealium (tiqcdn.com) et Ibenta (ibenta.io) qui sont également chargées par l’espace client BP.
Mes demandes :
- Faire retirer les ressources / éléments / composants de Google Fonts, AppDynamics, Tealium (tiqcdn.com) et Ibenta de l’espace personnel / client de BP. Motif : arrêt Schrems II de la CJUE et déclinaisons ;
- Faire retirer, de l’espace client / personnel de BP, les ressources / éléments / composants de KeyCDN et de Kameleoon. Sociétés européennes, certes, mais :
- le consentement n’est pas une finalité applicable (ces ressources seront rendues inertes par le refus des cookies mais seront tout de même chargées, faisant fuiter une partie de la vie privée des clients BP, lire ci-dessus) ;
- l’intérêt légitime n’est à mon sens pas recevable : un client peut-il légitimement s’attendre à un système de gestion de la performance (KeyCDN) alors qu’il ignore l’existence de tels produits / services et qu’il n’en comprendra pas la définition ? Est-il proportionné d’en charger plusieurs (KeyCDN, AppDynamics) sur un même espace client ? Idem pour un système de test A/B (Kameleoon) : que vient faire une approche marketing dans un espace client ? Le client BP peut-il légitimement s’y attendre ?
Cordialement.
Bonjour,
Je suis client de la Banque Populaire XXXXXXXXXX (BP). Le 22/04/2022, je me suis connecté à mon espace client / espace personnel (consultation des comptes, virements, etc.) sur le site web de celle-ci. Je suis arrivé, pour la première fois, sur un espace client modernisé / relooké (avec un tutoriel de présentation et la possibilité de revenir à l'ancienne version via un discret lien dans mon profil).
Plusieurs éléments / composants / ressources qui composent cet espace client sont téléchargés chez des acteurs économiques externes à la BP : police de caractères / CSS chez Google Fonts, JavaScript depuis AppDynamics, Tealium, Ibenta, et KeyCDN qui, eux-mêmes, par cascade, télécharge des ressources chez des acteurs extérieurs supplémentaires.
Or, en application de l'arrêt dit « Schrems II » de la Cour de Justice de l'Union européenne, l'utilisation de Google Fonts n'est pas conforme au RGPD. Lors de la consultation de mon espace personnel BP, mon adresse IP et d'autres éléments techniques qui permettent d'affirmer que telle adresse IP est cliente BP (HTTP Referer, HTTP CORS Origin, etc.) sont transmis automatiquement à la société commerciale Google. Cela constitue un transfert de données personnelles en dehors de l'UE, à destination des États-Unis, qui ne disposent pourtant pas d'un niveau de protection adéquat des données personnelles.Si je refuse le téléchargement de ressources depuis Google Fonts (avec les extensions pour navigateur web uBlock Origin ou uMatrix), l'espace client BP est inutilisable : tout le contenu utile est décalé vers la gauche au lieu d'être centré ; le même contenu est décalé vers le haut et partiellement tronqué ; l'icône « croix » qui permet de fermer les rubriques comme « Documents » ou « Prélèvements reçus » n'apparaît pas, ce qui complique la navigation (le bouton « page précédente » de tout navigateur web ne répond pas totalement au besoin à cause de protections légitimes contre le rejeu) ; la modification du motif d'un virement bancaire est impossible car les champs de saisie, leur description et les messages d'aide / d'erreurs s'empilent et empêchent la saisie.
L'utilisation de Google Fonts ne peut pas reposer sur l'intérêt légitime car un hébergement interne / internalisé est possible à coût insignifiant ni sur un consentement explicite (qui à ce jour, n'est pas demandé par la BP) car les dysfonctionnements engendrés par le refus constitueraient un vice du consentement. La décision 3 O 17493/20 du 20/01/2022 de la Cour régionale de Munich appuie cette analyse.
Ce raisonnement s'applique également à d'autres ressources / éléments / composants récupérés auprès d'autres sociétés commerciales états-uniennes lors de la navigation dans l'espace client / personnel BP : AppDynamics, Tealium (tiqcdn.com), et Ibenta.
Le 29/04/2022, j'ai signalé, par LRAR, ces infractions au DPO de la Banque Populaire XXXXXXXXXX ainsi qu'au service réclamations de celle-ci.
Cordialement.
Bonjour,
Je suis client de la Banque Populaire XXXXXXXXXX (BP). Le 22/04/2022, je me suis connecté à mon espace client / espace personnel (consultation des comptes, virements, etc.) sur le site web de celle-ci. Je suis arrivé, pour la première fois, sur un espace client modernisé / relooké (avec un tutoriel de présentation et la possibilité de revenir à l'ancienne version via un discret lien dans mon profil).
Plusieurs éléments / composants / ressources qui composent cet espace client sont téléchargés chez des acteurs économiques externes à la BP mais européens : JavaScript depuis KeyCDN (kxcdn.com) et Kameleoon.
Pour ces deux traitements, le consentement explicite n'est pas une finalité applicable, car, même en cas de refus des cookies dans le bandeau dédié, ces ressources seront tout de même téléchargées par le navigateur web. Le refus des cookies les rend inertes / inactives, mais, lors de la consultation de chaque page de mon espace personnel BP, mon adresse IP et d'autres éléments techniques permettant d'affirmer que telle adresse IP est cliente BP (HTTP Referer, HTTP CORS Origin, etc.) et à quelles dates+heures elle consulte l'espace client BP, sont quand même transmis automatiquement aux sociétés commerciales sus-citées. Certaines de ces informations techniques (HTTP Referer) permettent aux sociétés commerciales sus-citées d'enregistrer, toujours dans le journal de leurs serveurs web, quelles rubriques précises de mon espace client BP (relevé de comptes, virements, etc.) ont été consultées par telle adresse IP à telle heure.L'intérêt légitime est tout autant inapplicable à mon sens. Un client peut-il légitiment s'attendre au téléchargement d'un système de gestion de la performance (KeyCDN) alors qu'il ignore l'existence de tels produits / services, qu'il n'en comprend pas la définition (sujet extrêmement technique), et qu'il peut n'avoir que faire que son espace client soit performant à la seconde près ? Est-il proportionné d'utiliser simultanément plusieurs systèmes de gestion de la performance (KeyCDN, AppDynamics) sur un même espace client ? Un client peut-il légitimement s'attendre à la récupération d'un système de tests A/B (Kameleoon), approche essentiellement marketing, dans son espace client (qui renvoie à du confort, à de l'intimité, à une relation individuelle entre une société commerciale et son client) ? Sait-il au moins que ça existe ? En comprend-t-il les tenants et aboutissements ? Ces traitements sont-ils nécessaires ?
Le 29/04/2022, j'ai signalé, par LRAR, ces infractions au DPO de la Banque Populaire XXXXXXXXXX ainsi qu'au service réclamations de celle-ci.
Cordialement.
‒ Le dîner est arrivé ! Alors, conformément aux demandes, nous avons donc des pizzas ananas tofu anchois agneau raclette.
‒ Une de chaque ?
‒ Hé non, tout mélangé !
‒ Ooooh !
‒ Ha bah oui quand personne ne fait des concessions, ça fait forcément un résultat dégueulasse. Que ça vous serve de leçon […]
[…]
‒ En tout cas, on est tous réunis aujourd'hui autour d'une même conviction : c'est que pour s'approcher du pouvoir, il faut accepter de s'asseoir sur ses convictions.
Gros +1. C'est exactement ça. :)
TL;DR : si tu remplaces le routeur de ton réseau par un modèle différent et que tu veux que Netdisco (outil que j'ai présenté ici) continue d'y récupérer des informations (tables ARP, etc.), il faut supprimer ton ancien routeur de sa base de données puis y ajouter le nouveau. Cela se fait via les outils en ligne de commande de Netdisco.
Nous remplaçons nos routeurs par ceux d'une marque différente.
Il s'agit d'un remplacement isopérimètre : les nouveaux routeurs reprennent les adresses IP des anciens. Dans le VLAN d'administration des équipements réseaux, ils avaient les IPs .1 et .129.
Cependant, avant la migration vers les nouveaux routeurs, nous avons ajouté de la résilience dans ce VLAN d'administration avec le protocole VRRP (car c'était la cible voulue après la migration et qu'on voulait être dans le cadre d'une migration isopérimètre). Donc, les adresses .1 et .129 sont devenues des adresses IP virtuelles mutualisées entre les deux routeurs, et nous avons attribué les adresses IP .24 et .27 aux interfaces réseaux de nos routeurs. Nous verrons que cela changera rien à l'histoire, au final (mais je l'ai cru durant la phase d'analyse du problème).
J'avais prévu de re-configurer Netdisco (outil web permettant d'obtenir de la visibilité sur un réseau informatique, voir ma présentation), mais, après quelques observations (trop) rapides, je constate que les associations MAC/IP sont toujours là, etc. donc je me dis que Netdisco est magique et je passe à autre chose.
Quatre mois après la mise en production des nouveaux routeurs, nous constatons que Netdisco est incapable de trouver l'adresse IP d'un nouvel équipement à partir de son adresse MAC. De même, les associations MAC/IP de toutes nos machines ont été actualisées pour la dernière fois lors de la mise en prod' des nouveaux routeurs. Ha, il y avait bel et bien une manip' à effectuer côté Netdisco pour qu'il prenne en compte nos nouveaux routeurs. :D
J'active SNMP sur les nouveaux routeurs en configurant la même communauté que pour les autres équipements du réseau.
Je m'attends à ce que Netdisco découvre ces nouveaux routeurs et qu'il reprenne son boulot tout seul (automagie). Mais, après plusieurs heures d'attente, je dois me résigner.
Je tente de forcer manuellement la récupération de la table ARP d'un de mes routeurs en spécifiant sa nouvelle adresse IP. Notes : toutes les commandes à venir sont exécutées depuis le dossier « bin » du dossier d'installation de Netdisco (/home/netdisco/bin chez moi).
./netdisco-do arpnip -d 192.0.2.27
[…]
[…] info arpnip: status done: Gathered arp caches from 192.0.2.27
Aucune erreur, mais absence de résultat.
Je tente de forcer la découverte d'un de mes routeurs par Netdisco :
./netdisco-do discover -d 192.0.2.27
[…] info discover: status defer: discover failed: could not SNMP connect to 198.51.100.0
Gné ? 198.51.100.0 est une adresse de réseau (d'un réseau qui existe en interne, certes), pourquoi est-elle associée à mon routeur ? Forcément qu'une connexion SNMP à destination de cette adresse ne va pas fonctionner…
Changeons l'adresse IP d'administration associée à ce routeur :
./netdisco-do renumber -d 192.0.2.129 -e 192.0.2.27
[…] info renumber: status error: Already know new device as: 198.51.100.0.
./netdisco-do renumber -d 198.51.100.0 -e 192.0.2.27
[…] info renumber: status done: Renumbered device 192.0.2.27 to 192.0.2.27/32 (rtr2.mycompany.example).
Hum… Le message est chelou : Netdisco prétend avoir renuméroté le routeur 192.0.2.27 en… 192.0.2.27. Il faut que tout change pour que rien change ?
Forcément une analyse du routeur ne fonctionne pas mieux qu'avant :
./netdisco-do discover -d 192.0.2.27
[…]
[…] info discover: status error: discover cancelled: 192.0.2.27 failed to return valid serial
Forcément que le serial n'est pas le même puisqu'il s'agit d'un modèle de routeur différent, d'une marque différente. (Depuis le début, j'évoque un seul routeur, mais le deuxième m'a causé les mêmes soucis.)
C'est à ce stade que je comprends qu'il y a cette "sécurité" et que remplacer un routeur nécessite d'effacer l'ancien de la base de données de Netdisco.
Bon ben supprimons nos anciens routeurs de la base de données de Netdisco, mais en conservant les nœuds associés (c'est-à-dire les machines et autres bidules connectés à nos routeurs, afin de ne pas perdre l'historique) :
./netdisco-do delete -d 192.0.2.129 -e '2021-11-09 remplacement routeurs' -p yes
[…]
[…] info delete: status done: Deleted device: 192.0.2.129
./netdisco-do delete -d 192.0.2.27 -e '2021-11-09 remplacement routeurs' -p yes
[…]
[…] info delete: status done: Deleted device: 192.0.2.27
./netdisco-do delete -d 192.0.2.1 -e '2021-11-09 remplacement routeurs' -p yes
[…]
[…] info delete: status done: Deleted device: 192.0.2.1
./netdisco-do delete -d 192.0.2.24 -e '2021-11-09 remplacement routeurs' -p yes
[…]
[…] info delete: status done: Deleted device: 192.0.2.24
On peut demander à Netdisco de prendre connaissance de nos nouveaux routeurs :
./netdisco-do discover -d 192.0.2.27
[…]
[…] info discover: status done: Ended discover for 192.0.2.27
./netdisco-do discover -d 192.0.2.24
[…]
[…] info discover: status done: Ended discover for 192.0.2.24
Ça fonctionne : le siphonnage des tables ARP reprend son cours, les informations relatives aux associations IP/MAC sont actualisées dans l'interface web de Netdisco, etc. \o/
Tiroir Hemera multimode upgrader = faire passer du 10 G monomode (OS1/2) sur des fibres multimodes (OM1).
Cas d'usage : rentabiliser les investissements d'il y a 20 ans (on posait des fibres multimodes) et/ou passer au 10 G dans des environnements contraints (bâtiment protégé, etc.).
Boîtier passif 1U 19 pouces pour 4/8/12 fibres OM1. J'avoue que le côté passif (donc un jeu purement physique / optique) me bluffe.
Distance / portée : < 2 km. Au-delà de 800 m, il faut un boîtier à chaque extrémité des fibres multimodes. En deçà, une épissure entre une fibre multimode et une jarretière monomode suffirait.
Fabricant : Acome. SCOP. Produit fabriqué en France (usine FR, a dit le commercial).
Prix : 6 k€ pour un boîtier 12 fibres. En comparaison, nous avons dépensé 8 k€ TTC pour la pose de 24 fibres optiques monomodes sur 4 segments (soit 8 cassettes + soudures, qui est ce qui coûte le plus cher dans une pose de fibres). Et pour un segment, il y avait des contraintes : bâtiment protégé, absence de faux plafonds, plans des chemins de câbles perdus, etc.
Mon avis : bricolage (le commercial a reconnu, sans que je l'y pousse, qu'une fibre monomode est préférable et que leur produit est un palliatif pour les cas où l'on ne peut pas remplacer de la multi par de la mono d'un claquement de doigts) + pas rentable.
commande1 |& commande2 = commande1 2>&1 | commande2 = redirection de la sortie standard (stdout) et de la sortie des erreurs (stderr) de commande1 sur l'entrée standard (stdin) de commande2.
Pratique quand on utilise des outils de débogage (s_client, strace, etc.) et qu'on ne sait pas sur quelle sortie sera affichée le motif que l'on cherche.
A priori, ce n'est pas POSIX, ça ne fonctionne pas avec tous les shells. En tout cas, ça fonctionne avec bash.
Ma liste réduite d'autorités de certification (AC) répond toujours à mes besoins plus de 21 mois après. :)
Fin mars 2022, j'ai constaté la présence des AC suivantes dans mon Firefox et je les ai également désactivé sans conséquence néfaste à ce jour :
ANF Secure Server Root CA
Certum EC-384 CA
Certum Trusted Root CA
certSIGN Root CA G2
e-commercie monitoring GmbH - globaltrust 2020
FNMT-RCM - AC RAIZ GNMT-RCM SEVIDORES SEGUROS
GlobalSign Root R46
GlobalSign Root E46
Microsec Ltd. - e-Szigno Root CA 2017
Microsoft RSA Root Certificate Authority 2017
Microsoft ECC Root Certificate Authority 2017
Naver Global Root Certification Authority
Trustware Global ECC P256 Certification Authority
Trustware Global ECC P384 Certification Authority
Trustware Global Certification AuthorityLa syntaxe traditionnelle fonctionne toujours avec la version 8 de rsyslog : *.* @<ADRESSE_IP> pour envoyer tous les journaux dans un flux syslog sur udp/514. @@ pour un flux tcp/514. Ajouter :<PORT> pour changer de port.
On peut utiliser des conditions afin de transférer uniquement le journal d'un programme précis. Exemple :
if $programname == 'sudo' then @192.0.2.1
& stop
Et avec la ""nouvelle"" syntaxe ?
if $programname == 'sudo' then {
action(type="omfwd" target="192.0.2.1" protocol="udp" port="514")
stop
}
On notera que la documentation du module omfwd est erronée : les paramètres « protocol » et « port » ne sont pas facultatifs.
Dans un précédent shaarli sur rsyslog, j'ai consigné comment configurer rsyslog pour créer automatiquement une arborescence variable et un nom de journal selon un template genre /var/log/distant/<ANNÉE>/<MOIS>/<JOUR>/bidule/programme.log.
Par défaut, les dossiers créés par rsyslog ont le mode 0700 (0644 pour les fichiers). Ainsi, un compte utilisateur local non-root ne peut pas parcourir l'arborescence de stockage des journaux.
D'après sa documentation, le module omfile de rsyslog propose un paramètre pour configurer le mode des dossiers créés : « dirCreateMode » (« FileCreateMode » pour les fichiers).
Exemple d'utilisation :
template (name="chemin-prog" type="string" string="/var/log/distant/%$year:::%/%$month:::%/%$day:::%/bidule/programme.log")
if $hostname == 'machine1' then {
action(type="omfile" dynaFile="chemin-prog" dirCreateMode="0755")
stop
}
Une autre façon de faire est de créer un groupe d'utilisateurs dédiés à la consultation des journaux, genre « log » et de configurer rsyslog pour attribuer les dossiers créés à ce groupe.
C'est légèrement plus propre car ça évite de donner un accès en lecture seule aux journaux à tous les comptes utilisateurs de la machine. Mais ça suppose toujours de changer le mode avec lequel les dossiers sont créés (0700 = le groupe n'a pas d'accès non plus).
Le plugin omfile de rsyslog propose les paramètres « dirGroup » / « dirGroupNum » (« fileGroup » / « fileGroupNum » pour les fichiers).
Exemple :
template (name="chemin-prog" type="string" string="/var/log/distant/%$year:::%/%$month:::%/%$day:::%/bidule/programme.log")
if $hostname == 'machine1' then {
action(type="omfile" dynaFile="chemin-prog" dirGroup="log" dirCreateMode="0750")
stop
}
Il est également possible de modifier l'utilisateur propriétaire du journal ou de l'arborescence : « fileOwner », « dirOwner », « fileOwnerNum », « dirOwnerNum ».
Évidemment, ces paramètres du plugin omfile peuvent être utilisés même quand on n'utilise pas de template. ;)
Par défaut dans OpenStreetMap (OSM), les noms des villes et des pays sont dans la langue locale dudit pays (russe, arabe, chinois, etc.). Pas même en anglais et encore moins dans la langue du visiteur.
Pour avoir ces noms en français et en écriture latine, on peut consulter des projets tiers qui réutilisent les données d'OSM. Les deux seuls en français à cet instant sont :
Forcément, il y a aussi des inconvénients :
On peut supposer que les autres projets apparaîtront sur la page dédiée à l'internationalisation du wiki officiel.
Source : https://mamot.fr/@klorydryk/108185595944513572 via https://mastodon.gougere.fr/@bortzmeyer.
Résumé : pourquoi j'ai séché la formation à l'habilitation électrique et pourquoi tu devrais en faire autant. Si tu choisis de refuser cette absurdité, sache qu'un pixel sait que ce n'est pas facile et te soutient. :)
Fin 2019, mon employeur nous invite, nous, administrateurs de systèmes et de réseaux informatiques, à passer l'habilitation électrique. Plusieurs chefs de la hiérarchie sonnent le tocsin.
Au final, personne de mon équipe l'a passé. L'enthousiasme de mon chef d'équipe face à mes arguments sur l'absurdité du système de l'habilitation électrique s'est transformé en flemme.
En janvier 2022, c'est obligatoire. Je ne m'attendais pas à ce que ça revienne si vite, mais comme disait ma grand-mère : quand un chef / personne responsable a une idée derrière la tête, ce n'est pas dans le cul !
Pour quelle partie de mon travail l'habilitation est-elle nécessaire ? Personne nous a dit quoi que ce soit. C'est le service machin qui demande, alors on ne pose pas de question, il sait ce qu'il fait, hop, hop, hop.
Pour ré-armer les disjoncteurs de notre salle serveurs ? Au cas où nos serveurs nous enverraient des chocs électriques ? Pour les rares fois où on va insérer un composant (barrette de RAM, contrôleur RAID, etc.) dans un serveur hors tension ?
Je suis en poste depuis 4 ans et demi. Le risque électrique direct et indirect est mentionné dans toutes mes fiches de poste depuis la première.
Pourquoi attendre 4 ans si c'est si important ?! C'est comme la visite médicale obligatoire à laquelle j'ai jamais été convié (chez mon employeur actuel) : le service compétent (RH d'un côté, Sûreté de l'autre) se réveille et ce qui passait à la trappe avant devient urgence vitale turbo priorité plus plus plus… Ce sont des gens responsables, on nous dit.
Je rappelle mes griefs contre cette habilitation :
Les chefs veulent se couvrir. Si l'un d'eux te demande de ré-armer un disjoncteur alors que tu n'es pas habilité, l'employeur engage sa responsabilité en cas de pépin. Après ton habilitation, ça sera la faute de personne. Dilution de la responsabilité. De mémoire, un employeur peut habiliter un sous-fifre sans lui faire passer la formation, mais, là aussi, il engage sa responsabilité en cas de problème. Bref, le but de l'habilitation est de permettre aux chefs de se défausser. Mais ces gens-là se présentent et sont présentés comme des gens res-pon-sa-bles, va comprendre ;
Les formations de deux jours à l'habilitation électrique sont d'une qualité plus que douteuse :
Une amie m'a demandé comment est financée cette daube. Par l'employeur. Il lui faut payer le formateur et les deux jours pas travaillés. Elle m'a demandé pourquoi le MEDEF ne s'y oppose pas, alors, comme il le fait pour tant d'autres « charges » salariales.
L'habilitation électrique est une pompe à fric pour les formateurs en électricité. Formation obligatoire tous les trois ans, imagine. Tu radotes chaque année, rien de neuf. Argent facile !
J'ai refusé de suivre la formation, et, en conséquence, je ne suis pas habilité. Sans conséquence à ce jour.
La décision a été compliqué à prendre. Au début, j'ai envoyé un email au dirlo de mon service pour exposer que je ne suivrai pas cette formation.
Mon chef d'équipe revient vers nous tous pour collecter nos réponses. Je dis que je vais réfléchir, et j'obtiens un jour de réflexion.
À ce moment-là, je suis blasé, frappé par le renoncement et la solitude. Même mes amis les plus têtus, ceux qui refusent de se faire emmerder par de telles conneries, étaient plutôt d'avis que je devais suivre la formation. Partir en guerre pour si peu, est-ce raisonnable ? Glander en formation, n'est-ce pas plus cool que de travailler ? Deux jours en plus, ça vaaaa, c'pas la mort. L'excuse du CDD est-elle vraiment viable alors qu'il a été renouvelé 4 fois ? La profession veut cette habilitation donc, même chez un autre employeur, je serai obligé d'y passer… sauf si la salle serveurs est externalisée ; Or, j'évite de postuler chez de tels employeurs car je trouve que c'est insensé d'un point de vue économique, répartition de la richesse sur un territoire, etc. Bref, c'est chiant et ça va revenir sur le tapis régulièrement, et, à chaque fois, il faudra trouver la force de s'y opposer, réfléchir, etc.
Quelques jours plus tard, je sors de ma léthargie. C'est toujours par de petites concessions, de petits riens, qu'on te fait plier. C'est jamais important, ça vaut jamais la peine de s'énerver ni d'opposer un refus. Et toi, tu regretteras d'avoir accepté, trop bon trop con, qu'ils disent… après coup.
Mais, à l'inverse, personne te demandera jamais de faire un truc très crade d'un coup. C'est progressif. On découpera l'action crade en petits bouts, et chaque intervenant comme toi n'aura que ce bout-là à accomplir. Un tout petit bout, rien de grave, rien d'illégal, rien d'immoral. Petit à petit, tu recomposeras le puzzle, et tu comprendras que le petit rouage que tu étais a participé à des choses peu reluisantes. Ceux qui prétendent que rien est grave et attendent qu'on leur demande une action vraiment crade pour la refuser se trompent : ce moment arrivera jamais, car la société, les mœurs auront changé avant, et l'inacceptable sera devenu acceptable. Et la personne peu entraînée à refuser, l'acceptera par habitude. Bien sûr, j'exagère un peu, mais tu vois l'idée.
Bref, je me suis dit « merde à la fin, je ne veux pas y aller, point ! ».
La veille de la formation, j'ai posé une semaine de congés au motif d'un giga mal de dos (crédible, j'en ai déjà eu un).
Évidemment, ça ne fera pas avancer la cause que je prétends servir puisque ce geste ne dit pas pourquoi j'ai séché cette formation. Mais, je rappelle l'existence de mon email à mon dirlo. Il contient quelques-uns de mes arguments. La prochaine fois, je serai moins lâche. Je me console en me disant que, de toute façon, il n'y a pas plus aveugle que celui qui refuse de voir, et que même le plus complet des argumentaires sert environ à rien (cf réchauffement climatique).
À ce jour, j'ai reçu un email du service RH. M'exposant que j'ai séché et me demandant de justifier mon absence. Je n'ai pas répondu. C'était il y a plus d'un mois.
Mais, en tant que CDD, je sais que le couperet pourrait tomber plus tard.
J'ai qu'une seule envie : que nous soyons plus nombreux à refuser cette absurdité afin qu'elle soit questionnée et amendée.
Je recopie un extrait de mon dernier shaarli sur le sujet :
P.-S. : j'ai rien contre le fait de former aux risques électriques, de développer des automatismes permettant de réagir à un danger électrique, etc., mais ce n'est clairement pas le sujet de l'habilitation électrique qui apprend plutôt la paperasse (se tenir seul à xx cm du tableau électrique, hein !), le dédouanement et la couardise. D'autant qu'elle est obligatoire au travail pour des tâches que tu effectues sans problème chez toi sur des circuits identiques (230 V, 10-20 A, 50 Hz)… On pourrait au moins faire sauter ce premier niveau d'habilitation pour les tâches basiques.
Il y a quelques mois, l'extinction impromptue de l'ampoule a repris. Tout comme la variation de l'intensité lumineuse.
En levant les yeux, je constate que le spot est plus tourné d'un côté que de l'autre. Ben, oui, il y a un axe central. On le voit sur cette photo. Les picots blancs sous les ressorts. Le spot est orientable, comme on le voit ici.
J'utilise le manche d'un balai pour remettre le spot droit : l'ampoule se rallume. Droit = la vitre qui protège l'ampoule (ou l'humain de la chaleur de celle-ci) est parallèle au sol, quoi.
Les jours suivants, le spot change de position et l'ampoule ne s'allume plus. À chaque fois, j'utilise le balai et ça repart. Actuellement, ça tient sans coup d'balai depuis plusieurs semaines. :D
En vrai, je pense qu'il doit y avoir, à nouveau, un faux contact du côté de la douille. Je suppose que bouger le spot dans une certaine position fait pression "comme il faut" sur les fils électriques, ce qui explique que ma méthode sans queue ni tête produit un résultat.
Je crois savoir que l'axe central était bloqué par des languettes en métal (on en voit une ici, en bas, à droite). Je les ai faites tomber lors du premier démontage du spot, fin 2019, et je ne les ai pas remises lors du changement de la douille de mi-2020. Ceci explique aussi cela, je pense. Mais bon, depuis, j'ai jeté lesdites languettes en métal…
Bref, pour l'instant ça chemar, et quand ça ne chemar pas, hop, un p'tit coup de balai et ça repart. :D
Résumé : quand un dégraissant ne parvient plus à vaincre la saleté sèche accumulée sur ta plaque de cuisson durant des mois, utilise un grattoir pour plaque de cuisson vitrocéramique. :D
Depuis que j'ai commencé à cuisiner, j'ai pourri ma plaque de cuisson. Je la nettoyais rarement. Il fallait donc y aller au dégraissant.
Ça fonctionnait, donc je la nettoyais encore plus rarement. À force d'accumulation d'eau salée (qui déborde de la casserole), de soupe (idem), de graisse (qui coule le long de la paroi quand je repose la poêle sur la plaque après avoir déplacé la bouffe cuite dans une assiette ‒ ce qu'il faut éviter de faire, paraît-il, la plaque continuant de dégager de la chaleur alors que la poêle est vide ‒), d'herbes de Provence (apprendre à saupoudrer), etc., le dégraissant n'était plus efficace, même en en aspergeant la plaque plusieurs fois, même en frottant comme un ouf avec le côté grattant d'une éponge. Surtout après avoir laissé tout ça sécher des mois durant. Ça formait un relief sur la plaque, autour des feux. :D
Sauf que cette plaque de cuisson vitrocéramique n'est pas à moi. Un jour, je devrais donc la nettoyer (ou laisser la caution). J'avais également l'impression que ça prenait masse de temps pour faire bouillir de l'eau (on était clairement au-dessus de 10 minutes, peut-être 15, contre 8 minutes en ce moment), et j'attribuais ça au fait qu'il fallait faire chauffer la couche de merde qui délivrait la chaleur à la casserole qui la transmettait à l'eau.
Que faire ? Quand je le questionne, professeur Johndescs m'apprend qu'il existe des grattoirs pour plaque de cuisson. Juste une lame de cutter greffée sur un manche, quoi. Mais la lame étant large, ça réduit le risque de rayer méchamment la plaque avec la pointe de la lame, à condition de bien tenir le grattoir.
J'en trouve un viteuf chez Darty. 10 €. Flemme d'aller en magasin (c'était encore l'époque du port du masque obligatoire dans les transports en commun et dans les galeries marchandes), je l'ai acheté sur le web.
Ça marche vachement bien : avant / après.
On voit masse de rayures, mais elles ne sont pas profondes (je ne les sens pas avec mes doigts, quoi), donc je pense que j'ai fait ça plus avec le côté grattant d'une éponge qu'avec le grattoir.
Ces derniers mois, je parviens à faire l'effort de nettoyer ma plaque à l'éponge après chaque utilisation, mais le grattoir demeure quand même utile car l'éponge n'enlève pas forcément tout (et gratter avec la partie verte / grattante, c'est augmenter le risque de rayures).
TL;DR : l'algorithme ssh-rsa est désactivé dans la version de SSH livrée dans Ubuntu 22.04 car il utilise la fonction cryptographique SHA-1 qui est jugée dangereuse depuis des années.
Enfin, il ne faut pas confondre le format d'une clé SSH (RSA) et l'algorithme utilisé pour vérifier cette clé et signer avec (ssh-rsa = RSA + SHA-1). Ce n'est pas donc les clés RSA qui sont dépréciées par SSH et tu peux conserver la tienne (et celle de ton serveur) sans danger.
Un collègue met à jour sa station de travail à la version 22.04 d'Ubuntu. Il ne parvient plus à se connecter en SSH au serveur depuis lequel nous administrons nos serveurs (je refuse d'utiliser le terme « bastion », car il renvoie l'idée d'un point sécurisé, d'un contrôle d'accès fin, d'une journalisation des accès et des commandes saisies, etc. ce qui n'est pas le cas). L'erreur ? « Unable to negotiate with XXX.XXX.XXX.XXX port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ssh-ed25519 ».
Ubuntu 21.10 embarquait la version 8.4 d'OpenSSH (l'implémentation la plus répandue du protocole SSH). Ubuntu 22.04 embarque la version 8.9. (Source.) Or, à partir de sa version 8.8, OpenSSH désactive l'algorithme ssh-rsa. ssh-rsa = RSA + SHA-1. Or, ce dernier est considéré comme très faible depuis 2015, comme je l'ai évoqué dans un article sur le renforcement de mes configurations SSH.
Or, on constate que le serveur ne propose pas mieux que ssh-rsa (si l'on reste dans la famille RSA). Il ne propose pas rsa-sha2-256 ni rsa-sha2-512. C'est normal : il s'agit d'un système Debian 8 avec OpenSSH 6.7 ; les nouveaux algorithmes de la famille RSA sont implémentés à partir de la version 7.2 d'OpenSSH.
Tu vas me dire : « le serveur propose d'autres algorithmes, d'autres familles, le client l'annonce dans son message d'erreur, pourquoi ssh ne bascule pas dessus automatiquement ? ».
En effet… Sur un Ubuntu 22.04, c'est l'algorithme ssh-ed25519 qui est choisi car il est pris en charge par le serveur (dernier choix) et qu'il est premier choix du client après les algorithmes qui utilisent des certificats (cf man ssh_config).
Sur un Debian 10, c'est l'algorithme ecdsa-sha2-nistp256 qui est retenu, pour la même raison.
Sur un Ubuntu 22.04 avec un fichier known_hosts contenant l'empreinte de la clé RSA du serveur SSH, ssh affiche son traditionnel message « WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! » car il a négocié la présentation, par le serveur, de sa clé au format ED25519 (« The fingerprint for the ED25519 key sent by the remote host is »). Il suffit donc de supprimer l'empreinte de la clé de type RSA du fichier known_hosts (la commande est donnée dans le message d'erreur) pour basculer sur l'algorithme ssh-ed25519 et ne plus avoir d'erreur.
Si mon collègue n'a pas eu ce message d'erreur, c'est probablement qu'il devait avoir une configuration de son client SSH qui autorisait uniquement les algorithmes de la famille RSA et, potentiellement, d'autres algorithmes non pris en charge par le serveur. Du coup, son client SSH ne pouvait pas utiliser la famille RSA à cause de la dépréciation de l'algorithme ssh-rsa, et il ne pouvait pas utiliser une autre famille d'algorithmes car on le lui interdit ou le serveur SSH ne les implémente pas.
Il y a plusieurs solutions :
Ré-autoriser l'utilisation de ssh-rsa dans la configuration SSH du client en ajoutant les lignes suivantes dans le fichier ~/.ssh/config :
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
C'est la meilleure solution si t'as encore de vieux serveurs (< Debian 7) ou des swiths, car ils ne prennent pas en charge autre chose que ssh-rsa.
Utiliser un autre algorithme, donc un autre format de clé. Pour ce faire, il faut supprimer les empreintes de la clé RSA du serveur du fichier known_hosts :
ssh-keygen -f ".ssh/known_hosts" -R "<nom_du_serveur>"
ssh-keygen -f ".ssh/known_hosts" -R "<adresse_IP_du_serveur>"
Oui, il faut cibler le nom et les adresses IP (si t'as IPv6 en sus d'IPv4, t'as une commande de plus à taper ;) ). Pour le nom, il s'agit du FQDN ou du seul nom de la machine en fonction de ton usage. Il faut s'assurer que le serveur prend en charge d'autres algorithmes (ssh -o 'HostkeyAlgorithms -ssh-rsa' <nom_du_serveur> et que d'autres types de clés sont disponibles : ls -lh /etc/ssh/ssh_host_* (si non, ça se génère avec ssh-keygen, comme d'habitude).
Comme le dit le changelog d'OpenSSH : non, il est innocent.
Faut-il supprimer sa clé SSH RSA personnelle ? Non, elle est innocente.
Explications.
Lors de l'établissement d'une connexion SSH, une partie de l'échange se déroule ainsi :
/etc/ssh/ssh_host_* sur le serveur. C'est cette clé dont tu dois valider l'empreinte lors de la première connexion à un serveur SSH (modèle de sécurité TOFU, Trust On First Use). Dans le cas de mon collègue, son client et le serveur décident que le serveur doit se présenter avec sa clé de type RSA (/etc/ssh/ssh_host_rsa_key*) ;Sur un serveur plus récent (>= Debian 9), mon collègue ne rencontre aucun problème alors que le serveur se présente pourtant avec sa clé au format RSA, car ce serveur prend en charge des algorithmes RSA plus récents qui n'ont pas été dépréciés comme rsa-sha2-256 (RSA + SHA-256) et rsa-sha2-512.
Ce n'est donc pas le format de la clé (RSA) qui n'est plus pris en charge, mais l'algorithme de signature et de vérification car il repose sur la fonction cryptographique SHA-1 qui est considérée comme étant faible / dangereuse depuis des années.
Il est donc vain de jeter / changer / renouveler sa clé SSH personnelle au format RSA à coup de ssh-keygen, car le sujet est la clé du serveur.
Et il est démesuré de jeter la clé SSH RSA du serveur, car le sujet est l'algorithme utilisé, pas le format de la clé.
Ha, au fait, j'ai simplifié ci-dessus : la négociation du format de la clé et de l'algorithme se fait en une seule et même étape. Je l'ai découpé en deux afin de bien appuyer sur la différence entre le format de la clé et les procédures de signature et de vérification cryptographiques effectuées avec cette clé.
À la mi-mars 2022, j'ai fermé les commentaires sur mon blog.
Raisons :
Il y a quelques années, j'avais cherché comment fermer les commentaires. J'avais trouvé qu'il y a un paramètre pour fermer ceux des nouveaux articles / pages, mais qu'il fallait fermer à la mano les commentaires sur chaque article / page existant (ou pondre une requête SQL qui le fasse). La flemme suscitée avait pesé dans ma décision de ne pas fermer les commentaires. Avec le recul, je pense que je n'avais pas consulté les bonnes documentations, car il paraît absurde qu'un outil grand public ne permette pas de fermer les commentaires à l'heure du spam, des trolls, du harcèlement, etc. et des responsabilités légales.
En tout cas, en 2022, la fermeture des commentaires de tous les articles d'un WordPress se fait dans l'administration, « Réglages », « Commentaires », décocher « Autoriser les commentaires sur les nouvelles publications » et cocher « Fermer automatiquement les commentaires pour les publications de datant de plus de X jours ».
On n'oublie pas de désactiver et de supprimer Spam Karma. Cela se passe dans la rubrique « Extensions » de l'administration WordPress. Raison : sécurité (le code de l'extension n'est plus chargé, donc il devient inerte, il ne peut plus servir lors d'une attaque).
Mésusages de données personnelles durant la campagne présidentielle 2022 :
TL;DR : si le journal Puppet est rempli d'erreurs « SSL_CTX_use_PrivateKey: key values mismatch » mais qu'un agent puppet lancé à la main fonctionne, redémarre le service Puppet, car il a une clé privée obsolète en RAM.
Sur un serveur, je constate que des modifications de configurations prévues dans mon code Puppet n'ont pas été déployées. J'exécute l'agent puppet à la mano (puppet agent -t). Puppet applique des changements, qui, d'après l'historique du dépôt git contenant le code Puppet, datent de plusieurs semaines.
pgrep -x puppet (voir actualiser sa manière de chercher un processus) et systemctl status puppet confirment que l'agent puppet tourne pourtant en tâche de fond.
Je consulte le journal de Puppet (je l'ai rangé dans /var/log/puppet/puppetagent.log avec une configuration spécifique pour rsyslog, mais, par défaut, il est dans /var/log/syslog) et j'y trouve plein d'erreurs « SSL_CTX_use_PrivateKey: key values mismatch ». À chacune de ses tentatives de lancement, Puppet crache cette erreur.
Je pense à une bourde au niveau du réseau genre l'adresse IP ou l'adresse MAC du serveur Puppet (puppetmaster) est en double sur le réseau. Ça expliquerait un comportement du type "ça marche (quand je lance l'agent Puppet à la main), ça marche pas (d'après le journal)" : en fonction de quelle machine cause en dernier, le trafic est envoyé à la mauvaise, et la validation x509 joue parfaitement l'un de ses rôles, l'authentification du pair, et fait capoter la connexion. Je détecte aucune anomalie avec nos outils genre Netdisco ou SSH (qui, dans sa config' par défaut, vérifie l'empreinte d'un serveur à chaque connexion).
A posteriori, il y avait trois indices simples pour invalider cette hypothèse : 1) d'après le journal Puppet, il n'y a pas d'aspect aléatoire dans le dysfonctionnement (ce qui arrive rarement lors d'un conflit réseau) ; 2) un unique serveur était concerné par le problème ; 3) il est improbable que la machine usurpatrice ait, comme par hasard, un puppetmaster en écoute (sans ça, pas d'échange dans le bon protocole, donc pas d'erreur x509).
Je cherche sur le web et je trouve la ressource pointée par ce shaarli.
On a effectivement changé le certificat x509 du client Puppet (car renommage de la machine, de mémoire). À chaque exécution, l'agent puppet lancé à la mano récupère le certificat et sa clé privée en vigueur sur le disque dur. L'agent lancé par systemd qui tourne en tâche de fond a visiblement la mauvaise clé privée (ou le mauvais certificat) dans la RAM… Un systemctl restart puppet et ça repart.