5571 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
◄Older
page 61 / 279
Newer►
  • « driverbyte=DRIVER_TIMEOUT », « I/O error », « aborting journal » et « remounting filesystem read-only » dans une VM : pas de solution

    Résumé : les erreurs rapportées ci-dessous (et dans le titre) sont rares pour une machine virtuelle (peu de pages web en parle), je n'ai pas de solution à proposer et, dans mon cas, la machine virtuelle a totalement crashé deux mois après les premiers symptômes. Vérifie tes sauvegardes. :)

    En juillet 2020, l'une de nos machines virtuelles Proxmox+KVM kernel-panic-ait, parfois plusieurs fois par jour. Puis ce comportement a disparu sans intervention humaine.

    Début août 2020, /var passe en lecture seule. Je redémarre la VM, un fsck se déclenche et la partition était à nouveau montée en écriture. Le lendemain, notre supervision m'indique que cette partition est à nouveau en lecture seule. dmesg indique que la transition a eu lieu 256 minutes (4 h) après le démarrage. Les erreurs consignées sont :

    kernel: sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT,SUGGEST_OK
    kernel: end_request: I/O error, dev sda, sector 29954432
    kernel: Aborting journal on device sda7.
    kernel: ext3_abort called.
    kernel: EXT3-fs error (device sda7): ext3_journal_start_sb: Detected aborted journal
    kernel: Remounting filesystem read-only

    Pourquoi uniquement /var alors que toutes les partitions de cette machine virtuelle sont stockées dans le même LV LVM sur l'hyperviseur ? Car il s'agit d'un serveur, donc une fois qu'il a démarré et que les principaux binaires sont en RAM, il n'y a quasi plus de lecture et encore moins d'écriture sur /, alors que /var reçoit les journaux systèmes et applicatifs en permanence.

    I/O wait côté hyperviseur ? Je n'y crois pas, car les graphes sur la page de résumé de l'hyperviseur dans l'interface web de Proxmox ne le montrent pas.

    La VM n'a pas assez de temps CPU pour effectuer ses opérations car ses ressources CPU sont sous-dimensionnées ou que l'hyperviseur est débordé par d'autres VMs ? Je n'y crois pas, car top affichait « 0,0 st » (st = steal time = temps volé). Mais comme je n'étais pas là au moment du passage en lecture seule… De plus, c'était les vacances, donc la charge de ce serveur était très réduite et aucun changement n'a été mis en œuvre par les administrateurs sur l'ensemble du périmètre (cette VM, l'hyperviseur, le réseau, etc.).

    Très peu de ressources sur le web mentionnent les erreurs que je rencontre.

    Je trouve la première partie des erreurs extraites de mon dmesg dans un ticket chez VirtualBox.
    La première piste est un problème d'I/O côté hyperviseur. Comme vu ci-dessus, aucun élément me permet d'affirmer cela.
    La deuxième est de désactiver NCQ (optimisation des I/O en laissant le disque dur ordonnancer lui-même les requêtes afin de les traiter dans l'ordre de l'emplacement physique des données). Je n'y crois pas : 1) mes erreurs ne mentionnent pas NCQ ; 2) il y a trop d'abstractions (ext4 sur une partition étendue dans un LV LVM dans un volume RAID matériel) pour que NCQ puisse agir. J'ai quand même désactivé NCQ dans la VM.

    Je trouve la deuxième partie des erreurs dans un rapport de bug chez Red Hat. Problème dans Linux censé avoir été corrigé à la fin des années 2000 mais qui est toujours là en 2013 et 2014… La version du système de notre VM date justement de la fin des années 2000, mais la version de notre noyau est ultérieure à celle dans laquelle le correctif est apparu.
    Je me laisse convaincre que, peut-être, le journal ext est corrompu, ce qui explique le déclenchement automatique d'un fsck à chaque redémarrage, même quand la partition /var n'a pas été remontée en lecture seule.

    La partition /var étant utilisée par plein de processus, je ne peux pas travailler dessus. Je redémarre donc en single user mode (une entrée GRUB me le proposait, sinon il faut éditer la ligne et ajouter « single » à la fin de la ligne « linux » et démarrer en pressant ctrl+x) puis je tape les commandes suivantes proposées dans un commentaire du rapport de bug :

    tune2fs -O ^has_journal /dev/sda7
    fsck.ext4 -f /dev/sda7
    tune2fs -j /dev/sda7
    reboot

    Vu que fsck n'a pas trouvé d'erreur, je pense que tout cela a été vain.

    Quoique… Cela a tenu un mois et demi.

    Le serveur a totalement crashé mi-septembre 2020. Impossible de booter car absence de partition… Il semble qu'il ne s'agissait donc pas d'un problème temporaire type I/O wait / temps CPU volé, etc.
    Un coup de testdisk depuis un Live CD a permis de remettre la partition / dans le MBR, mais pas /var…

    Nous avons monté une nouvelle machine virtuelle. La configuration du service a été récupérée depuis Bacula. Les données des utilisateurs du service étaient stockées dans un partage NFS. Aucune perte de données à déplorer.

    Tue Dec 22 15:35:09 2020 - permalink -
    - http://shaarli.guiguishow.info/?UkUn_A
  • Clear 301-redirect cache in Firefox - Super User

    Firefox met en cache les redirections HTTP définitives (code HTTP 301).

    Ainsi, quand tu configures une redirection sur un serveur web, que tu constates que tu t'es trompé, que tu remets la configuration d'origine et que tu testes, t'es encore redirigé. D'où l'importance de tester avec un outil de diagnostic qui ne conserve pas d'état comme wget ou curl.

    Ce qui m'a étonné cette fois-ci, c'est que la mise en cache de la redirection a perduré après le redémarrage de Firefox. Je n'ai pas le souvenir que ça me soit déjà arrivé.

    Pour faire oublier à Firefox une redirection sans effacer tout l'historique / cache de la dernière heure depuis les préférences : aller dans l'historique (ctrl + h), chercher la page web précise, cliquer droit, « oublier ce site ».

    Mon Dec 21 12:46:59 2020 - permalink -
    - https://superuser.com/questions/467999/clear-301-redirect-cache-in-firefox
  • Block bruteforce attack on WordPress wp-login.php with Nginx only

    Nginx prend en charge nativement le rate-limiting, c'est-à-dire la limitation du nombre de requêtes par intervalles de temps sur une page web, sur plusieurs pages web, sur un site web entier. Il est même possible de mettre des adresses IP en liste blanche, de limiter uniquement les requêtes de type POST, de cumuler plusieurs critères de limitation (par hôte virtuel + par adresse IP source, par exemple), etc.

    Dans mon cas, le CAPTCHA maison d'un formulaire de contact web est extrêmement faillible. C'est une leçon d'humilité pour les anti-Google dans mon genre : on ne remplace pas reCAPTCHA en un claquement de doigts. Comme dans tout formulaire, un email est envoyé à l'administrateur du site web et un autre à la personne qui a rempli le formulaire. En changeant la valeur du champ HTML « email », il est donc possible d'envoyer un email à n'importe quelle adresse email. Bien sûr, le sujet de l'email ne sera pas au choix du spammeur et le message du spammeur sera entouré de phrases convenues ajoutées par le site web comme « vous avez envoyé le message suivant à l'administrateur du site machin.example », mais cela convient aux spammeurs.



    En attendant que les développeurs nous informent qu'ils feront rien et que nos utilisateurs nous valident que ce formulaire est inutile car ils ne souhaitent pas traiter les réclamations par email mais par une demande dans notre système de tickets, une limitation du trafic a été utile pour juguler temporairement le spam sans perdre en fonctionnalité.

    D'abord, je déclare un limiteur dans /etc/nginx/conf.d/rate-limiting.conf (mieux vaut ici que de modifier nginx.conf, car ça permet au gestionnaire de paquets du système de mettre à jour nginx.conf sans intervention humaine) : limit_req_zone $binary_remote_addr zone=contact:10m rate=1r/m;. On travaille sur l'adresse IP (stockée, par nginx, dans la variable interne « $binary_remote_addr »). On nomme le limiteur « contact ». Il pourra occuper 10 Mo de mémoire tout au plus (ce qui permet de stocker environ 16 000 états IPv4 ou 8 k états IPv6). Il limitera le trafic à une requête par minute.

    Ensuite, j'active le limiteur dans le bloc « server » de l'hôte virtuel :

    location /contact {
        limit_req   zone=contact burst=3 nodelay;
        uwsgi_pass  django;
    }

    Je limite les requêtes uniquement sur la page « /contact » du site web.

    J'utilise le limiteur nommé « contact ». Au-delà d'une requête par minute, j'autorise un pic jusqu'à 3 requêtes (par minute, toujours). Je dégage au plus vite les requêtes excédentaires (au-delà du pic) afin de ne pas consommer inutilement des ressources (nombre de connexions simultanées, RAM, etc.) plutôt que de mettre en file d'attente les requêtes excédentaires en attendant qu'un slot se libère après l'expiration du temps d'attente (1 minute tout au plus).

    « django » fait référence à un upstream de type socket fichier défini en amont. Car, oui, ce nginx est en frontal d'une application Python Django servie par le serveur d'applications uwsgi.

    Je recharge la configuration avec systemctl restart nginx, et c'est terminé. \o/

    Avec cette configuration, on est passé de 3000 spams en quelques heures à deux spams par heure puis l'emmerdeur a laissé tomber. :)



    Si j'avais voulu limiter uniquement les requêtes POST, voici ce que j'aurai mis dans /etc/nginx/conf.d/rate-limiting.conf :

    map $request_method $limit_post {
        default    "";
        POST       $binary_remote_addr;
    }
    
    limit_req_zone $limit_post zone=contact:10m rate=1r/m;

    Ça ne fonctionnait pas car notre spammeur avait résolu le CAPTCHA. Dit autrement : il faisait plusieurs requêtes de type GET sur le formulaire web. Dès qu'il reconnaissait l'URL d'une image qu'il avait décodé (exemple : s'il trouvait <img src="/images/captcha_a52b844ab3acbd1169db9a66647285b5fc694284/" […] /> dans le code source de la page web, alors il savait qu'il fallait remplir le champ HTML « captcha » avec la valeur « 7 » car cette URL pointera toujours sur un CAPTCHA qui dit « 5 + 2 = ? », seul le fond, le bruit, changera), il envoyait une requête POST, et, forcément, il tapait dans le mille dès cette première requête, ce qui met en échec toute limitation de trafic.



    Au final, puisque le CAPTCHA est faillible, que l'application web envoie l'email destiné à l'administrateur à une adresse email invalide sans tenir compte de la configuration (autre bug signalé), que les développeurs ne corrigeront pas l'application web, et que nos utilisateurs ne veulent pas traiter les réclamations par email, nous avons mis en place une page web qui invite les visiteurs à déposer une demande d'assistance dans notre outil de gestion de ces demandes.

    Pour ce faire, voici la nouvelle configuration que l'on trouve dans l'hôte virtuel de nginx :

    location /contact {
        root /chemin/vers/ma/super/appli/;
        try_files /erreurContact.html $uri;
    }

    La racine du site web (document root) est tel chemin. Lorsqu'une requête arrive, essaye de servir le fichier « erreurContact.html » (qui se trouve dans la racine du site web), sinon sers l'URL qui t'es demandée. Comme la page existera toujours, c'est toujours elle qui sera servie.

    Mon Dec 21 11:46:51 2020 - permalink -
    - https://rtcamp.com/tutorials/nginx/block-wp-login-php-bruteforce-attack/
  • Bricolage

    En octobre-novembre 2020, et à raison d'une à deux fois par semaine, j'ai aidé une amie à retaper un studio qu'elle propose à la location.

    J'ai :

    • Poncé de l'enduit mural. J'en retiens que ça permet d'avoir un mur lisse afin que la peinture murale n'ait pas l'air granuleuse / grumeleuse / pleine d'aspérités. Au niveau pratique, je retiens que le but n'est pas de ratatiner les grosses bosses dans le mur dues à, par exemple, des équerres qui fixent une fenêtre ;

    • Poncé une planche de bois avec une ponceuse électrique. La planche sert de comptoir, donc il y avait des traces noires causées par des verres, des casseroles, etc. Sans compter qu'avant sa mise en service, mon amie avait utilisé je ne sais plus quel produit (oxydrine ?) qui a rendu la planche légèrement collante / poisseuse. Au niveau pratique, je retiens : penser au bouton de verrouillage de la ponceuse qui permet de la maintenir allumée sans devoir presser le bouton en permanence (déconne pas, j'ai découvert ce bouton après coup !), de bien appuyer afin de faire disparaître les traces de verre / casserole, et de changer régulièrement le papier à poncer quand il est envahi de boulettes de crasse noires / marron (ou alors faire sauter les boulettes de crasse avec un tournevis plat) ;

    • Teinté la planche de bois, après son ponçage, avec un mélange huile de lin + essence de térébenthine + brou de noix (j'apprendrai que le brou est l'enveloppe verte de la noix, celle en sus de la coquille que l'on casse afin de manger la noix) ;

    • Peint des murs. A priori, de nos jours, la peinture à l'eau est la plus répandue, la peinture glycérophtalique est en perte de vitesse. J'en retiens : protéger les plinthes / interrupteurs / plafond / autre avec du ruban adhésif, utiliser un pinceau à rechampir pour peindre les contours (avec le plafond / les plinthes, le mur perpendiculaire, etc.) avant le passage du rouleau, bien imprégner le rouleau de peinture, décharger le rouleau sur la grille, commencer par le haut du mur, croiser (peindre dans les sens haut-bas puis gauche-droite) afin d'effacer les bandes (longueur du rouleau), exercer une force constante sur le rouleau (quand je suis fatigué ou que je peins à bout de bras, j'appuie plus) afin d'homogénéiser la quantité de peinture déposée sur le mur ;

    • Nettoyé les boiseries (cadre, jointures entre les carreaux, etc.) d'une fenêtre avant de les repeindre. J'ai oublié le nom du produit. Deux couches + nettoyage à l'eau après 1 h afin que le produit n'attaque pas le bois. Je n'ai pas repeint lesdites fenêtres, car je ne me sentais pas assez habile pour ce faire ;

    • Remplacé une prise électrique 16 A par une sortie de câble avec un domino 20 A. Ouais, le diamètre des fils électriques de la nouvelle plaque de cuisson est nettement plus gros que ceux de l'ancienne alors que les deux plaques ont une puissance similaire à 200 W près. L'occasion de réviser P = U x I : une plaque de cuisson d'une puissance de 5600 W branchée sur un circuit de 230 V (cas européen) nécessite une intensité de 5600 / 230 = 24,4 A. Environ, car on utilise du courant alternatif, donc il faudrait savoir si la puissance donnée par le fabricant est la puissance active ou la passive et/ou quel est le coefficient de déphasage de la plaque. L'occasion de réviser l'intensité que peut prendre en charge un câble en fonction de son diamètre genre 4mm² = 27 A (selon la norme, 32 A sans problème en pratique). En pratique, la prise est située dans un endroit exigu (un meuble de cuisine) donc la manip' a été hyper chiante. Surprise : les disjoncteurs divisionnaires sans marque du tableau électrique ont le neutre à gauche, ce qui n'est pas la norme française (ce qui les rend difficile à trouver)… Sans compter que le "peigne", qui relie les disjoncteurs divisionnaires au différentiel ne permet pas de mixer un modèle "neutre à droite" avec des disjoncteurs "neutre à gauche" sans quelques contorsions… ;

    • Monté un meuble Ikea pour la deuxième fois de ma vie. 0 vis restantes. \o/

    Au final, j'ai pu être force de proposition (lol) sur la partie électrique car j'ai toujours environ pigé la théorie et je comprenais ce qu'il y avait à faire, etc. Parmi les """"nouveautés"""", j'ai préféré poncer la planche de bois (souvenir d'enfance, les gestes ne s'oublient pas). J'ai détesté peindre : je comprenais rien, j'avais l'impression de faire n'importe quoi en permanence, il faut être hyper concentré, etc.

    Merci à cette amie de m'avoir donné l'opportunité de bricoler « pour de vrai ». Beaucoup de personnes m'ont dit (et me disent encore…) de varier mes activités de sale geek, de sortir de chez moi gnagnagna, mais très peu de personne se sont bougées le cul pour me proposer des activités, et encore moins pour me laisser tenter des trucs sur leurs propriétés personnelles.

    L'implication, c'est toujours pour les autres. Comme les employeurs qui cherchent des employés déjà formés à leurs manières de faire, ou les femmes qui, niveau amour, cherchent des hommes plus vieux car elles les pensent plus matures, raisonnés et expérimentés, ou comme les lieux d'enseignement supérieur qui te refusent en première année avant de te faire la cour en troisième année, quand t'auras prouvé, via des notes, que tu réponds au cahier des charges. Dans tous ces cas, il faut bien comprendre que quelqu'un d'autre a fait le sale boulot en amont : quelqu'un a forcément formé l'employé modèle (lol), l'amoureux parfait (lol), et l'étudiant parfait (lol). On ne devrait jamais oublier ça. Du coup, les moulins à vent qui t'incitent à faire des activités différentes sans rien proposer sont juste des grandes gueules, des flemmards, des gens pour qui tu ne comptes pas assez pour qu'ils t'accordent du temps. Ce n'est pas en restant un mou-mou inactif que l'on fait évoluer les pratiques des gens (si toutefois c'est possible).

    Sun Dec 20 16:09:10 2020 - permalink -
    - http://shaarli.guiguishow.info/?yAFzCQ
  • Déconnecté sans arrêt de Next Inpact ? Autorise les cookies "permanents"

    Next Inpact est un journal spécialisé dans le numérique, le droit du numérique, et les nouvelles technologies en général. J'y ai un compte, un abonnement, tout ça.

    Depuis quelques mois, le site web ne fonctionnait plus correctement avec mon Firefox :

    • J'étais déconnecté après une durée très courte (quelques minutes) et environ aléatoire alors que je ne change pas d'adresse IP ni de navigateur web ;

    • Quand j'ouvrais un lien vers un autre article dans un nouvel onglet (en cliquant sur la molette de la souris), j'étais déconnecté dans ce nouvel onglet mais toujours connecté dans l'onglet "principal" (même après un F5). Je parle bien d'un lien interne, pas d'un lien vers Inpact Hardware ou Bonsplans.tech ou autre site web du groupe ;

    • Lors du chargement d'une page web, ça affichait le thème clair par défaut avant de passer au thème sombre que j'ai choisi dans les paramètres de mon compte utilisateur.

    Les cookies sont bien autorisés par uMatrix. Je n'ai pas de filtrage actif sur Next Inpact. J'ai tenté de désactiver toutes mes extensions : ça ne fonctionne pas mieux.

    En revanche, tout fonctionne bien depuis un profil Firefox vierge. J'arrive à la conclusion qu'un de mes règlages dans about:config doit foutre la grouille… Identifier lequel s'avère être compliqué.

    Au final, j'ai « autorisé » explicitement « nextinpact.com », « www.nextinpact.com », « compte.nextinpact.com » et « api-v1.nextinpact.com » à déposer des cookies "permanents" (qui ne seront pas supprimés à la fin de la session c'est-à-dire à la fermeture de Firefox ‒ car j'ai configuré Firefox pour ce faire) depuis le gestionnaire de cookies de Firefox (Édition, Préférences, Vie privée et sécurité, bouton « Gérer les permissions… » dans la rubrique « Cookies et données de site »). Je ne comprends pas pour quoi cela fonctionne, mais ça fonctionne.

    Sun Dec 20 13:14:17 2020 - permalink -
    - http://shaarli.guiguishow.info/?11Xfqg
  • Kill YouTube Channel Video Autoplay

    Un script JavaScript pour Greasemonkey (extension Firefox) qui permet de ne pas lire automatiquement la vidéo située sur la page de présentation d'une chaîne YouTube (exemple) lorsque l'on vient du moteur de recherche (la vidéo n'est pas jouée automatiquement quand on arrive directement sur la chaîne). Comme c'est reposant de ne pas se faire emmerder !

    À une époque, il fallait faire taire les contenus Flash avec une extension puis avec le paramètre « plugins.click_to_play ». Ensuite, il a fallu tordre le cou aux vidéos natives HTML5 avec une extension puis avec le paramètre « media.autoplay.enabled ». Voir mon historique en la matière. Maintenant, c'est au tour des vidéos HTML5 dont la lecture est forcée avec un bout de JavaScript. Éternel recommencement… et ça fait bien chier…

    Sun Dec 20 11:57:51 2020 - permalink -
    - https://greasyfork.org/fr/scripts/399862-kill-youtube-channel-video-autoplay
  • Youtube - dismiss sign-in

    Un script JavaScript pour Greasemonkey (extension Firefox) qui permet de dégager, pour de vrai, la popup « connectez-vous » de YouTube. Contrairement aux règles de filtrage pour uBlock que l'on trouve partout, le champ de recherche reste fonctionnel et la vidéo n'est pas mise en pause.

    Quand on refuse les cookies (et que l'on n'a pas de compte Google YouTube), ce script est indispensable, sinon la lecture de chaque vidéo est interrompue après quelques secondes pour tenter d'afficher la popup et il faut alors cliquer à nouveau sur la vidéo pour que la lecture reprenne. De même, les liens contenant une estampille temporelle (exemple : « watch?v=XXXXXXXXX&t=300 ») ne fonctionnent plus : le site tente de charger sa popup… on clique pour lire la vidéo… qui reprend du début (au lieu de commencer depuis l'estampille temporelle).

    Pendant qu'il m'emmerdait avec cette popup, j'ai bien pensé à ne plus utiliser YouTube, le dernier service Google dont je n'arrive pas à me séparer. Mais pour aller où ?

    La communauté PeerTube ? Il y a des moteurs de recherche comme Sepia Search et PeerTube index. L'impossibilité de reprendre la lecture d'une vidéo après plusieurs heures me gonfle vraiment. Mais surtout, c'est l'absence de contenus qui me retient de franchir le pas. J'utilise YouTube pour regarder des conneries, pas pour déprimer sur l'état du monde. Or, sur ce point, PeerTube est à YouTube ce que les cinémas Utopia sont au cinéma ou ce que les Mutins de Pangée sont à Netflix ou la FNAC : on y trouve du contenu chiant qui donne à réfléchir ou des contenus niais de bobo gauchiste (genre X est un immigré unijambiste (une mine antipersonnel…) qui se fait tabasser par les flics dans une manif' écolo ; Y, jolie jeune femme, se prend d'amour pour lui, et, ensemble, ils vont changer le monde et pratiquer le sexe féministe). Ça va deux minutes.

    J'ai pensé à utiliser une instance Invidious (interface qui fait le relai entre des utilisateurs et YouTube). L'extension Firefox Privacy Redirect permet de rediriger automatiquement toute requête YouTube (ou Twitter ou Google Maps) vers une ou plusieurs instances Invidious. Sauf que :

    • Il existe peu d'instances et la plupart sont d'une lenteur exécrable. La liberté a un coût, certes, mais il ne faut pas déconner ;

    • L'écosystème n'est pas encore pérenne. Exemple : l'instance de DryCat a été stoppée du jour au lendemain. Or, j'ai besoin de pérennité quand je propose des liens sur mon shaarli ;

    • YouTube change souvent des petits détails techniques. Ces changements font qu'Invidious ne fonctionne plus. Exemple : la recherche (aucun résultat) et l'affichage de la liste des vidéos d'une chaîne (« Could not get channel info. ») sont cassés depuis plusieurs mois sur l'instance Invidious de FDN. Il faut attendre que le mainteneur d'une instance se sorte les doigts pour mettre à jour, ce qui peut prendre masse de temps. Notons que ce point est aussi vrai pour le script Greasemonkey sus-mentionné… ;

    • Utiliser Invidious pour se rendre invisible de Google, c'est comme utiliser un VPN pour fuir son FAI : ça déporte le problème plus loin. Si les pages web passent à travers l'instance Invidious, les vidéos, elles, sont directement récupérées depuis YouTube, donc YouTube sait que telle adresse IP a regardé telle vidéo. C'est moins mauvais qu'un cookie ou qu'un compte Google qui associe chaque vidéo à une machine ou à un utilisateur, mais quand même. Ensuite, puis-je faire confiance au mainteneur et à l'hébergeur de l'instance Invidious ? Quel sont leurs modèles économiques ? Tout cela n'est pas dit.

    Bref, rester sur YouTube avec un script Greasemonkey reste le moins mauvais choix. Jusqu'à quand ?

    Sun Dec 20 11:25:30 2020 - permalink -
    - https://greasyfork.org/en/scripts/412178-youtube-dismiss-sign-in
  • Envoyer promener la théorie

    Au taff, on monte un lien fibre 1 Gbps entre deux switchs. Fibre fraîchement posée dans les murs (dans le faux plafond, pour être précis), donc OM2/3.

    Pourquoi 1 Gbps seulement ? Car l'une des extrémités est un switch HP 5120 dont les 4 ports fibre de base prennent en charge la norme SFP mais pas la norme SFP+ qui permet, elle, de monter en 10 Gbps.
    J'apprécie également que ces ports soient dit « combo » : un tel port fibre fonctionne si le port cuivre auquel il est associé est libre. Le port 49 forme une paire avec le 46, le 52 avec le 47, le 50 avec le 48, etc. Si le port cuivre 48 est utilisé, alors le port SFP 50 est inutilisable : le dernier port « up » remporte la partie et évince l'autre. Amusant, non ?

    Notons que nous avons essayé de monter à 10 Gbps en utilisant les fibres qui ont été installées dans les murs il y a 15 ans. OM1 ? Monomode ? Nous n'avons pas retrouvé les spécifications. Ce qui est sûr, c'est que ça ne fonctionne pas.

    Plusieurs jours après, je reviens avec un module permettant l'ajout de deux ports SFP+ au HP 5120. Je réutilise les mêmes jarretières et la même fibre optique dans les murs. On monte en 10 Gbps. Mais, au bout d'une minute, la liaison cesse de fonctionner.

    Éteindre / allumer le port (shutdown / undo shutdown), vérifier l'absence d'une boucle réseau, acter la désactivation de STP, retirer / remettre les transceivers à chaque extrémité, lire le journal des switchs : aucune des vérifications basiques fonctionnent.

    Mon collègue armé de plus de 10 ans d'expérience dans le domaine me dit qu'il faut envoyer promener la théorie, ne pas chercher à comprendre et construire un nouveau circuit. Je pose donc deux jarretières neuves, je prends deux nouvelles fibres dans le tronçon mural, je prends deux autres transceivers dans le pot commun, etc. Et… Ça marche. Depuis plusieurs jours.

    Ho, bien sûr, on peut expliquer ça : peut-être qu'un transceiver est mort, prématurément ou non (absence de traçabilité, c'est possible qu'il ait déjà servi) ou peut-être que j'ai mis une poussière sur une fibre quand j'ai installé les transceivers 10 Gbps (sisi, il existe des opérations de nettoyage des extrémités d'une fibre optique) ou peut-être que la chaleur, couplée à une torsion aux extrémités de la fibre, a fait que les deux transceivers n'étaient plus alignés (ainsi, la lumière ne parvenait plus jusqu'à l'autre transceiver). On aurait pu prendre le temps de creuser, mais, parfois, la recherche de l'origine d'un problème prend beaucoup plus de temps que la mise en œuvre de son contournement (cf. les ninjas de l'informatique ne peuvent pas tout).

    Ce genre de situations me laisse perplexe : le résultat est atteint, mais c'est l'échec d'un raisonnement et de la méthode scientifique (car on change plusieurs éléments d'un coup) voire l'échec de l'ingénieur (son but est de comprendre, or, là, tout lui échappe). Comme quoi, même les humains payés pour l'être ne sont pas si rationnels ni compétents que cela. Comme d'hab, il faut détecter quand quelque chose sera impossible ou chronophage et contourner.

    Sat Dec 19 15:09:18 2020 - permalink -
    - http://shaarli.guiguishow.info/?DqaBaQ
  • ALAIN SOUCHON : Allo Maman bobo - YouTube

    J'suis mal en campagne, et mal en ville, peut-être un p'tit peu trop fragile. Allô maman bobo.
    […]
    Moi je voulais les sorties de port à la voile, la nuit barrer les étoiles. Moi les chevaux le révolver et le chapeau clown, la belle Peggy du saloon.
    J'suis mal en homme dur, et mal en p'tit cœur, peut-être un p'tit peu trop rêveur. Allô maman bobo.

    Énorme +1. Qui suis-je ? Trop attentionné et pas assez. Trop sensible et pas assez. Trop concerné / impliqué et pas assez. Trop pragmatique et trop rêveur. Comment se trouver ? Comment gérer ses contradictions ? Comment trouver sa place ? Vastes questions pour tant de tristesse. :'(

    Wed Dec 16 21:56:30 2020 - permalink -
    - https://www.youtube.com/watch?v=J9pld-Z-L9s
  • « Il faut que tout change pour que rien change »

    Un collègue répète souvent la phrase « il faut que tout change pour que rien change » à propos de la politique politicienne, des décisions circulaires (qui tournent en rond) de nos chefs, ou des comportements individuels tout en sourçant le film Le Guépard.

    Forcément, j'ai jeté un œil, et le dialogue est encore plus savoureux :

    ‒ Un Falconeri doit être avec nous, pour le Roi !
    ‒ Pour le Roi d'accord, mais lequel ? Mais quel roi ? Est-ce que tu peux me le dire ? Pour celui qui veut faire l'unité de l'Italie [ Ferninand ], oui. Mais le petit François [ François II ], Dieu le bénisse, non, mon oncle, non.
    ‒ Alors, tu t'imagines que le roi Piémontais qu'on appelle l'honnête homme vaut vraiment mieux que l'autre ? Le patois de Turin à la place du Napolitain, c'est tout.
    ‒ Tu préférerais peut-être la République de Don Peppino Mazzini ?
    ‒ Bah
    ‒ Crois-moi mon petit oncle : si nous ne nous mêlons pas de cette affaire, ils vont nous fabriquer la République en deux temps trois mouvements. Si nous voulons que tout reste pareil, il faut que nous changions tout. J'espère que tu me comprends ?

    Wed Dec 16 21:27:28 2020 - permalink -
    - http://shaarli.guiguishow.info/?2hzC8g
  • [ Joindre / fusionner plusieurs fichiers PDF en un seul fichier ] pdftk [Wiki ubuntu-fr]

    Pour joindre / fusionner plusieurs fichiers PDF en un seul fichier, j'utilise pdftk (paquet logiciel du même nom dans Debian) : pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf.

    Chez moi, pdfjoin / pdfjam fonctionnent jamais : au-delà du premier PDF, les PDF suivants sont orientés selon le format paysage alors qu'ils sont conçus au format portrait, comme le premier document…

    Sun Dec 13 19:45:26 2020 - permalink -
    - https://doc.ubuntu-fr.org/pdftk
  • Le général Pierre de Villiers : «Les Français réclament de l’autorité» - Le Parisien

    Tout devient tellement chaotique que les gens ressentent ce besoin, réclament de l'autorité.

    Ha bah oui, bien sûr, c'est une évidence.
    Ce qui est bien avec ce genre de propos, c'est que ça marche avec tout. Exemple : les Français réclament une sodomie par semaine. Les Françaises réclament un fist-fuck par mois.


    L’ancien chef d’Etat major des armées, qui avait démissionné avec fracas au début du quinquennat d’Emmanuel Macron, est inquiet.

    Rappel des faits : il a été poussé à la démission par Macron, son chef, après s'être opposé à lui, devant une commission de l'Assemblée et en des termes fleuris, au sujet du montant du budget 2017 de la Défonce. Macron lui répondra d'ailleurs « Je suis votre chef » devant tout le gratin de la Défonce (source). En plus d'être discrédité devant ses troufions, il n'avait pas d'autre choix que de démissionner, Macron l'aurait viré de toute façon (source).

    En gros, Pierre de Villiers a été viré pour insubordination, parce qu'il a refusé l'autorité dont il prétend aujourd'hui que c'est ce que les Français réclament.

    Soit il n'est pas français, soit il se moque du monde, soit il est incohérent (syndrome faites ce que je dis, pas ce que je fais). La première hypothèse est fausse. Dans les deux autres cas, une seule réponse s'impose : « casse-toi d'là, pov' con », les Français n'ont pas besoin d'un nouveau De Gaulle (on rappellera que ce mec, DG, a aussi bien bien bien foiré : tranquillement planqué à Londres, coup d'État, Constitution à son image qui nous pose problème aujourd'hui ‒ exécutif fort, institutions faibles et inefficace, personnification-starification du président, etc. ‒, le SAC, la non-gestion de la guerre d'Algérie et plus largement de la colonisation française, mai 68, etc.).

    Sat Dec 12 21:54:09 2020 - permalink -
    - https://www.leparisien.fr/politique/le-general-pierre-de-villiers-les-francais-reclament-de-l-autorite-05-12-2020-8412630.php
  • Lecteur partagé winwin + Ubuntu 20.04 = impossible de monter le partage Windows : Le logiciel a provoqué l'abandon de la connexion

    Résumé : impossible de se connecter à un lecteur réseau winwin / CIFS depuis une machine Ubuntu 20.04 ? Ajouter client min protocol=NT1 dans la section [global] du fichier /etc/samba/smb.conf. Attention : cela pose des problèmes de sécurité !

    Depuis le gestionnaire de fichiers d'une machine Ubuntu 20.04, impossible de se connecter à un serveur CIFS. L'erreur suivante s'affiche avant même de demander l'identifiant + domaine + mot de passe :

    Oups ! Quelque chose s'est mal passé.
    Message d'erreur non géré : impossible de monter le partage Windows : Le logiciel a provoqué l'abandon de la connexion.

    Si l'on essaye de s'y connecter avec le logiciel smbclient, on obtient l'erreur suivante avant toute demande d'identifiant :

    smbclient //serveur.monorganisation.exemple/nom_lecteur -u <identifiant>
    protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED

    En revanche, cela fonctionne toujours avec mount -t cifs //serveur.monorganisation.exemple/nom_lecteur /point/de/montage -o username=<identifiant>,vers=1.0.

    Il ne faut pas aller chercher bien loin : mount d'une part et smbclient et gvfs d'autre part ne doivent pas utiliser le même sous-système, et l'antique version 1 du protocle SMB doit être désactivée dans l'un d'eux. C'est en effet le cas depuis la version 4.11 de Samba… Qui est justement celle distribuée dans Ubuntu 20.04. On notera que le problème se présentera aux Debianeux avec Bullseye. ;)

    Un contournement est indiqué dans le journal des changements de Samba : il faut ajouter client min protocol=NT1 dans la section [global] du fichier /etc/samba/smb.conf. Pas besoin de redémarrer quoi que ce soit : la modification est immédiatement effective.

    SMBv1 est dépréciée + elle pose des problèmes de sécurité, donc il faut la réactiver avec précaution. Dans notre cas, c'est en attendant la fin de la migration vers notre nouveau NAS.

    Wed Dec 9 21:40:27 2020 - permalink -
    - http://shaarli.guiguishow.info/?t_5Brw
  • Les nouveaux automates La Poste ou la notation au détriment de la critique constructive

    Depuis quelques mois, l'interface des automates de La Poste (qui permettent de peser / affranchir le courrier et acheter divers produits) a changé. Désormais, à la fin, l'usager est invité à noter le service à l'aide de pictogrammes-smyleys colorés que j'ai toujours trouvé infantilisants.

    Noter, encore et toujours, comme si c'était un but en soi. Noter, évaluer, dormir. Frénétiquement. Il faut que le jugement fuse et puisse être exprimé sans contrainte. Point de démarches compliquées, il faut que la sanction tombe rapidement.

    Oui, la collecte de retours utilisateurs est intéressante. Néanmoins, cette façon de faire, à l'aide de pictogrammes simplistes, restreint fortement l'utilité desdits retours : La Poste ne saura pas ce qui fonde le mécontentement de l'usager. Qu'est-ce qui n'a pas plu ? L'interface de l'automate ? Une fonctionnalité manquante ? Le fait de devoir utiliser un automate ? Le prix d'un produit ? L'usager a-t-il allumé son cerveau en utilisant l'automate ? A-t-il pris du recul sur son coup de sang ? Bien sûr que non. Rien ne pourra être retiré des retours. Mais, c'est cool, le prolo aura pu s'exprimer, c'est tout ce qui compte, on l'aura soulagé, ouf. Le système ne sera pas amélioré, mais le prolo aura l'impression d'être écouté.

    Ce genre de démarche amoindrit la pensée et les processus de contestation. Cela stérilise la critique et l'auto-critique. Simplement car c'est moins engageant de noter avec des smyleys que d'envoyer un courrier de réclamation (tu notes, tu passes à autre chose). On oublie comment contester (comment construire un argumentaire et l'articuler, logique d'une argumentation, forme, etc.) au profit du simpliste « moi content / pas content ». C'est comme cela que l'on éteint des citoyens.

    Il sufffit de patienter une petite dizaines de secondes pour que la demande de notation disparaisse. Je vais continuer à faire ça. Ne surtout pas jouer à ce jeu malsain.

    Tue Dec 8 23:49:24 2020 - permalink -
    - http://shaarli.guiguishow.info/?AQOkZA
  • Pourquoi la girafe a-t-elle un long cou ?

    La girafe a un long cou car elle prend du recul. Elle a de grandes pattes car elle est orientée résultats, elle veut trouver une solution.

    2020, """"formation"""" obligatoire « Bien vivre le télétravail ».

    Rigole pas, c'est avec ton pognon qu'on finance ce genre de bullshit. Les charlatans ne perdent pas de temps, et les gaspilleurs qui les financent non plus.

    Tu vas me dire « tu prends une phrase dans une formation de plusieurs heures ».

    Même pas. Y'avait aussi :

    • la communication non-violente renommée OSBD (observation, sentiment, besoin, demande) étudiée sous l'aspect hausse de la productivité (on ne pratique pas la CNV afin d'atteindre une plus grande humanité, mais pour engendrer plus de fric en exploitant mieux les sous-fifres ‒ je fais le même reproche au team building ‒).

    • les exercices de reformulation permettant de faire passer la pilule (demande de comptes, d'avancement, inquisition dans l'organisation), auprès des sous-fifres ;

    • l'infantilisation : "il faut éviter le « tu » accusatoire. On ne dit pas « tu devais faire ceci pour telle date », mais « ceci devait être fait pour telle date »", le « on » / « nous » au lieu du « tu » ;

    • un "il faut se donner de la force !" avec les mouvements bullshit des bras ;

    • les analogies foireuses et les schémas tout claqués que tous les formateurs se partagent entre eux et recyclent.

    Je suis bien content d'avoir échappé à c'te connerie même si, au fond, je suis l'idiot : mieux vaut être payé à (faire semblant d')écouter c'te blague qu'à travailler, ça demande moins d'efforts.

    Allez, je vais être gentil : j'imagine que cette """"formation"""" est déjà plus acceptable (en termes de gaspillage de pognon) que les """"formations"""" sophrologie et autres gabegie en matière de formation professionnelle.

    Ça me rappelle l'habilitation électrique ou une formation sur les méthodes agiles : bullshit over bullshit for more bullshitness.

    Tant qu'il y aura des gens pour trouver ces """"formations"""" « pas si mal »…

    Tue Dec 8 23:10:58 2020 - permalink -
    - http://shaarli.guiguishow.info/?EvjiyQ
  • Les conditions propres aux concours externes | Portail de la Fonction publique

    Les concours externes sont réservés aux candidats possédant un niveau de diplôme déterminé. Les concours internes sont réservés aux agents déjà en poste dans une administration après une durée minimale de service. Les troisièmes concours sont ouverts aux personnes justifiant d’une activité professionnelle (dans le secteur privé, associatif) ou d’un mandat local pendant une durée déterminée. (source)

    Les conditions propres aux concours externes […] Aucune condition de diplôme n'est exigée pour les pères et mères qui élèvent ou ont élevé au moins trois enfants, ainsi que pour les sportifs de haut niveau, figurant sur une liste fixée chaque année par le ministre chargé de la jeunesse et des sports.

    Ça fait plusieurs fois que j'entends dire cela. C'est donc vrai.

    Quand j'y réfléchis, cette dispense peut avoir du sens : élever plusieurs gamins (les textes ne disent pas qu'il faut les avoir conçus, juste en avoir la charge), ça nécessite de gérer des ressources rares (affection, temps, argent, etc.), de gérer des conflits (X enfants veulent jouer avec le même jouet en même temps, par exemple), de bien gérer son temps (amener les gamins à l'école, puis à telle activité, chez le docteur, vaccins, chez les potes, etc.), gérer les priorités (genre si t'as bouclé ta journée en faisant tout ce que tu devais sauf nourrir les gamins, ben t'as perdu), gérer la frustration (aujourd'hui, je voulais prendre du temps pour moi, pas pour aller récupérer le gamin malade à l'école), etc. Tout ça ressemble très fortement à ce que l'on attend d'un employé, surtout s'il est ingénieur / cadre. Donc, si t'es capable de faire tout ça, oui, je peux admettre une équivalence à un diplôme.

    Dans nos sociétés où s'occuper des gosses est un travail délégué aux femmes, on peut trouver fort de café que les hommes puissent, eux aussi, obtenir la dérogation.

    Ce qui me dérange plus, c'est que l'on pose une définition (concours externes = réservés aux diplômés) et qu'on la contredit juste après (ha non en fait le concours réservé aux diplômés n'est pas réservé aux diplômés). Bullshit habituel, certes, mais ça reste un non-sens gonflant.

    Sat Dec 5 10:31:07 2020 - permalink -
    - https://www.fonction-publique.gouv.fr/score/concours/conditions-propres-aux-concours-externes
  • 🐶💘 Filtre d'amour #20816 - DTC Dans Ton Chat - BashFR - Humour perles citations

    Saka: Tain mais les meufs sur Tinder
    Saka: C'est quoi votre délire avec le filtre chien ?
    Saka: Vous comptez attirer qui ? Les zoophiles ?

    Énorme +1.

    Fri Dec 4 21:38:09 2020 - permalink -
    - https://danstonchat.com/20816.html
  • Statut LRAR = « Votre envoi a été remis en lot au destinataire. Nous attendons la confirmation de sa réception. »

    J'envoie une LRAR à un grand groupe commercial français. Je la suis sur le site web de La Poste.

    Ma LRAR est à l'étape « Votre envoi a été remis en lot au destinataire. Nous attendons la confirmation de sa réception. ». C'est la première fois que je vois ce statut. Si ça parle à quelqu'un du milieu, je suis preneur de sa signification exacte (en coulisse, pas le bullshit de façade).

    Je suis dubitatif : La Poste remet un lot de LRAR au groupe commercial et ce dernier doit confirmer qu'il a bien reçu le lot entier ? Il n'y a pas de suivi individualisé ? Ce n'est pas le facteur, en tant que tierce partie neutre, qui valide qu'il a bien remis le pli au destinataire ? N'est-ce pas pour cela que je paye ce service ?

    Fri Dec 4 19:16:16 2020 - permalink -
    - http://shaarli.guiguishow.info/?lv7a9A
  • ImageMagick security policy 'PDF' blocking conversion - Stack Overflow

    J'essaye d'intégrer une image au format png dans un document PDF avec ImageMagick : convert image.png document.pdf.

    Cette fois-ci, ça ne fonctionne pas : convert-im6.q16: attempt to perform an operation not allowed by the security policy 'PDF' @ error/constitute.c/IsCoderAuthorized/408.

    Réponse sur StackOverflow : suite à une vulnérabilité dans Ghostscript, et en attendant le correctif, l'une des mesures de mitigation consistait à désactiver le traitement de scripts PostScript lorsqu'on utilise ImageMagick en ajoutant des lignes dans /etc/ImageMagick-6/policy.xml. Si l'on a un Ghostscript à jour (gs --version >= 9.24), on pourrait désactiver la restriction visant PDF en commentant la ligne « <policy domain="coder" rights="none" pattern="PDF" /> » dans la configuration d'ImageMagick. La solution fonctionne, mais les risques ne sont pas précisés et l'histoire (c'est lié à la vulnérabilité X) ne colle pas avec la réalité de ce qui s'est passé dans Debian.



    Allons plus loin et découvrons quelques outils et horreurs de l'écosystème Debian.

    Plusieurs points me font tiquer : la vulnérabilité date de 2018, Debian stable embarque une version corrigée de Ghostscript depuis septembre 2018[*] a minima, et je pouvais encore convertir vers PDF il y a quelques mois. Conclusion : la configuration d'ImageMagick a été changée récemment. Quand ? Pourquoi puisque Ghostscript été corrigé à date ?

    ls -lh /etc/ImageMagick-6/policy.xml affiche le 25 juin 2020 comme date de dernière modification. Si tu l'as modifié avant de penser à faire un ls, tu peux vérifier l'horodatage dans le paquet binaire. (Quand le temps aura passé, il faudra récupérer la version dont je parle, 6.9.10.23+dfsg-2.1+deb10u1, depuis les archives des paquets Debian). Pour savoir que le fichier /etc/ImageMagick-6/policy.xml provient du paquet logiciel imagemagick-6-common : apt-file search /etc/ImageMagick-6/policy.xml ou dpkg -S /etc/ImageMagick-6/policy.xml.

    Ça ne prouve pas que la modification est apparue dans la version 6.9.10.23+dfsg-2.1+deb10u1 ? Il suffit de récupérer la version précédente, 6.9.10.23+dfsg-2.1, du paquet logiciel dans les archives de paquet de Debian. Le paquet date de mai 2019 et le fichier policy.xml ne contient pas les changements.

    J'aurais voulu utiliser git pour retrouver l'info, mais : 1) le dépôt Debian d'ImageMagick n'a pas de branche ni tag pour la version 6.9.10.23+dfsg-2.1+deb10u1 (c'est probablement normal : il s'agit d'une version publiée par l'équipe sécurité de Debian, pas par les mainteneurs Debian d'ImageMagick), ni pour la version 6.9.10.23+dfsg-2.1 ni pour la version 6.9.10.23+dfsg-2 et les tags de version 6.9.10-23 et 6.9.10.23-dfsg-1 ne contiennent pas les modifications de policy.xml. La version upstream ne contient pas non plus la modification. On trouve l'adresse du dépôt git Debian depuis la page du Package Tracker dédiée à ImageMagick. On trouve le dépôt officiel / upstream avec un moteur de recherche (ou dans les commits du dépôt Debian si l'on a l'œil et de la chance).

    Cette date de modification de policy.xml, 25 juin 2020, apparaît dans le journal des changements du paquet (/usr/share/doc/imagemagick-6-common/changelog.Debian.gz ou lien « Debian Changelog » dans la page dédiée au paquet) : tout plein de vulnérabilités ont été corrigées ce jour-là. Les bulletins de sécurité Debian associés sont le DSA-4712-1 et le DSA-4715-1 [**]. L'identifiant CVE de la vulnérabilité mentionnée sur StackOverflow n'est pas mentionné dans la liste (et pour cause, elle a été corrigée + elle concerne un autre logiciel, Ghotscript).

    On remarque que les vulnérabilités corrigées ce jour-là (25 juin 2020) ont été enregistrés en 2019 dans le CVE… Ça fait long la correction de la vulnérabilité. :O Il est donc plus probable que le changement dans le fichier policy.xml d'ImageMagick soit une mesure préventive afin de tenter de mitiger, à l'avance, les vulnérabilités liées à des logiciels tiers dont Ghostscript. Dans Debian stable, il y a actuellement 36 vulnérabilités non-corrigées dans ImageMagick.

    Sur un serveur web avec du contenu dynamique exposé sur Internet, je pense qu'il ne faut pas désactiver les restrictions définies dans policy.xml.

    En revanche, sur mon ordinateur de bureau, je peux désactiver la restriction PDF sereinement en la commentant avec <!-- --> (c'est comme ça qu'on commente en XML…) : 1) je ne télécharge pas n'importe quoi depuis n'importe où, que ce soit sur le web ou par email ou Jabber ou… ; 2) dans mon gestionnaire de fichiers, je désactive l'indexation et la prévisualisation des fichiers, qui sont toutes deux susceptibles de faire exécuter du PostScript dangereux dans mon dos.

    Bref, ce n'est pas simple faire court sans dire nawak / faire des raccourcis et ce n'est pas simple non plus d'approcher la vérité dans un écosystème aussi vaste que Debian…



    [*] Comment sais-je que Ghostscript n'est plus vulnérable depuis septembre 2018 ? Je cherche le numéro de CVE, donné sur StackOverflow, dans le Security Tracker de Debian (champ de recherche tout en bas). Je trouve le numéro du bulletin de sécurité Debian : DSA-4294-1. Je consulte les archives de la liste de diffusion debian-security-announce (si t'es l'admin d'un parc de machines Debian, je te conseille de t'y abonner) ou je cherche dans le dépôt git du security tracker de Debian (fonctionnalité « blame » pour identifier le commit qui a ajouté telle ligne dans tel fichier). Dans les deux cas, je trouve que la vulnérabilité CVE-2018-16509 dans Ghostscript a été corrigée le 16 septembre 2018.

    [**] Même raisonnement qu'au point précédent pour trouver ces bulletins de sécurité Debian.

    Sun Nov 29 20:59:54 2020 - permalink -
    - https://stackoverflow.com/questions/52998331/imagemagick-security-policy-pdf-blocking-conversion
  • Ceci expire le 19 novembre 1981 à 08 h 52

    Résumé : un entête HTTP Expires: Thu, 19 Nov 1981 08:52:00 GMT est déposé lors d'un appel à la fonction session_start() de PHP. Il s'agit d'une date symbolique (date de naissance ?) codée en dur dans le limitateur de cache de PHP. À quoi il sert, ce limitateur ? À éviter que des informations privées soient stockées dans un cache mutualisé entre plusieurs utilisateurs et fuitent (une date passée empêche la mise en cache). Quelques révisions de quelques-uns des entêtes HTTP relatifs à la mise en cache (« Cache-Control », « Expires », « Vary », « Pragma ») s'impose.



    Quand je testais h2c (HTTP/2 sans chiffrement) puis quand j'essayais de comprendre l'origine des cookies déposés par Shaarli, j'ai remarqué cet étrange entête HTTP lorsque je navigue sur mon shaarli : Expires: Thu, 19 Nov 1981 08:52:00 GMT.

    Au début, j'ai pensé à un défaut dans ma configuration de la mise en cache / compression / expiration dans Apache httpd. (J'ai écrit cette configuration il y a 8-10 ans en suivant les recommandations du Hollandais Volant, vache !). Néanmoins, cet en-tête n'apparaît pas sur mon blog qui partage pourtant la même configuration. Sans compter que ma configuration calcule la date d'expiration en additionnant la durée de validité souhaitée à la date actuelle, donc elle ne peut pas être dans le passé. Mauvaise piste.

    J'ai pensé que c'est le logiciel Shaarli qui dépose lui-même cet entête. grep -Ri montrera que ce n'est pas le cas. Peut-être qu'Apache httpd positionne cet entête quand les entêtes « Cache-Control » et/ou « Pragma », eux aussi liés à la mise en cache, sont déposés (comme c'est le cas avec Shaarli) ? Aucune idée.

    Je me pose, je cherche sur le web et je trouve une réponse : l'un des contributeurs à PHP a laissé sa date de naissance (ou celle d'une personne proche, on ne sait pas) dans le code. En effet, n'importe quelle date suffisamment loin dans le passé aura pour effet que les navigateurs web et les intermédiaires (comme les serveurs proxy / mandataires) ne mettront pas la page web en cache. Partant de là, autant mettre une date symbolique.

    Ce n'est pas tout à fait exact, car plusieurs entêtes influent sur la mise en cache : « Pragma », « Expires », et « Cache-Control ». « Pragma » s'adresse aux clients HTTP/1.0. Le comportement qu'il actionne dépend des implémentations (source). « Expires » s'adresse aux clients web et aux intermédiaires HTTP/1.0 et 1.1. « Cache-Control » apparaît réellement avec HTTP 1.1 (source, source) et il s'adresse aux clients web et aux intermédiaires. Il a la priorité sur « Expires ». Dans le cas présent, PHP dépose aussi un entête « Cache-Control » d'où mon « ce n'est pas tout à fait exact ».

    Du coup, lors d'un appel à la fonction session_start() de PHP, le limitateur de cache se met en place. En l'absence d'appel à la fonction session_cache_limiter(), il adopte le comportement défini par le paramètre de configuration (php.ini) « session.cache_limiter » (source), soit, par défaut « nocache » (source), c'est-à-dire que le navigateur web et les proxies ne doivent pas mettre en cache la page web (source). Or, on a vu, dans le code source de PHP, qu'en mode « private » et « nocache », le limitateur de cache positionne l'entête « Expires: Thu, 19 Nov 1981 08:52:00 GMT ». Tout s'explique.

    Pourquoi désactiver le cache lors de l'ouverture d'une session sur un site web ? Pour limiter le risque qu'une information privée (relative à un utilisateur) se retrouve dans un cache mutualisé entre plusieurs clients web que ce soit au niveau d'un navigateur web ou d'un intermédiaire (proxy) et qu'elle fuite donc vers d'autres utilisateurs. Dans la réalité, l'entête « Vary » permet de mettre en cache des versions différentes d'une même page si des entêtes diffèrent (source). Donc, il est possible de mettre en cache en fonction d'un cookie et ainsi éviter les fuites, mais c'est jouer avec le feu : un intermédiaire peut désobéir, avoir un bug dans son code de normalisation des requêtes (qui vise à augmenter le taux de pages mises en cache en détectant les variations d'entêtes qui ont, en réalité, la même signification / effet, donc qui conduiront à la génération de la même page), etc.

    On notera que d'autres logiciels déposent un entête « Expires » contenant une date symbolique. WordPress dépose un entête « Expires: Wed, 11 Jan 1984 05:00:00 GMT » quand on accède à son administration.

    Mon Nov 23 21:23:34 2020 - permalink -
    - http://shaarli.guiguishow.info/?KFjitA
Links per page: 20 50 100
◄Older
page 61 / 279
Newer►
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community