5945 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
◄Older
page 86 / 298
Newer►
  • Activation de HTTP/2 sur ce site

    Résumé : activation de HTTP/2 sur ce serveur, donc migration vers mpm_event (car HTTP/2 = requêtes en parallèle dans une même connexion ce que ne peut pas gérer mpm_prefork), donc migration du module PHP pour Apache httpd (on rappellera que la fondation Apache publie d'autres logiciels que httpd : Tomcat, Storm, Ant, Kafka, Hadoop, etc.) vers PHP-FPM (car le module n'est pas multithreadé), donc suppression du chroot Apache httpd devenu inutile, donc suppression du chroot BIND9 par homogénéité entre tous les logiciels que j'utilise. Je termine par un joli bug Apache httpd quand on utilise h2c (HTTP/2 sur une connexion non chiffrée). Je rappelle que les navigateurs web prennent en charge uniquement HTTP/2 over TLS (HTTPS/2, quoi).



    Il y a quelques mois, j'ai testé l'activation de la nouvelle version du protocole qui soutient le web, HTTP/2.

    J'en avais déduis que son fonctionnement « plusieurs requêtes dans une même connexion TCP / HTTP » nécessite plutôt un module de traitement Apache httpd qui gère réellement les requêtes parallèles. Exit mpm_prefork, bonjour mpm_event (recommandé par la doc' officielle d'Apache httpd). Sauf que, le module PHP pour Apache n'est pas utilisable avec mpm_event, justement car il n'est pas multi-tâches. Il faut donc passer à PHP-FPM.

    Par défaut, PHP-FPM n'est pas chrooté. Il peut l'être. Vu les emmerdes que ça m'a apporté au fil des ans (voir ici et là), ça en m'intéresse pas. Puisque PHP n'est plus un module d'Apache httpd, est-il encore utile de chrooter ce dernier ? Apache httpd va uniquement manipuler des fichiers statiques, pas de code dynamique avec des saisies utilisateur… Un chroot aura environ aucun intérêt.

    J'ai déjà dé-chrooté MySQL car c'était la galère. Si je dé-chroote Apache httpd, il restera BIND9. Chrooter BIND9 m'a posé aucun souci pendant 10 ans. Mais, d'une part, il n'est pas chrooté par défaut, et, d'autre part, je ne l'ai pas totalement chrooté dans les règles de l'art (un chroot doit être hermétique et auto-suffisant, sans lien vers l'extérieur). Virer le chroot de BIND9, c'est assurer l'homogénéité de fonctionnement entre les logiciels que j'utilise, ce qui simplifie la mémorisation de l'architecture technique. Le seul logiciel encore chrooté sera Postfix, mais il est livré ainsi et le chroot m'a jamais posé problème.

    Mon chroot MySQL aura tenu 7 ans, mes chroots Apache httpd et BIND9 auront tenu 10 ans. Le module PHP pour Apache httpd aura tenu plus de 10 ans. Pas si mal.

    Au final, j'ai :

    • Dé-chrooté BIND9 ;

    • Dé-chrooté Apache httpd ;

    • Migré du module PHP d'Apache httpd à PHP-FPM ;

    • Activé HTTP/2 dans Apache httpd ;


    Dé-chroot-er BIND9

    Aucune difficulté : il suffit de copier (cp -a) les fichiers de zone, les clés, les journaux de transferts de zones, etc. du chroot vers l'emplacement hors chroot (/etc/bind par défaut, mais j'ai l'habitude de séparer la configuration du contenu en mettant la conf' dans /etc et le contenu dans /var/named comme l'on sépare le contenu d'un site web dans /var/www de la configuration d'un serveur web dans /etc∕) puis de retirer l'option « -t » dans /etc/default/bind9 puis de redémarrer BIND9. Si aucune erreur est consignée dans le journal, on peut supprimer le chroot avec un rm -r.


    Dé-chroot-er Apache httpd

    Il faut copier (cp -a) le contenu des sites web (les DocumentRoot) depuis l'emplacement du chroot vers /var/www puis retirer les directives de configuration ChrootDir et LoadFile du fichier /etc/apache2/apache2.conf. Dans chaque hôte virtuel (aka virtualhost), il faut s'assurer que les directives DocumentRoot et Directory sont toujours valables (si le chroot était bien fait, elles devraient l'être).

    Côté module PHP pour Apache httpd, il faut annuler la bidouille du script de nettoyage régulier des sessions PHP et virer le paramétrage d'un magasin de certificats x509 interne au chroot plutôt que le magasin par défaut du système.

    Enfin, on redémarre Apache httpd. Si aucune erreur est consignée dans le journal, on peut supprimer le chroot avec un rm -r.


    Migrer du module PHP d'Apache httpd à PHP-FPM

    J'ai déjà tout écrit dans mon shaarli sur mon test de HTTP/2 donc je vais faire court.

    Il faut…

    Installer PHP-FPM avec apt-get install php-fpm.

    Dans la configuration des hôtes virtuels (aka virtualhosts) d'Apache httpd, il faut retirer les directives php_admin_value. Si l'on veut les conserver et que leur valeur est commune à tous les hôtes virtuels, on les déplace dans le php.ini (/etc/php/7.3/fpm/php.ini). Si non, il faut créer autant de pools que de virtualhosts et mettre les directives php_admin_value dans la définition d'un pool (/etc/php/7.3/fpm/pool.d/www.conf, par exemple).

    Remplacer prefork par event : a2dismod mpm_prefork && a2enmod mpm_event.

    Désactiver le module PHP et activer l'utilisation de PHP-FPM : a2dismod php7.3 && a2enconf php7.3-fpm. Si t'as plusieurs pools, il ne faut pas activer cette conf' généraliste, mais ajouter une directive de proxy fcgi spécifique (socket différente) à l'intérieur de chaque hôte virtuel.

    Redémarrer Apache httpd. Si aucune erreur est consignée dans le journal, on peut désinstaller le module PHP pour Apache httpd : apt-get autoremove --purge libapache2-mod-php libapache2-mod-php7.3 && rm -r /etc/php/7.3/apache2.

    Les erreurs / avertissements / notifications liées au code PHP (oubli d'un point virgule, mauvais échappement d'une chaîne de caractères, etc.) sont toujours consignées dans le fichier error.log d'un hôte virtuel. Les erreurs liées à PHP-FPM toutes pools confondus (nombre maximum de processus atteint, etc.) sont consignées dans le journal d'erreur de PHP, /var/log/php7.3-fpm.log). Il est possible d'avoir un journal par pool en surchargeant error_log dans la définition du pool.

    Par défaut, le pool www est éxecuté sous le compte utilisateur www-data, c'est-à-dire… celui du serveur web. Comme avec le module PHP pour Apache httpd. On peut changer ça (ainsi que les droits sur les fichiers des sites web) mais, boarf, la motivation me manque.


    Activer HTTP/2 dans Apache httpd

    J'ai déjà tout écrit dans mon shaarli sur mon test de HTTP/2 donc je vais faire court : a2enmod http2 && systemctl restart apache2.

    Je rappelle viteuf qu'il y a trois manières d'initier une connexion HTTP/2 : extension TLS ALPN, entête HTTP/1.1 « Upgrade: h2c » sur connexion non chiffrée ou entête HTTP/1.1 « HTTP Alternative Services ». **Les navigateurs web, notamment Mozilla Firefox, prennent en charge exclusivement la première méthode (HTTP/2 over TLS, HTTPS).


    Lulz

    On notera un truc rigolo dans le journal Apache httpd access.log de l'hôte virtuel lors d'un accès h2c (HTTP/2 sur une connexion en clair, non TLS, non chiffrée) :

    2001:db8::1 - - [01/Jan/1970:01:00:00 +0100] "GET / HTTP/2.0" 200 132608 "-" "curl/7.64.0"
    2001:db8::1 - - [15/Feb/2020:17:56:05 +0100] "GET / HTTP/1.1" 101 132733 "-" "curl/7.64.0"

    La connexion HTTP/2 qui a forcément eu lieu après la connexion HTTP/1.1 est consignée avant… et avec un horodatage inexact.

    Cette erreur se retrouve dans les entêtes transmis au client web :

    HTTP/1.1 101 Switching Protocols
    Upgrade: h2c
    Connection: Upgrade
    
    HTTP/2 200 
    date: Thu, 01 Jan 1970 00:00:00 GMT
    server: Apache
    expires: Thu, 19 Nov 1981 08:52:00 GMT
    cache-control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    pragma: no-cache
    last-modified: Sat, 15 Feb 2020 17:08:49 GMT
    vary: Accept-Encoding,User-Agent
    x-xss-protection: 1; mode=block
    x-content-type-options: nosniff
    content-type: text/html; charset=utf-8

    Évidemment, cela a un impact sur la durée du cache côté client web et sur tout ce qui utilise la date… ÉDIT DU 23/11/2020 À 22 H 40 : Cela impacte le calcul de la date dans l'entête « Expire » sur une image, par exemple, mais, dans cet exemple précis, la date qui apparaît dans l'entête « Expires » n'est pas une erreur de calcul liée à la date faussée par le bug h2c, mais une date symbolique passée choisie par les développeurs de PHP pour désactiver la mise en cache lors de l'ouverture d'une session sur un site web. FIN DE L'ÉDIT.

    Fri May 22 15:13:52 2020 - permalink -
    - http://shaarli.guiguishow.info/?j22Ejw
  • Configurer l'horloge et NTP sur des switchs HP

    Comware 5

    Exemple de matériels : HP 5120 ou HP 5800.


    Fuseau horaire

    sys
    clock timezone Paris add 01:00:00

    Aucune contraire sur le nom du fuseau (« Paris », dans mon exemple). On pourrait aussi le nommer par son vrai nom : CET.


    Heure d'été

    sys
    clock summer-time paris-ete repeating 02:00:00 2020 March last Sunday 03:00:00 2020 October last Sunday 01:00:00

    Aucune contrainte sur le nom (« paris-ete », dans mon exemple). On pourrait aussi le nommer par son vrai nom : CEST.

    Ça se lit : tous les ans (« repeating ») à partir de 2020, à partir du dernier dimanche du mois de mars (« March last Sunday ») à 2 h du mat' (« 02:00:00 ») et jusqu'au dernier dimanche d'octobre (« October last Sunday ») à 3 h du mat' (« 03:00:00 »), ajouter une heure (« 01:00:00 »).

    L'aide de la ligne de commande nous incite plutôt à préciser la date (27/03, 27/10) de la bascule, mais vu qu'elle change chaque année, ça n'est pas pertinent.

    Je me suis questionné : faut-il fixer le point de départ sur l'année en cours (2020) ou l'année de fabrication du matériel ? En effet, à froid, le switch reviendra sur sa date de fabrication. Il n'appliquera donc pas l'heure d'été. Pas grave. Une fois que NTP aura synchronisé l'horloge (on rappelle que NTP bosse uniquement en UTC, il ignore les fuseaux horaires et autres fioritures), l'heure d'été sera appliquée.


    NTP

    sys
    ntp-service unicast-server <nom_ou_adresse_IP_du_serveur> [ options éventuelles comme l'interface réseau source, la version de NTP, la priorité du serveur, etc.]

    Contrairement à une machine UNIX équipée du démon ntpd de l'ISC qui interdit une correction de l'horloge quand l'écart avec le serveur de temps est trop important, un switch HP se synchronisera même s'il a des années de retard. On lit très souvent le contraire, mais c'est inexact.


    Vérifier

    Horloge / fuseau horaire / heure d'été : display clock.

    NTP : display ntp-service sessions.


    Comware 7

    Exemple de matériels : HP 5130, HP 5510 ou HP 6600.


    Fuseau horaire

    Identique à Comware 5.


    Heure d'été

    sys
    clock summer-time paris-ete 02:00:00 March last Sunday 03:00:00 October last Sunday 01:00:00

    Ça se lit comme sur Comware 5, c'est simplement plus concis.


    NTP

    sys
    ntp-service unicast-server <nom_ou_adresse_IP_du_serveur> [ options éventuelles comme interface réseau source, version de NTP, priorité du serveur, etc.]
    ntp-service enable

    Attention : l'état du client NTP peut rester bloqué sur « INIT » pendant une à deux minutes durant lesquelles aucune requête est faite au serveur NTP. Ce comportement est troublant, mais il faut attendre.

    Contrairement à une machine UNIX équipée du démon ntpd de l'ISC qui interdit une correction de l'horloge quand l'écart avec le serveur de temps est trop important, un switch HP se synchronisera même s'il a des années de retard. On lit très souvent le contraire, mais c'est inexact.


    Vérifier

    Comme sur Comware 5.

    Sat May 16 18:12:34 2020 - permalink -
    - http://shaarli.guiguishow.info/?ll2aIQ
  • Cisco ASDM : « Unable to launch device manager from vpn.mycompagny.example »

    On a un VPN Cisco ASA. On voudrait changer sa configuration depuis chez soi. On pourrait le faire en CLI (ligne de commande, via SSH), mais la création d'un compte utilisateur et l'association de règles de filtrage est pénible à comprendre. Pas envie de faire un effort pour un équipement en fin de vie. Comme d'habitude, utilisons ASDM (Adaptive Security Device Manager), une GUI (interface graphique) sous forme d'applet java.

    D'habitude, ça fonctionne, mais là, après la saisie de l'identifiant et du mot de passe, ça coince : Unable to launch device manager from vpn.mycompagny.example.

    Il n'est pas difficile de deviner qu'on se fait dégager par une règle de filtrage. Hé oui, contrairement à d'habitude, on est côté WAN, la joie du télétravail. Il est normal de réserver l'administration d'un équipement (réseau ou non) à des connexions internes. Établir le VPN avant de tenter une connexion changera rien : le trafic à destination du VPN n'est pas encapsulé dans le VPN, sinon ça ferait une boucle infinie. ;)

    On pourrait passer en CLI pour s'autoriser dans l'ACL appliquée sur l'interface WAN. Boarf. C'est un coup à oublier de la refermer. On aurait dû prévoir une interface réseau d'administration dédiée. Comme ça, une connexion à travers le VPN aurait fonctionné. Mais on ne l'a pas fait, on ne va pas revenir sur ça sur un équipement en fin de vie.

    Utilisons la fonctionnalité port forwarding de SSH ?

    En pratique :

    • Établir le VPN ;

    • sudo ssh -L443:<IP_du VPN>:443 <identifiant>@<nom_serveur_à_l'intérieur_du_réseau> ;

    • echo -e '\n127.0.0.1\tvpn.mycompagny.example' | sudo tee -a /etc/hosts ;

    • javaws "https://vpn.mycompagny.example/admin/public/asdm.jnlp".

    Après usage, ne pas oublier de nettoyer : sudo sed -i '/vpn.mycompagny.example/d' /etc/hosts.

    Sat May 16 17:03:52 2020 - permalink -
    - http://shaarli.guiguishow.info/?oLV1uQ
  • Dessin : Framasoft et "le monde d'après"

    Blanquer : ‒ Franchement, ces services libres, gratuits et performants c'était fabuleux. On passera un contrat avec Microsoft en insistant pour qu'ils fassent aussi bien.

    Dessin de Flock, voir https://www.nextinpact.com/news/108965-flock-se-deconfine.htm .

    Sat May 9 14:50:59 2020 - permalink -
    - https://cdn2.nextinpact.com/images/bd/news/175862.png
  • Socle Interministériel de Logiciels Libres - Liens en vrac de sebsauvage - GuiGui's Show - ~ sweet ~

    Ce qui me fait dire que c'est de l'intox, c'est que je le vois revenir avec l'argument du : "si ça se paye pas, ça tue le business". C'est tendancieux et généralement faux, non ?
    Malgré de bonnes solutions libres (et souvent gratuites), je ne vois pas de domaine ou le business ne peux plus jouer le game. Au contraire même peut-être. (c'est un ressenti j'ai pas fait d'étude de marché lol).

    Je ne discuterai pas des non arguments "pas sûr, pas pro", etc. : ils ont été démontés trouzemille fois.
    Considérer que libre = gratuit, c'est partir sur de mauvaises bases, de toute façon. J'essaye de financer mes logiciels libres, même si c'est souvent impossible pour les petits logiciels qui n'ont pas de mécanismes de collecte de fonds et pour les logiciels piliers / cachés (FreeBSD / PF pour PFSense, par exemple. Le fait de payer une prestation + licence PFSense ne fait pas automatiquement remonter du pognon à FreeBSD -> il faut demander / faire pression sur la société commerciale éditrice de PFSense pour qu'elle le fasse systématiquement). J'essaye que mon employeur en fasse autant : BIRD, Proxmox, OpenVPN, PFSense, Asterisk, etc. tu peux acheter du support ou des licences à la société commerciale éditrice. Donc, oui, le libre, ça rogne potentiellement des parts de marchés aux autres solutions, mais comme autre tout produit ou service, libre ou non, quoi, ça n'empêche pas le business. Ça vit de modèles économiques différents (don, vente de support / prestations intellectuelles, mutualisation par la demande, licences, fonctionnalités supplémentaires, etc.). Donc, là encore, ce n'est pas le sujet, et encore moins pour les salariés puisque l'argent ne sortira pas de leur poche.


    ça n'a pas tardé avant d'avoir des demandes auprès des managers... sans réponses. (alors qu'on nous casse les couilles toute l'année pour "se former"). Faut se former mais faut pas que ça coûte, surtout en temps, la ressource qui vaut plus cher que ton petit cul de travailleur. Bref, nos managers ne se mettent pas au niveau qu'il nous impose (comment les respecter à terme ?)...

    J'ai aussi entendu ça : "il faut se former afin de continuer à produire de la valeur qui sera captée par l'employeur, mais ça serait bien de ne pas s'absenter pour autant parce que sinon la société commerciale perd du fric". Tu le sens, le bel avenir des MOOC et autres formations continues à distance que tu pourras faire en dehors du temps de travail ? :))))


    Je rejoins le râlage de seb (ou de Framasoft, April, LQDN, ...) sur la priorité : que les pouvoirs publics ne soient pas sur ce registre affectif, certains fonctionnaires ont une responsabilité pour proposer de nouvelles solutions et ils doivent avoir les moyens en conséquences ! Le discours officiel est aussi une priorité : valoriser équitablement les solutions et LAISSER UNE MARGE aux utilisateurs.

    Personnellement, je préfère m'attaquer aux serveurs de la fonction publique et à leurs logiciels : il y a énormément plus de données personnelles et d'intelligence de ce côté-là que sur le PC de Ginette qui, soit se connecte aux logiciels distants, soit saisit des documents qui seront par nature publics (compte-rendu du Conseil d'Administration, acte de nomination, etc.). En situation de sous-effectif voulu (on dégrade le service en privant de ressources ceux qui le font tourner -> le citoyen râle -> on impose l'externalisation en expliquant que ça va résoudre tous les problèmes), ça me semble plus pertinent de prioriser cet aspect-là. Laisser une marge, ça consiste aussi à ne pas râler en permanence, à ne pas vouloir imposer le libre dans le public (ce qui était la position de l'April sur la loi pour une République numérique), et à accepter qu'un utilisateur te dise "je ne veux pas de ta merde, même si c'est dans le référentiel bidule du ministère machin".

    Fri May 8 13:30:47 2020 - permalink -
    - https://dukeart.netlib.re/shaarli/?2W2i7Q
  • Socle Interministériel de Logiciels Libres - Liens en vrac de sebsauvage - GuiGui's Show - Ban's links

    Je vais faire mon libriste au melon démesuré, mais pour ce dernier point je pense que tu ne couvre pas l'ensemble du problème qui est aussi en grande partie que les "alternatives" libres ne sont pas le même logiciel, et ne s'uitlisent pas pareil. Au final la qualité de l'outil n'a que peu de rapport avec la question, la question est beaucoup que la personne est là pour faire son taf, pas pour prendre en main quelque chose de nouveau.

    C'est vrai, mais il y a une limite à ce raisonnement : pour qu'un gus prenne sur lui l'étude d'un autre logiciel (libre ou pas, ce n'est pas mon sujet), il faut que celui-ci soit techniquement ou qualitativement supérieur à la norme. Or, winwin versus nux ou MS Office versus LibreOffice, y'a pas de différence quand t'es une secrétaire. Les deux vont faire chier (si, nux peut faire chier), les deux permettent de saisir le courrier demandé par le boss, sur les fonctions de base, GIMP apporte rien par rapport à Photoshop (et inversement), etc. C'est juste une guéguerre de chapelles (genre en vrai winwin, quand t'as compris la logique, que tu t'es formé, que t'as les bons outils d'administration et les bonnes pratiques, ça juste fonctionne aussi bien que nux, faut arrêter de mentir). Donc quand tu vois l'ordi comme un simple outil pour faire le taff demandé afin de toucher ton salaire, t'en a rien à faire d'une alternative tant que ça t'apporte rien, que ça ne te simplifie pas la vie, que ça ne te permet pas d'aller plus vite (et même, si le boss s'en rend compte et qu'il te file plus de taff, t'as rien gagné, donc, parfois, faut pas chercher à optimiser son temps), etc. En gros, si je devais faire plus court : je ne blâme pas le salarié lambda, il a raison de ne pas se poser de questions, car, dans l'écrasante majorité des cas, ça lui apportera aucun avantage. C'est mon point de divergence avec toi.

    Tous les logiciels métiers n'existent pas en logiciels libres utilisables par le commun des mortels (tu ne fais pas de la comptabilité sérieuse ‒ = comptes à rendre ‒ à grande échelle ‒ = Grande Entreprise ‒ avec Ledger, GNUCash ou Odoo, par exemple) et inversement, y'a des domaines ou le libre remplace avantageusement la bouse privatrice (genre pour piloter certaines machines dans les laboratoires de recherche ou pour de l'enseignement très ciblé).

    Dans le cas que j'ai présenté, il me semble que cette personne a essayé GIMP (elle en donne l'impression en tout cas), d'où l'ampleur de sa réaction outrée "arrêtez de vouloir m'apprendre mon métier alors que vous avez jamais utilisé GIMP pour effectuer mon travail !" (ce qui est vrai). Du coup, j'en arrive à la conclusion qu'il y a plusieurs manières de faire une chose et que, si cette personne n'a pas accroché à GIMP, ça sert à rien de la forcer ni de râler ni de la former. C'est dommage et tout ce qu'on veut, mais elle a fait son choix.

    Et, dans les deux cas, on retombe sur les blocages formation et notoriété que j'énonce dans mon premier shaarli.

    Fri May 8 12:52:16 2020 - permalink -
    - https://ban.netlib.re/shaarli/?jt3lEg
  • Socle Interministériel de Logiciels Libres - Liens en vrac de sebsauvage

    Je pose ça là, le jour où quelqu'un me montre encore des réticences à utiliser du Logiciel Libre dans le public sous prétexte que "gggnnn c'est pas professionnel gggnnn c'est pas approuvé ggggnnn c'est du libre donc le code source et lisible donc c'est piratable et c'est pas sûr aaannnnn".

    Je ne comprends pas où tu veux en venir. Ce socle vaut rien. Il existe aucune obligation d'y recourir. C'est un annuaire comme un autre, on ne peut pas s'en servir comme argument d'autorité, ça ne passe pas dans les administrations (je parle en connaissance du terrain, tu ne feras pas changer de cap un administrateur système des fonctions publiques en sortant ce référentiel, c'est totalement hors sujet à ses yeux).

    D'ailleurs, à côté de ça, les groupements d'intérêt public en charge de mutualisations logicielles / collaborations qui dépendent directement des ministères ne se gênent pas pour imposer du Oracle et autres merveilles privatrices afin d'utiliser leur solution mutualisée quasi-obligatoire, donc bon…

    Enfin, quand tu vois la DINUM qui veut généraliser Qwant, tu comprends que ce genre de référentiel n'est pas réalisé uniquement sur des qualités techniques, mais aussi sur des enjeux politiciens, et, là, tu deviens prudent.



    Je ne sais pas d'où viennent les propos "libre = piratable = pas sûr = pas pro", mais je présume qu'ils sont issus d'une causerie stérile entre informaticiens. Les utilisateurs ne disent pas ça. Ils n'ont même pas les compétences pour affirmer ce genre de choses, et surtout, ils s'en fichent complet et à raison. Tu ne vas pas demander à Jojo de savoir comment fonctionne la machine-outils dans l'atelier et de s'il existe des alternatives éthiques, gnagna. Jojo est payé pour suivre un algorithme (presser le bouton bleu, puis faire ci, puis le bouton triangulaire, puis…), rien à foutre du reste. De même, Ginette s'en fout de comment marche son ordinateur : elle est là pour empocher une somme de pognon précise en faisant un taff précis, comme chacun d'entre nous, salarié ou non. L'ordinateur (ou la machine-outils) est seulement un outil, un moyen pour parvenir à une fin.

    Durant des années, des collègues ont sincèrement essayé de promouvoir un système GNU/Linux Ubuntu (totalement géré par le service informatique, comme les winwin qu'on distribue) et LibreOffice : la greffe n'a pas pris. Et les """"arguments"""" sont loin d'être une réflexion métaphysique sur le sens du libre, sa sécurité, blablabla. On a eu les retours suivants (j'exagère un peu, mais dans leurs tickets d'assistance, tu lis vraiment la colère, matérialisée, entre autres, par beaucoup de points d'exclamation) :

    • "Je me suis fait chier à faire une formation MS Office, donc je veux un MS Office, faîtes pas chier !". Pour ceux que ça intéresse : oui, on propose des formations MS Office et des formations LibreOffice. Oui, la RH les annonce en même temps sur le même canal. Simplement, LibreOffice, ça parle à personne. Ceux qui lisent quand même l'offre de formation ne veulent pas prendre le risque d'apprendre un truc minoritaire qu'ils ne sont pas sûrs de pouvoir valoriser dans le temps (tout le monde dans le public n'est pas fonctionnaire, pour rappel) ;

    • "J'ai le droit à mon MS Office, comme j'ai le droit à un bureau et à une chaise. Ça fait partie de mon environnement de travail, de mes conditions de travail, point ! Faites pas chier avec votre radinerie !" ;

    • "Faire du graphisme / de la retouche avec GIMP ?! Vous êtes sérieux ?! Vous avez déjà essayé, au moins ?! Faites pas chier, je veux mon Mac, mon Illustrator et mon Photoshop. Laissez-moi exercer mon métier !".

    Bref, arrêtons d'utiliser nos arguments d'informaticiens (libre = pas sûr, pas pro, gnagna), le débat avec les utilisateurs n'est pas du tout sur ce terrain. On est sur de l'affect (comme la deuxième personne sus-citée qui se sentait clairement dévalorisée de ne pas avoir de MS Office : pour elle, le prix qu'on met dans son environnement de travail est un indicateur de l'attention qu'on lui prête, et quand t'es payée que dalle sans possibilité d'évolution, je comprend qu'on se rattache à ce genre de choses), sur un effet de réseau / marketing (premier point), et sur un manque d'alternatives crédibles sur certains métiers couplé à un melon des libristes qui sont convaincus que leur solution fait le taff sans connaître celui de la personne à laquelle ils proposent une alternative trop-trop meilleure.

    Thu May 7 13:57:27 2020 - permalink -
    - https://sebsauvage.net/links/?VG4Y8A
  • L'ergonomie de PeerTube

    Pendant mes repas, je regarde des vidéos sur le web. Si une vidéo n'est pas terminée, j'en reprends la lecture au repas suivant.

    Sur ce point, PeerTube est gonflant. Si tu regardes une vidéo à un repas, que t'arrêtes la lecture, que tu veux la reprendre des heures après (autres repas), ça lit le petit bout de vidéo qui avait été mis en cache puis ça s'arrête et ça mouline indéfiniment dans le vide, ça ne charge pas le segment suivant de la vidéo. Je précise que je ne change pas d'adresse IP.

    Il faut mémoriser l'estampille temporelle, rafraîchir la page (F5) puis cliquer pour lire. Ça lit le début de la vidéo. Il faut se déplacer jusqu'à l'estampille temporelle. PeerTube fait semblant de charger… mais continue de lire le début de la vidéo. Il faut à nouveau se déplacer sur l'estampille temporelle, et, là, ça charge et ça lit le bon segment, youpi.

    C'est comme ça à chaque repas, sur plusieurs instances PeerTube.

    En comparaison, YouTube gère la reprise. Ça interrompt la lecture après avoir lu le segment resté en cache, mais au moins, ça charge et lit la suite de la vidéo automatiquement. Et si jamais un F5 s'avère nécessaire, la vidéo reprend là où on avait arrêté.

    C'est le genre de truc pénible.

    Thu May 7 13:07:44 2020 - permalink -
    - http://shaarli.guiguishow.info/?_X7d_w
  • Opposée au plan de déconfinement, la députée Martine Wonner exclue de La République en marche - Le bazar de mydjey - GuiGui's Show - ~ sweet ~

    Je partage ton analyse mais je suis partagé sur ta conclusion :).

    Je pense que tu te trompes (à moitié) sur ce que tu penses être ma conclusion. Elle n'est pas « c'est comme ça à l'état de nature, donc faisons rien », mais plutôt « arrêtons de blâmer un groupe social en particulier (LREM, PS, UMP, peu importe, tous ont pratiqué l'exclusion punitive) alors que les autres groupes sociaux dont nous sommes membres (emploi, famille, potes, associations) ont la même pratique ». Si tous les groupes sociaux observables ont cette pratique d'exclusion (et je rappelle que la prison est basée sur cette idée d'exclusion protectrice), alors blâmer un groupe qui la pratique est vain, ce n'est pas le bon discriminant pour porter une critique de ce groupe social.


    Et surtout je sais que l'individu peut changer le groupe. Pour le pire te le meilleur. En fait y'a une balance ou un aller-retour entre ce qu'apportent les personnes au collectif et ce qu'impose le groupe à ses membres. AMHA.

    Ça, c'est dans la théorie. Dans la pratique, il ne faut pas que les individus remuent trop / dépassent l'épaisseur du trait / partent dans tous les sens en permanence… sinon, par définition, il n'y a plus de cohérence, donc plus de groupe. C'est tout le paradoxe. Pour moi, l'injonction à être soi-même au sein d'un groupe (quel qu'il soit) est un mensonge (mais il est nécessaire), ça ne peut pas fonctionner sauf si peu d'individus sont eux-mêmes (les autres pourront alors tolérer ces orignaux) ou que les membres du groupe sont très similaires (et dans ce cas… ils ne sortiront pas de la norme du groupe, par définition même).

    Je pense qu'il existe un bloqueur au niveau de l'espèce humaine afin que tous les membres de l'espèce ne désirent pas tout changer en même temps tout le temps. Je pense que ce bloqueur est facteur de stabilité, et donc qu'il est l'un des facteurs de la survie de l'espèce. C'est la grille de lecture que j'applique aux combats militants. Ils se plaignent (et je fais partie du lot) que les gens ne s'impliquent pas et préfèrent regarder Netflix, gagnagna. C'est une mauvaise lecture. En vrai, la masse est garante de la stabilité de la société en mode "ouais, ouais, testez votre idée entre vous, là, on vous regarde" (si ça foire, une petite partie de l'espèce sera sacrifiée dans le pire des scénarios).

    Il faut bien se dire que si tout le monde bougeait sur tous les sujets possibles, ça serait impossible de suivre tous ces changements (déjà que, dans notre monde où relativement peu d'acteurs bougent, on n'arrive pas à suivre tous les projets en cours à notre taff, ni les projets de lois, les positions des associations et de la société civile, etc. …) et, surtout, chacun aurait plus de boulot (hé oui, car la personne qui milite avec toi sur la vie privée par exemple, ne partage pas ta vision de la société concernant l'agriculture, et comme elle se bouge… elle te nuit, donc va falloir bouger aussi sur les sujets autour de l'agriculture), ça serait juste éreintant.

    Thu May 7 12:08:32 2020 - permalink -
    - https://dukeart.netlib.re/shaarli/?KvTEZA
  • L’Assemblée rassure les élus sur leur responsabilité pénale et désavoue le Sénat - Page 1 | Mediapart - Le bazar de mydjey

    De leur aveu même, ils ont compris la tempête citoyenne qui suivrait si ce projet de loi devait être adopté...
    […]
    De l'utilité des contre-pouvoirs dans la société civile ...

    C'est du pipeau.

    « Rassurer les élus », ça veut dire la même chose que loi d'amnistie. C'est formulé différemment, c'est tout. La différence, c'est que rassurer les élus, ça ne sera pas matérialisé par une loi, donc ça sera informel, inattaquable, propre, chacun, y compris les juges, fera ce qu'il a à faire, on ne se blesse pas entre gens de la caste. Ça se passera donc comme d'habitude : les personnes prétendument responsables s'en sortiront tranquillou. C'est toujours comme ça : un chef (au travail ou en associatif), un parent (vis-à-vis d'un enfant mineur), un politicien, etc. rend jamais de compte. Christine Lagarde dans l'affaire Tapie, les maires / députés / ministres qui tapent dans la caisse, les patrons qui ont aucun compte à rendre sur leur mauvaise gestion, Didier Lombard et compagnie pas condamnés (sursis ou peine aménageable), etc. Le système est conçu pour qu'un """"responsable"""" n'ait pas à rendre de comptes et pour qu'il ne soit pas inquiété. La justice, les contraintes, c'est bon pour les grouillots de base, eux auront droit à la violence policière (qui n'existe pas, dixit Macron), à la violence symbolique d'un procès (qui n'existe pas non plus, c'est une invention du méchant gauchiste Bourdieu), et aux comparutions immédiates (qui, quand tu sais en quoi ça consiste te font passer l'envie de nommer ça « Justice »). Ho, parfois on fait un exemple afin de rassasier la plèbe et de lui faire verser une petite larme "snif, les méchants pas beaux sont sanctionnés, la Justice fonctionne, je suis trop heureux de vivre dans un tel système, snif".

    Quant à la « tempête citoyenne »… Le gouvernement était contre l'amendement du Sénat et il a émis un avis défavorable lors de son examen. Donc, avant que la « tempête citoyenne » débute, le gouvernement était déjà contre. Il ne l'est pas par conviction, mais par certitude que c'était un coup électoraliste du Sénat et qu'il est inutile (loi Fauchon depuis 20 ans + ce que j'ai écrit au premier paragraphe c'est-à-dire que l'amnistie existe déjà de fait pour les trouducs prétendument responsables, c'est l'essence même de leur statut, c'est inclus dans le pack). Ça se saurait si les « tempêtes citoyennes » faisaient reculer les politiciens (loi Renseignement 2015, loi Travail 2017, etc. où les mobilisations étaient plus fortes que sur ça).

    Wed May 6 23:26:10 2020 - permalink -
    - https://shaarli.mydjey.eu/?xZvfYA
  • Opposée au plan de déconfinement, la députée Martine Wonner exclue de La République en marche - Le bazar de mydjey

    Soit t'es godillot, soit tu te barres. Interdit de voter en son âme et conscience chez LREM. Si tu n'es pas du même avis que le Roy et que tu oses le dire au travers d'un vote --> la porte

    C'est un reproche que je vois souvent formulé à l'encontre des partis politiques alors que ce mécanisme ("si t'es pas d'accord avec la majorité du groupe, tu te casses ou, à défaut, on va t'exclure soit formellement, soit de fait") est aussi en vigueur dans un emploi, dans une association, avec des potes (j'ai pas écrit « amis »), dans la famille, etc. C'est naturel : tout remettre en question en permanence contre le groupe rend ce groupe vulnérable en plus d'être juste chiant et épuisant. Il faut une forme de cohésion dans un groupe social, et ça passe par un mensonge / récit commun, des codes communs, des pratiques communes et un respect individuel des décisions du groupe. C'est la pensée de meute commune à tout groupe social.

    Wed May 6 23:21:32 2020 - permalink -
    - https://shaarli.mydjey.eu/?V5qrUQ
  • Re: Tout ça pour des chaussures…

    Shaarli originel.



    @Abel :

    Dans les chaussures il ne faut pas se tromper la qualité ça se paye forcement . Je ne parle pas de la marque, mais de la qualité du produit .

    Je suis d'accord, mais j'étais convaincu que la différence de prix entre mon modèle à 25 € et des modèles vendus plus cher allait dans la marque. C'était un des points de blocage.


    Sans faire de publicité , pour ma part j’achète depuis au moins 30 ans des tennis de la marque TBS qui sont increvables . Elles sont fabriquées en France , en cuir et d'un confort que je n'ai jamais retrouvé dans d'autres chaussures .

    Increvable comment ? Elles te font combien de temps pour quel usage ?

    Quand j'ai lu « cuir », je me suis dit « nope, nope, nope ». Mais ils ont un modèle de baskets en cuir qui ne me répugne pas, donc à voir.

    Fabriquées en France, faudra que je vérifie, ils en parlent très peu sur le site web, ça sent le "conçues en France, fabriquées en Italie". Déjà, le site web est hébergé chez Amazon…



    @Orangina Rouge :

    Le week-end/en balade, c'est des chaussures de "marche sportive" (le feu modèle "propulse run 400 newfeel") : c'est ma 3e paires depuis… 6 ? 7 ans ?

    Puisque ce produit n'existe plus, par quoi l'as-tu / vas-tu le remplacer ?

    Après, Decathlon = famille Mulliez = je ne suis pas fan.


    Au boulot c'est des "Clarks Desert Boots"

    Pas pour moi du tout. :-


    bon sauf mon modèle en cuir noir, le daim couleur crème doit être mieux

    Elles ?



    @OpenNews :

    La solution a ton problème de semelles s'appelle vibram. Une bonne référence en semelle de qualité.

    Tu parles bien des semelles extérieures que Vibram peut greffer sur des chaussures existantes ?


    Niveau budget on est à environ 11€ / mois avant l'upgrade vibram et à 8,5€/mois après réparation mais elles vont me durer encore plusieurs mois facile.

    Comment ça peut être moins cher après alors que t'as payé chaussures + semelle ?


    pour un bon cordonnier je recommande dossman à strasbourg qui monte du vibram et travaille par internet

    Je note.



    @Strak :

    J'en ai lu une bonne partie et j'ai souri car je me retrouve pas mal dans ce discours autour de la chaussure ! :)
    Pendant très longtemps, j'achetais l'exact même modèle quand mes pompes actuelles étaient défoncées, car je m'en foutais grave...

    Je me sens moins seul. \o/

    Mon May 4 20:14:25 2020 - permalink -
    - http://shaarli.guiguishow.info/?k2lD2g
  • Si session graphique difficile / impossible à ouvrir après migration de GNOME 3 vers MATE : rm ~/.xinitrc - GuiGui's Show - ~ sweet ~ - GuiGui's Show - ~ sweet ~

    Arf, en effet je travaille sur le site ça impacte un peu l'accès le temps que ça se tasse.

    Hé bah bravo ! :P


    Bon si tu as déjà testé alors je comprends, c'est très particulier et il vaut mieux éviter les gênes. Chacun son truc :).

    C'est ça. ^^


    Du coup l'hommage c'est que sur ma capture, il y a un onglet du navigateur avec ton logo, voilou :)

    Ho, oui ! C'est le début du commencement du départ de ma célébrité universelle. \o/


    (lol Le dictateur :P j'y ai même pas pensé)

    Pourtant je travaille très dur pour en devenir un. :'(

    Bonne nuit. :D

    Mon May 4 19:29:18 2020 - permalink -
    - https://dukeart.netlib.re/shaarli/?_OUqQQ
  • Si session graphique difficile / impossible à ouvrir après migration de GNOME 3 vers MATE : rm ~/.xinitrc - GuiGui's Show - ~ sweet ~

    Lol, lg : il y a même un hommage pour toi sur cette page :P

    Ton installation web / PHP est cassée ce soir : le lien me fait télécharger un fichier doku.php vide.

    Quel est cet hommage ? Une capture d'écran du film Le dictateur ou la mention d'une personne que je connais ou une autre chose qui m'a échappé ?

    Concernant le reste de ton shaarli : j'ai déjà testé i3. Pas pour moi.

    • J'ai besoin de fenêtres qui se distinguent très clairement les unes des autres sinon je sais jamais où je me trouve, quelle fenêtre est active, etc. (j'ai jamais plusieurs fenêtres au premier plan ni un screen / tmux splitté, par exemple, je préfère largement avoir plusieurs onglets). HS-157 m'avait dit qu'on peut arriver à un résultat satisfaisant avec i3 à coup de configuration, mais j'ai la flemme. Je ne personnalise pas mon environnement de bureau par désintérêt, il faut que ça fonctionne et que ça me convienne de base ;

    • Je ne parviens pas à mémoriser les raccourcis clavier. J'en connais quelques-uns, mais c'est le minimum du minimum syndical. Ça ne veut pas entrer, même par la pratique.
    Sun May 3 22:12:10 2020 - permalink -
    - https://dukeart.netlib.re/shaarli/?JnIpOg
  • Comment utiliser SSH sur IPv6 ? - Antichesse (o ^ω^ o)

    @GuiGui j'ai rajouté les crochets qui manquaient suite à tes conseils disponibles ici. N'hésite pas à me dire si je me trompe.

    Les crochets ne s'utilisent pas avec les adresses du réseau fe80::/10. ^^

    Sun May 3 21:53:44 2020 - permalink -
    - https://cakeozolives.com/shaarli-antichesse/?AXuVyg#zap
  • De Debian GNU/Linux Stretch à Buster

    Comme à chaque passage à une nouvelle version de Debian GNU/Linux, voici un résumé de tout ce qui a foiré ou changé quand je suis passé à Buster.

    Résumé des points qui peuvent poser problème (triés par niveau de risque) : suites cryptographiques faibles (RSA / DHE < 2048 bits, ECDSA / ECDHE < 224 bits) non prises en charge par défaut par OpenSSL (débrayable) + TLS 1.2 par défaut avec OpenSSL (débrayable), fin de la prise en charge des certificats x509 utilisant SHA-1 par OpenSSL (débrayable) et GnuTLS (non négociable), AppArmor activé par défaut, et traduction auto iptables->nftables.


    Arborescence

    /bin, /lib et /sbin n'existent plus. Il reste /usr/{bin,lib,sbin}.

    Sur un système fraîchement installé, /bin, /lib et /sbin sont des liens symboliques. Sur un système mis à jour, rien change, sauf si l'on installe et utilise le paquet usrmerge.

    Attention donc aux scripts qui contiennent des chemins absolus vers des binaires : il n'y aura pas toujours un lien symbolique sur /bin, /lib et /sbin.


    Apache HTTPd + GnuTLS

    Après la mise à jour, Apache HTTPd ne démarre plus. sudo journalctl -x -u apache2 affiche :

    apachectl[6296]: AH00526: Syntax error on line 6 of /etc/apache2/mods-enabled/gnutls.conf:
    apachectl[6296]: Could not find socache provider 'dbm', please make sure that the provider name is valid and the appropriate module is loaded (maybe mod_socache_dbm.so?).

    GnuTLS active par défaut le cache partagé des sessions TLS. Il est stocké dans le backend DBM. Soit on désactive ce cache, soit on change de backend, soit, meilleure solution, on active le module correspondant avec a2enmod socache_dbm && systemctl restart apache2.


    AppArmor

    Généralités

    AppArmor est installé et activé par défaut, sauf si apt est configuré pour ne pas installer les paquets recommandés (car AppArmor est une recommandation du noyau, pas une dépendance).

    Je n'avais pas compris un truc : pour l'instant, l'utilisation d'AppArmor par chaque logiciel est basé sur le volontariat. Si un logiciel n'a pas de profil AppArmor, alors il n'est pas embêté. Actuellement, les profils sont fournis par les paquets apparmor, apparmor-profiles, apparmor-profiles-extra, par les logiciels volontaires (exemples : bind9, ntpd, haveged, tcpdump) et par les logiciels qui ne veulent pas se faire embêter (exemple : MariaDB livre un profil vide afin de désactiver AppArmor).

    Pour voir les profils chargés et les processus contraints à un instant T, il y a la commande aa-status.


    Problème avec BIND9

    Sur mes systèmes, le seul logiciel qui a été contraint à tort par AppArmor est bind9. Dans son journal, je lisais :

    named[551]: could not configure root hints from '/var/named/zones/defaultdb/db.root': permission denied
    named[551]: loading configuration: permission denied
    named[551]: general: error: dumping master file: /var/named/zones/slave/tmp-DwqA5s4Tm6: open: permission denied

    C'est normal : le profil livré avec BIND9 (/etc/apparmor.d/usr.sbin.named) ne prévoit pas l'utilisation de /var/named. Or, je mets la configuration du serveur dans /etc/bind et le contenu servi par le serveur dans /var/named, car ce contenu est normalisé (il est le même quel que soit le serveur DNS utilisé BIND9, NSD, PowerDNS, etc.). Comme on met le contenu servi par un serveur web dans /var/wwwet la configuration de ce serveur web dans /etc/apache2 ou /etc/nginx.

    Pour débloquer la situation, on crée un profil local qui surchargera le profil par défaut. Il se nomme /etc/apparmor.d/local/usr.sbin.named et son contenu est le suivant :

    # Site-specific additions and overrides for usr.sbin.named.
    # For more details, please see /etc/apparmor.d/local/README.
    /var/named/** r,
    /var/named/zones/slave/* rw,

    Il ne reste plus qu'à recharger la conf' d'AppArmor et à redémarrer BIND9 : systemctl reload apparmor.service && systemctl restart bind9.


    Journalisation

    Je déteste que tout soit consigné dans /var/log/syslog. J'aime bien avoir un journal pour chaque logiciel. Or, AppArmor tombe dans /var/log/syslog.

    Pour remédier à ça, je crée un fichier /etc/rsyslog.d/apparmor.conf qui contient :

    if $msg contains 'apparmor' then /var/log/apparmor.log
    & stop

    Je redémarre rsyslog : systemctl restart rsyslog (un reload ne suffit pas, de mémoire).

    Pour l'archivage, je crée un fichier /etc/logrotate.d/apparmor contenant :

    /var/log/apparmor.log
    {
            monthly
            missingok
            rotate 12
            compress
            delaycompress
            notifempty
            create 640 root adm
            sharedscripts
            olddir /var/log/archives/systeme
            postrotate
                    /usr/lib/rsyslog/rsyslog-rotate
            endscript
    }


    apt

    • apt vérifie désormais que la date des fichiers d'un dépôt n'est pas dans le futur. Une option de configuration permet de revenir au comportement antérieur ;

    • L'utilisation de dépôts non-authentifiés (absence de la clé OpenPGP, par exemple) émet désormais une erreur (qu'il faut contourner avec une option de configuration), plus un avertissement ;

    • apt prend en charge nativement https. Plus besoin du paquet apt-transport-https qui contient désormais uniquement de la doc' ;

    • La prise en charge des dépôts FTP est désactivée par défaut. Debian compte éteindre ses dépôts FTP… depuis novembre 2017. Une option de configuration permet d'activer la prise en charge de FTP par apt. En ce qui me concerne, je suis passé, à regret (le "tout sur HTTP" me pose un problème éthique, car ça rend le développement de nouveaux protocoles très compliqués en fermant le jeu), à HTTP.


    deluged / deluge

    Au démarrage de l'interface deluge-gtk, on doit démarrer le démon deluged puis s'y connecter. Or, là, il ne veut plus démarrer. Aucun message d'erreur.

    On le lance en ligne de commande :

    $ deluged
    […]
    [ERROR   ] 00:41:33 rpcserver:378 [('SSL routines', 'SSL_CTX_use_certificate', 'ee key too small')]

    Il existe un rapport de bug. La clé pour communiquer avec deluged ne respecte pas les critères de robustesse appliqués par défaut par OpenSSL dans Buster (voir ci-dessous).

    Solution ? rm ~/.config/deluge/ssl/*. Une nouvelle clé sera générée et l'on pourra lancer deluged comme avant.


    Dovecot

    • Dovecot ne génère plus lui-même ses paramètres Diffie-Hellman. La directive de configuration ssl_dh_parameters_length est invalide. Il faut désormais générer nous-même nos DH avec openssl dhparam et les fournir à Dovecot. Exemple : ssl_dh = </etc/dovecot/ssl/dh_4096.pem.

    • ssl_protocols est remplacé par ssl_min_protocol. Exemple : ssl_protocols = !SSLv3 devient ssl_min_protocol = TLSv1.

    • La compression TLS est désactivée par défaut (ssl_options = no_compression), ce qui est une bonne chose vu les attaques que la compression rend possibles (CRIME).


    dnssec-trigger

    J'utilise ce logiciel depuis huit ans. Jamais un souci, rien. Mais après le passage à Buster, il refuse de démarrer :

    dnssec-triggerd[1155]: [1581725206] unbound-control[31667:0] warning: control-enable is 'no' in the config file.
    dnssec-triggerd[1155]: [1581725206] unbound-control[31667:0] error: connect: Connection refused for 127.0.0.1 port 8953
    […]
    dnssec-triggerd[10688]: error: Error setting up SSL_CTX client cert
    dnssec-triggerd[10688]: 140194432980928:error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small:../ssl/ssl_rsa.c:310:
    dnssec-triggerd[10688]: [10688] warning: unbound-control exited with status 256, cmd: /usr/sbin/unbound-control forward 80.67.169.40 80.67.169.12
    dnssec-triggerd[10688]: Traceback (most recent call last):
    dnssec-triggerd[10688]:   File "/usr/lib/dnssec-trigger/dnssec-trigger-script", line 774, in <module>
    dnssec-triggerd[10688]:     main()
    dnssec-triggerd[10688]:   File "/usr/lib/dnssec-trigger/dnssec-trigger-script", line 761, in main
    dnssec-triggerd[10688]:     Application(sys.argv).run()
    dnssec-triggerd[10688]:   File "/usr/lib/dnssec-trigger/dnssec-trigger-script", line 472, in run
    dnssec-triggerd[10688]:     self.method()
    dnssec-triggerd[10688]:   File "/usr/lib/dnssec-trigger/dnssec-trigger-script", line 556, in run_setup
    dnssec-triggerd[10688]:     self._unbound_set_negative_cache_ttl(UNBOUND_MAX_NEG_CACHE_TTL)
    dnssec-triggerd[10688]:   File "/usr/lib/dnssec-trigger/dnssec-trigger-script", line 641, in _unbound_set_negative_cache_ttl
    dnssec-triggerd[10688]:     subprocess.check_call(CMD, stdout=DEVNULL, stderr=DEVNULL)
    dnssec-triggerd[10688]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
    dnssec-triggerd[10688]:     raise CalledProcessError(retcode, cmd)
    dnssec-triggerd[10688]: subprocess.CalledProcessError: Command '['unbound-control', 'set_option', 'cache-max-negative-ttl:', '5']' returned non-zero exit

    On trouve deux rapports de bug : #898969 et #919256. La clé pour communiquer avec Unbound ne respecte pas les critères de robustesse appliqués par défaut par OpenSSL dans Buster (voir ci-dessous).

    Je ne suis pas parvenu à résoudre ce problème en supprimant les clés actuelles et en en générant de nouvelles, du coup, j'ai bourriné :

    • killall dnssec-trigger-panel ;

    • sudo apt-get autoremove --purge dnssec-trigger unbound unbound-anchor ;

    • sudo find / -iname '*dnssec-trigger*' + supprimer ce qui est pertinent, notamment /etc/dnssec-trigger et /etc/NetworkManager/dispatcher.d/01-dnssec-trigger-hook ;

    • sudo apt-get install dnssec-trigger ;

    • sudo dnssec-trigger-control-setup -i ;

    • sudo systemctl restart unbound dnssec-triggerd


    EasyRSA / OpenVPN

    Plusieurs options de configuration ont été supprimées dans la version 2.4 d'OpenVPN (présente dans Debian depuis Stretch) comme tun-ipv6 et tls-remote. Ce n'est pas bloquant : OpenVPN émet un avertissement et utilise l'option de remplacement.

    D'autres options seront supprimées dans OpenVPN 2.5. ns-cert-type, par exemple. Ce ne sera pas bloquant : OpenVPN émettra un avertissement et utilisera l'option de remplacement. Il n'est déjà plus possible d'émettre des certificats x509 comportant cet attribut avec EasyRSA.


    ejabberd

    Comme à chaque mise à jour majeure de Debian, la configuration d'ejabberd change pas mal : des modules qui n'existent plus / sont dépréciés, des directives de configuration qui n'existent plus, etc. :

    [warning] <0.81.0>@ejabberd_config:emit_deprecation_warning:1436 Module mod_http_bind is deprecated, use mod_bosh instead
    [warning] <0.81.0>@ejabberd_pkix:opt_type:131 Option 's2s_certfile' is deprecated, use 'certfiles' instead
    [warning] <0.81.0>@ejabberd_c2s:listen_opt_type:984 Listening option 'certfile' for ejabberd_c2s is deprecated, use 'certfiles' global option 

    La nouvelle version empaquetée de la configuration apporte également des macros qui permettent de configurer TLS pour les échanges entre serveurs et pour les échanges avec un client (certfiles, DH_FILE, TLS_CIPHERS, TLS_OPTIONS, etc.). C'est très pratique puisque ça factorise la conf'.

    Vu que je modifie peu la configuration livrée (réduction d'un cran de la verbosité du journal (4 -> 3), domaine, certificat x509, paramètres DH, suites de chiffrement TLS, pas d'auth interne, et activation du module Message Archive Management), j'ai sauvegardé mon ancienne conf', j'ai pris celle livrée par le paquet et je l'ai modifiée.

    ÉDIT DU 21/06/2020 à 19 H 30 : 1) Vu qu'on remet la configuration à zéro, il faut bien penser à désactiver, à nouveau, l'interface web en commentant le port 5280 dans la section « listen ». Par défaut, ejabberd écoute le monde entier… Si l'on veut conserver l'interface web, on peut changer la ligne « ip » de ce module afin qu'il écoute uniquement en local. 2) Ça ne date pas de Buster, mais epmd, un composant erlang dont dépend ejabberd, écoute le monde entier sur le port tcp/4369. Ça sert à agréger plusieurs serveurs et à piloter le serveur avec ejabberd. J'ai écrit un article pour configurer epmd afin qu'il écoute uniquement en local car cela se fait du côté de systemd, pas (plus ?) depuis la configuration d'ejabberd, contrairement à ce que prétend la doc' d'ejabberd. FIN DE L'ÉDIT DU 21/06/2020 à 19 H 30.


    Firefox / Thunderbird

    (Ce point a aucun rapport avec Debian Buster, mais Buster est l'ocassion de faire un rappel.)

    DNS over HTTP (DOH) est en cours de généralisation. Il y a de bonnes raisons de ne pas vouloir utiliser DoH Pour le désactiver dans Firefox et dans Thunderbird (qui partage une grande partie de son code avec Firefox), on affecte la valeur « 5 » à la clé de configuration « network.trr.mode » dans « about:config » (ou menu « Édition » -> « Préférences » -> « Avancé » -> « Éditeur de configuration », pour Thunderbird). On peut aussi configurer cela plus finement comme l'expose l'article pointé.


    GnuPG

    Suite à l'attaque de 2019 contre les serveurs de clés consistant à saturer une clé de signatures, le projet GnuPG a choisi d'appliquer par défaut la politique "recevoir uniquement ses propres signatures depuis les serveurs de clés". Debian suit ce changement.

    Je trouve que c'est une idiotie. Lire cet avis.


    GnuTLS

    On passe de la version 3.5.X à la version 3.6.X. Le principal changement est que SHA-1 n'est plus un algorithme de hachage convenable quand il est utilisé dans le cadre d'une signature de certificat, donc sa prise en charge dans ce contexte a été anihilée à la compilation. Les outils de manipulation LDAP (ldap-utils), qui utilisent GnuTLS, foireront sur un certificat SHA-1, par exemple.


    hash-slinger

    hash-slinger n'est pas empaqueté dans Buster à cause d'une dépendance à python3-m2crypto non satisfaite.

    La version de hash-slinger qui utilise python2 que t'as pu installer avant de mettre à jour ton système pourrait ne pas fonctionner dans certains cas à cause de l'obsolescence de la bibliothèque TLS. Exemple :

    tlsa --verify --port 25  <serveur>
    Traceback (most recent call last):
      File "/usr/bin/tlsa", line 774, in <module>
        sslStartTLSConnect(connection, (str(address), int(args.port)), args.starttls)
      File "/usr/bin/tlsa", line 251, in sslStartTLSConnect
        ret = connection.connect_ssl()
      File "/usr/lib/python2.7/dist-packages/M2Crypto/SSL/Connection.py", line 293, in connect_ssl
        return m2.ssl_connect(self.ssl, self._timeout)
    M2Crypto.SSL.SSLError: wrong version number

    On remarque la présence d'autres bugs. Exemple :

    $ tlsa --create --usage 3 --selector 0 --mtype 1 --certificate mycertfile.pem <nom_machine>
    Could not verify local certificate: no start line (Expecting: CERTIFICATE).
    Traceback (most recent call last):
      File "/usr/bin/tlsa", line 889, in <module>
        genRecords(args.host, args.protocol, args.port, chain, args.output, args.usage, args.selector, args.mtype)
    NameError: name 'chain' is not defined

    Heu ? Osef de la chaîne de certificats, on veut un usage 3 (mettre dans le DNS le seul certificat du serveur). Si l'on regarde le code :

    chain = connection.get_peer_cert_chain()
    genRecords(args.host, args.protocol, args.port, chain, args.output, args.usage, args.selector, args.mtype)

    Heu ? Osef de récupérer le certificat auprès du pair c'est-à-dire du serveur puisqu'on le passe en paramètre (--certificate mycertfile.pem). C'est un bug connu.



    Mieux vaut utiliser la version du dépôt git officiel du projet. Néanmoins, elle utilise la version 3 de Python. Donc il faut installer le module M2Crypto (sinon on aura l'erreur ModuleNotFoundError: No module named 'M2Crypto').

    La compilation du module M2Crypto nécessite swig, donc on l'installe : sudo apt-get install swig.

    On installe le module M2Crypto pour Python 3 : sudo pip3 install m2crypto.

    On récupère hash-slinger : git clone https://github.com/letoams/hash-slinger.

    On l'installe : cd hash-slinger && sudo make install.


    ifupdown

    • Une interface VLAN marquée « allow-hotplug » monte en même temps que l'interface physique parente quand celle-ci est branchée ;

    • Le traitement des interfaces est désormais parallélisé. Attention aux scripts pre-up, post-up, etc.

    • On peut désormais appliquer une regex minimaliste sur le nom / l'adresse MAC / le type d'une interface (exemple : « /eth* ») et lui donner un surnom qu'on peut réutiliser par la suite (exemple : « /eth*/=foo »).


    iptables / ebtables / arptables

    iptables (iptables-nft de son vrai nom), ebtables (ebtables-nft) et arptables (arptables-nft) utilisent désormais le sous-système noyau nf_tables au lieu de xtables. Le but est de préparer la migration d'iptables (et co) vers nftables qui aura prétendument lieu dans la prochaine version stable de Debian (je n'y crois pas : la commande ip (remplaçante de ifconfig, route, vlan et d'autres) et la commande ss (remplaçante de netstat) ont plus de 10 ans, comme nftables, et il ne s'est rien passé malgré les menaces de déprécier ifconfig et compagnie).

    La syntaxe des règles iptables ne changedonc pas, grâce à iptables-nft (et compagnie) qui effectue la conversion en douce, mais il faudrait migrer vers nftables.



    Si l'on veut migrer, iptables-translate et iptables-restore-translate permettent de traduire les règles existantes. iptables-translate pour traduire une règle, iptables-restore-translate pour traduire un fichier de règles (obtenu avec iptables-save, par exemple). Attention : il n'y pas de contrôle de la syntaxe sur les éléments variants (nom d'une interface, nom d'une chaîne, nom d'une cible, etc.). Exemple :

    $ sudo iptables-translate -t nat -A POSTROUTINGE -o tun0 -j TOTO
    nft add rule ip nat POSTROUTINGE oifname "tun0" counter jump TOTO

    On notera également que certaines traductions ne sont pas proposées (je donne la traduction de cet exemple plus bas) :

    $ sudo iptables-translate -P FORWARD ACCEPT
    Translation not implemented
    nft 



    Voici ma procédure pour migrer d'iptables vers nftables à partir d'un système équipé de netfilter-persistent :

    sudo iptables-restore-translate -f /etc/iptables/rules.v4 > /tmp/nftables.conf.tmp
    sudo ip6tables-restore-translate -f /etc/iptables/rules.v6 >> /tmp/nftables.conf.tmp
    
    # Un script nftables commence par « #!/usr/sbin/nft -f »
    sed -i '1s&^&#!/usr/sbin/nft -f\n&' /tmp/nftables.conf.tmp
    
    # iptables-restore-translate crée les tables nat et mangle alors que je ne les utilise pas ou rarement.
    # Je les vire afin d'améliorer la visibilité 
    sed -i '/ip nat/d' /tmp/nftables.conf.tmp
    sed -i '/ip mangle/d' /tmp/nftables.conf.tmp
    
    # Vu que je vais temporairement être sans pare-feu (surtout s'il y a des règles cassées), je me déconnecte du réseau
    sudo ifdown eth0
    
    # Je vire toutes les règles (filtrage, NAT, etc.) IPv4 et IPv6 actuellement en place
    sudo nft flush ruleset
    
    # J'importe les règles au format nftables avec l'outil d'administration adéquat
    sudo nft -f /tmp/nftables.conf.tmp
    
    # Je vérifie que les règles sont en place
    sudo nft list ruleset
    
    # Puisque tout est OK, je me connecte au réseau
    sudo ifup eth0
    
    # Puisque tout est OK, je crée le fichier de configuration utilisé par l'unit systemd pour charger les règles
    # -s permet de ne pas inclure les compteurs (de paquets / octets) dans l'export
    # Oui, le format issu de la commande ip[6]tables-restore-translate aurait fonctionné, mais je voulais conserver le format du fichier /etc/nftables.conf
    sudo nft -s list ruleset | sudo tee /etc/nftables.conf
    
    # J'insère l'entête obligatoire pour un script nftables
    # + je purge toutes les règles de filtrage. Cela permet de partir sur un jeu de règles sain lors d'un start ou d'un restart
    sudo sed -i '1s&^&#!/usr/sbin/nft -f\n\nflush ruleset\n\n&' /etc/nftables.conf
    
    # J'active l'unit systemd nftables et je la démarre
    sudo systemctl enable nftables
    sudo systemctl start/restart nftables
    
    # Je veux pouvoir revenir facilement à iptables, donc je ne vais pas le désinstaller
    # donc j'empêche netfilter-persistent de charger les vieilles règles au démarrage
    sudo systemctl disable netfilter-persistent
    sudo systemctl mask netfilter-persistent



    ATTENTION :

    • Quand des règles ont été créées avec nftables dans une chaîne de type « ip[6] », ip[6]tables ne peut plus lire le contenu d'une table. Le message d'erreur suivant s'affiche : iptables v1.8.2 (nf_tables): table 'nat' is incompatible, use 'nft' tool.. C'est normal : il ne faut pas utiliser les commandes iptables-legacy / iptables-nft en même temps que nft, car elles utilisent des sous-systèmes différents du noyau ;

    • Comme avec netfilter-persistent, si des règles ne peuvent pas être appliquées, aucune alerte est levée. SystemD remonte aucune info, aucun code retour. Attention donc à ne pas se retrouver à poil.



    Commandes utiles :

    • Démarrer / arrêter le pare-feu : sudo systemctl start nftables / sudo systemctl stop nftables ;

    • Nettoyer les règles ajoutées temporairement à la mano : sudo systemctl restart nftables ;

    • Voir toutes les règles (filtrage, nat, mangle, arp, ebtables) IPv4 et IPv6 en vigueur : sudo nft list ruleset ;

    • Voir toutes les tables, les chaînes et les règles d'un protocole (IPv4, IPv6, etc.) : sudo nft list ruleset ip6 (ici, que les règles IPv6 ‒ je simplifie, ce n'est pas vrai, voir ci-dessous ‒) ;

    • Voir toutes les chaînes et les règles d'une table : sudo nft list table ip6 filter (ici, que les règles de filtrage IPv6) ;

    • Ajouter une règle à la fin d'une chaîne existante (oui, il faut utiliser les guillemets et les apostrophes dès qu'on veut insérer un commentaire contenant plusieurs mots) : sudo nft 'add rule ip filter INPUT iifname "eth0" udp dport 666-999 counter accept comment "Ceci est un commentaire de plusieurs mots"' (ajout d'une règle dans la chaîne nommée INPUT de la table filter du protocole ip autorisant les paquets UDP destinés aux ports entre 666 et 999 inclus qui entrent par l'interface eth0) ;

      • Insérer une règle au début d'une chaîne existante : nft insert rule ip filter INPUT iifname "eth0" udp dport 666-999 counter accept ;
    • Comme avec iptables, la case est importante : si le nom d'une table ou d'une chaîne est en majuscule, il faut respecter cela sinon on a un message d'erreur abscons : « Error: Could not process rule: No such file or directory » ;

    • Supprimer une règle à chaud (la logique est identique pour une chaîne et une table) :

      # Récupérer le « handle » (numérotation interne) d'une règle
      sudo nft -a list ruleset
      # Supprimer cette règle (ici une règle dans la chaîne nommée INPUT de la table nommée filter du protocole IPv4)
      sudo nft delete rule ip filter INPUT handle <handle>


    • Changer à chaud la politique par défaut d'une chaîne : sudo nft chain ip filter FORWARD { policy drop \; } (la politique par défaut de la chaîne nommée FORWARD de la table filter du protocole IPv4 est désormais drop (rejet silencieux) ;

    • Créer une table, une chaîne et une règle :

              sudo nft add table ip nat
      # type et hook : à quelle interface réseau et à quelle partie de la pile réseau veut-on brancher la chaîne ? Ça détermine les paquets reçus par la chaîne
      #   valeurs possibles : https://wiki.nftables.org/wiki-nftables/index.php/Configuring_chains#Base_chain_types
      #   On peut créer des chaînes persos, non-reliées à la pile réseau, qui recevront des paquets via d'autres chaînes (-j nom_chaîne)
      # policy : politique par défaut de la chaîne : que fait-on d'un paquet qui a matché aucune règle ?
      # priority : ordonner les chaînes d'un même type+hook entre elles (le nombre le plus élevé l'emporte)
      #   \ + positionnement dans le processus de filtrage : exemple < - 200 = le paquet sera transmis à la chaîne avant la mise en place du suivi de connexion
      #   valeurs possibles : https://wiki.nftables.org/wiki-nftables/index.php/Configuring_chains#Base_chain_priority
      sudo nft add chain ip nat POSTROUTING '{ type nat hook postrouting priority 100; policy accept; }'
      sudo nft add rule ip nat POSTROUTING oifname "tun0" counter masquerade
    • Du point précédent, on retient que le nom d'une table et d'une chaîne est totalement personnalisable. Avec iptables, la chaîne qui s'occupe du filtrage en sortie est forcément la chaîne nommée OUTPUT de la table nommée filter. Avec nftables, ça peut être la chaîne nommée « toto » de la table « LOL » :

      table ip LOL { # handle 82
          chain toto { # handle 1
              type filter hook output priority 0; policy drop;
              icmp type echo-request accept # handle 2
          }
      }



    iptables-restore-translate traduit un jeu de règles ligne par ligne, donc on ne profite pas des possibilités de factorisation de nftables :

    • Une unique règle qui s'applique à plusieurs interfaces réseau sans utiliser ipset : sudo nft add rule ip filter INPUT iifname {"tun0", "wlan0"} counter accept ;

    • Une unique règle qui s'applique à plusieurs adresses IP source ou destination sans utiliser ipset (destination dans cet exemple) : sudo nft add rule ip filter OUTPUT ip daddr {192.0.2.1, 198.18.0.0/15} counter accept ;

    • Une unique règle qui s'applique à plusieurs protocoles de la couche 4 : sudo nft add rule ip filter FORWARD ip protocol {tcp, udp} accept ;

    • Une unique règle qui s'applique à plusieurs ports d'un même protocole de couche 4 : sudo nft add rule ip filter INPUT udp dport {53, 5353} counter accept ;

    • Et si l'on veut autoriser un même port pour plusieurs protocoles comme autoriser, en une seule règle, le DNS (qui nécessite les ports udp/53 et tcp/53) ? Ce n'est pas vraiment prévu : le mot clé « dport » est relatif au mot clé (tcp ou udp). On peut ruser, mais c'est crade : sudo nft 'add rule inet filter INPUT ip protocol {tcp, udp} @th,16,16 53 counter accept comment "DNS udp et tcp"'. Attention : cela nécessite que le port de destination soit stocké au même emplacement dans l'entête des deux protocoles.



    nftables permet également d'appliquer une même règle en IPv4 et en IPv6. Cela se fait avec une table de type « inet ». Cela signifie que des règles concernant IPv4 peuvent se trouver dans une table de type inet ET dans une table de type ip (d'où sudo nft list ruleset ip6 n'affiche pas toutes les règles IPv6 mais toutes les tables de type ip6). Exemple pour autoriser SSH en entrée en IPv4 et en IPv6 :

    sudo nft add table inet filter
    sudo nft add chain inet filter INPUT '{ type filter hook input priority 0; policy drop; }'
    sudo nft add rule  inet filter INPUT tcp dport ssh counter accept

    Attention : à hook identique et à priorité égale ou même supérieure une chaîne de type inet passe avant une chaîne de type ip. Si la chaîne inet ne drop pas le paquet, la chaîne ip le verra passer, sinon non. Source. Cela peut poser problème. Exemple : virt-manager crée un réseau NATé pour les machines virtuelles. Pour ce faire, il utilise des chaînes de type / de la famille ip. J'effectue tout mon filtrage dans des chaînes de type inet dont la politique est de drop sauf ce qui va dans un VPN. Conclusion : la machine virtuelle n'aura pas d'IP (DHCP foiré) et ne pourra pas sortir sur Internet.

    Dans une chaîne de type inet, il est possible de filtrer uniquement IPv4 ou IPv6. Soit en utilisant une directive spécifique à un protocole (exemple : sudo nft add rule inet filter INPUT ip daddr 192.0.2.1/32 accept, soit en utilisant les mots-clés « meta nfproto ipv(4|6) » (exemple : sudo nft add rule inet filter OUTPUT meta nfproto ipv4 udp dport 666 reject with icmp type admin-prohibited).



    Documentations utiles :

    • nftables dans le wiki Debian ;

    • Doc' poussée sur les chaînes, hook, priorités, etc. sur le wiki nftables ;

    • Mots-clés de référence utilisables dans une règle sur le wiki nftables.


    logrotate / rsyslog

    Mes journaux consignés par rsyslog n'étaient plus archivés par logrotate. De plus, dans /etc/logrotate.d/rsyslog, je constate qu'on n'utilise plus invoke-rc.d rsyslog rotate > /dev/null, mais /usr/lib/rsyslog/rsyslog-rotate.

    Ces deux éléments sont liés : il y a un bug (l'unit systemd fait démarrer rsyslog sans PID, alors qu'on en a besoin pour invoke-rc.d) et Debian a mis en place le magnifique (ironie) script /usr/lib/rsyslog/rsyslog-rotate (résumé : si systemd est en cours d'utilisation, alors on utilise systemctl kill pour envoyer un signal à rsyslog, sinon on utilise invoke-rc.d).

    J'ai modifié toutes mes configurations logrotate afin d'utiliser /usr/lib/rsyslog/rsyslog-rotate dans l'action de post-rotate, même si ça ne me semble pas pérenne…


    man-db

    CRON me rapporte une erreur :

    /etc/cron.daily/man-db:
    /usr/bin/mandb: error while loading shared libraries: libgdbm.so.3: cannot open shared object file: No such file or directory
    run-parts: /etc/cron.daily/man-db exited with return code 127

    Regardons les bibliothèques de fonctions qui sont liées dynamiquement à man-db :

    $ ldd /usr/bin/mandb 
    linux-vdso.so.1 (0x00007ffeb36fe000)
    libmandb-2.7.6.1.so => /usr/lib/man-db/libmandb-2.7.6.1.so (0x00007fb4ffa8b000)
    libman-2.7.6.1.so => /usr/lib/man-db/libman-2.7.6.1.so (0x00007fb4ff868000)
    libgdbm.so.3 => /usr/lib/x86_64-linux-gnu/libgdbm.so.3 (0x00007fb4ff661000)
    libpipeline.so.1 => /usr/lib/x86_64-linux-gnu/libpipeline.so.1 (0x00007fb4ff453000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb4ff0b4000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fb4fee9a000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb4ffeb3000)

    Hum… Il y a bien libgdbm.so.3… qui n'existe plus au profit de libgdbm.so.6.

    """"Solution"""" ? apt-get install --reinstall man-db

    Merci pour le poisson.


    MariaDB

    MariaDB 10.3 ne s'est pas installé tout seul, j'ai dû le faire à la mano (sudo apt-get install mariadb-server). J'imagine que j'avais installé le paquet mariadb-server-10.1 quand j'étais sous Stretch au lieu du paquet mariadb-server…

    Durant l'installation, je lis mysql_install_db : Installation of system tables failed!. Dans le journal MariaDB (/var/log/mysql/…), je lis : Unable to lock ./ibdata1 error: 11.

    Hum… Fichier déjà ouvert. Donc : systemctl stop mariadb && mysql_install_db && systemctl start mariadb.


    MATE

    Durant la mise à jour, le texte de toute fenêtre déjà ouverte (ou ouverte après-coup) foire : flou, difficile à lire, etc. Les intitulés des menus sont parfois tronqués comme le menu « fichier » dans Pluma. Sur tout site web, les caractères sont remplacés par des carrés. Après vérification, ce n'est pas un changement de définition (1920x1080) ni de résolution (en DPI).

    On se dit qu'on va reboot. Depuis le menu MATE, ça ne fonctionne pas : je tombe sur un GNOME shell (qu'est-ce qu'il fout ici, celui-là ?!) qui me demande mon mot de passe comme si la session était verrouillée. Toute saisie est impossible. Le bouton arrêter / redémarrer en haut à droite de l'écran fait rien. Pas d'accès aux consoles (ctrl+alt+fx). On est parti pour un REISUB / BUSIER…

    Au redémarrage, tout est OK : les textes et les menus s'affichent correctement et l'extinction / le redémarrage via le menu MATE sont fonctionnels. Même chose pour les tty.

    Néanmoins, la sensibilité de la souris a été clairement abaissée. Mon pointeur se traîne… On corrige ça dans les paramètres.

    Je note aussi que, quand caja (explorateur de fichiers MATE) gueule « failed to activate device operation not permitted », ça signifie que je n'ai pas saisi la bonne passphrase pour déverrouiller un disque dur interne (le message qui s'affiche pour pareille boulette sur un disque dur externe n'a pas changé…).


    mumble

    Prise en charge des suites de chiffrement qui permettent la Perfect Forward Secrecy (en clair : utilisation de clés de chiffrement symétrique temporaires qui ne sont pas échangées entre le client et le serveur grâce aux algos DHE / ECDHE, ce qui fait que si la clé privée asymétrique est compromisse, les échanges passés restent secrets). Cool. \o/


    ntpd / tzdata

    Le paquet tzdata livre désormais un fichier qui annonce les secondes intercalaires (ça permet de les gérer). ntpd est configuré par défaut pour utiliser ce fichier (leapfile /usr/share/zoneinfo/leap-seconds.list). Avant, il fallait récupérer manuellement le fichier auprès du NIST (ou de l'IANA ou…) et configurer ntpd nous-même. Cool.

    Ça ne changera pas grand-chose puisque les serveurs NTP de strate 1 bien connus communiquent la seconde intercalaire via le protocole NTP lui-même.


    ntpdate

    Ce paquet ne fournit plus de hooks ifupdown permettant à ntpdate d'être exécuté à chaque fois qu'une connexion au réseau est établie. Il faut utiliser un démon NTP (ntpd, chrony, etc.) ou, au pire du pire, bidouiller ses propres scripts.

    C'est positif, ça posait souvent problème : synchronisation aléatoire, ça n'utilisait pas les serveurs NTP du réseau reçus en DHCP, etc.


    OpenDNSSEC

    Lors de son démarrage, ods-enforcerd consigne Token.cpp(482): Could not get the token flag dans son journal. Cela fait penser à ce bug, mais il est trop vieux pour ne pas avoir été corrigé dans Buster. De plus, un simple systemctl restart ods-enforcerd suffit à faire rentrer les choses dans l'ordre. Je pense à une race-condition au démarrage du serveur, car ça n'est pas reproduit après le deuxième redémarrage. À défaut d'une solution, je me note d'être vigilant à chaque redémarrage de mon serveur…

    J'ai découvert que, dans le cadre des DNS adapters (source), le signeur écoute sur les ports TCP et UDP 15354 de toutes les interfaces, et évidemment pas que sur localhost… Ce n'est pas ce que dit la documentation, mais c'est ce que je constate. Pour rattraper le coup, j'ai remplacé le bloc Listener dans /etc/opendnssec/conf.xml par celui-ci :

    <Listener>
            <Interface>
                    <Address>127.0.0.1</Address>
                    <Port>5353</Port>
            </Interface>
    </Listener>


    OpenSSH

    • Les variables d'environnement (y compris celles positionnées dans le fichier authorizedkeys) ne peuvent plus surcharger les variables « SSH* » de sshd ;

    • La journalisation de l'authentification est plus précise durant la phase de pré-auth et le format de certains messages a changé donc attention aux outils qui examinent les journaux SSH.


    OpenSSL

    Par défaut, c'est la version 1.2 ou supérieure du protocole TLS qui sera utilisée.

    Par défaut, les suites de chiffrement faibles sont désactivées. Adieu RSA / DHE avec des clés inférieures à 2048 bits et ECDSA / ECDHE < 224 bits. Adieu les certificats dont la signature repose sur SHA-1 pour en créer le condensat.

    Dans les deux cas, cela peut être contourné dans /etc/ssl/openssl.cnf en remplaçant :

    [system_default_sect]
    MinProtocol = TLSv1.2
    CipherString = DEFAULT@SECLEVEL=2

    Par :

    [system_default_sect]
    MinProtocol = None
    CipherString = DEFAULT

    Attention : les applications peuvent faire comme elles veulent. Exemples : wpa_supplicant accepte les certificats x509 dont l'algo de hachage avant signature est SHA-1. openssl s_client affiche un message « Verify return code: 68 (CA signature digest algorithm too weak) »


    PHP

    J'utilise le module PHP pour Apache HTTPd. Je suis quasiment sûr que le paquet libapache-mod-php (et non pas libapache-mod-php7.2) était installé. Pourtant, j'ai dû activer moi-même le module PHP 7.3 (version empaquetée dans Buster) à la main (a2endmod php7.3 && systemctl restart apache2). Au préalable, j'ai migré ma conf' PHP (php.ini) personnalisée de /etc/php/7.2/apache2 vers /etc/php/7.3/apache2 (ne pas faire un cp sinon on ne bénéficie pas des nouveautés…, préférer diff).


    Thunderbird

    La date et l'heure des emails s'affichaient au format anglais. Le paquet thunderbird-l10n-fr était bien installé. J'avais vérifié mes locales. J'avais tenté de lancer Thunderbird depuis un shell en précisant la locale juste avant. J'avais tenté de bidouiller mail.ui.display.dateformat.default et ses amies Sans succès.

    Depuis la mise à jour vers Buster, les dates et l'heure des emails sont au format français…


    ssmtp

    ssmtp n'est pas empaqueté dans Buster, mais il est présent dans testing et sid, donc, comme le T-800, il reviendra.


    xsane

    Depuis octobre 2018, xsane n'est plus maintenu (le site web officiel affiche « XSane (temporarily offline!) »).



    #Debian 9 à Debian 10 ; Debian 9 à 10

    Sun May 3 18:27:02 2020 - permalink -
    - http://shaarli.guiguishow.info/?Mfvd7A
  • Si session graphique difficile / impossible à ouvrir après migration de GNOME 3 vers MATE : rm ~/.xinitrc

    Avant, j'utilisais GNOME 2. Puis il a fallu passer à GNOME 3. Sauf que GNOME 3, shell ou non, ça ne me convient pas. MATE, un fork de GNOME 2 était disponible dans les paquets Debian (mais pas dans l'installeur). J'ai donc installé MATE à côté d'un GNOME 3.

    Bien plus tard, j'ai commencé à supprimer GNOME 3 sauf ce qui me plaisait : la calculette GNOME (gnome-calculator) a une interface qui me parle plus que celle de MATE (mate-calculator) en plus d'avoir un historique des opérations effectuées ; garder un nautilus (explorateur de fichiers de GNOME) permet d'avoir un explorateur de fichier de secours quand caja (idem, mais de MATE) se gèle totalement durant une copie sshfs, etc.

    À moment donné (je date ça de mon passage à Debian Stretch, mais je n'en suis pas sûr), ça part en live. Quand je saisis mon identifiant et mon mot de passe afin d'ouvrir ma session, si c'est les bons, les champs se grisent, l'affichage se fige (plus de souris) et rien se passe. Pour afficher l'environnement de bureau, je devais attendre un peu que MATE démarre, faire ctrl+alt+f2 puis ctrl+alt+f3 puis ctrl+alt+f2. Revenir sur ctrl+alt+f1, ça fermait brutalement la session et les champs identifiant et mot de passe étaient de nouveau éditables. L'environnement de bureau s'affichait dans ctrl+alt+f2… au lieu de l'habituel ctrl+alt+f7… qui était vide.

    C'était pénible, mais vu que je suis le seul utilisateur de l'ordinateur et que je l'éteins jamais (je fais du suspend-to-ram), je m'en fichais. Et puis essaye de décrire ce problème avec des mots-clés pour un moteur de recherche web, toi…

    Lors de mon passage à Debian Buster, j'ai voulu virer les derniers bouts de GNOME dont je ne me sers pas. Mais gdm3 (gestionnaire d'affichage de GNOME) dépend d'eux… Allons-y pour installer lightdm comme remplaçant de gdm3. Impossible d'ouvrir une session. J'ai le même problème d'affichage gelé mais mon astuce ctrl+alt+f2 puis ctrl+alt+f3 puis ctrl+alt+f2 ne fonctionne plus.

    C'est donc un problème commun à plusieurs gestionnaires d'affichage ou à plusieurs gestionnaires de sessions.

    Ne sachant pas trop quoi faire, je crée un compte utilisateur. J'arrive à ouvrir une session avec celui-ci. L'origine de mon problème est donc un fichier de configuration dans mon homedir.

    Je regarde viteuf le déroulement de l'ouverture d'une session graphique. L'interface de connexion ne me laisse pas choisir la session à ouvrir (et pour cause, j'ai un seul gestionnaire de session, mate-session). J'ai bien un lien symbolique ~/.xsession vers un fichier ~/.xinitrc. Je le mets de côté avec mv.

    Je peux ouvrir une session avec gdm3 sans utiliser une quelconque combine. Je peux également ouvrir une session avec lightdm. \o/

    Je ne sais plus ce que contenait le script .xinitrc, mais c'était très probablement des instructions spécifiques à GNOME.

    Je suis donc un récent utilisateur de lightdm.

    Sat May 2 17:17:42 2020 - permalink -
    - http://shaarli.guiguishow.info/?LpglKA
  • Regénérer sa config' xorg.conf, ça peut encore servir

    Sur ma machine perso et depuis sa mise en service, le serveur graphique X.Org me crache des tonnes d'erreurs dans ~/.local/share/xorg/Xorg.0.log. Toujours la même : « (EE) FBDEV(0): FBIOPUTCMAP: Device or resource busy ». En permanence, dès que je bouge ma souris. ÉDIT DU 12/10/2020 À 20 H 50 : La procédure ci-dessous permet également de résoudre la coulée permanente d'erreurs « (EE) modeset(0): present flip failed ». FIN DE L'ÉDIT.

    Le message d'erreur étant plutôt générique, je ne trouvais pas d'aide sur le web, donc j'avais laissé tomber. Je pensais à un problème de pilote graphique, de fonctionnalités non-supportées par ce dernier, quelque chose comme ça. Ce n'était pas gênant, car une rotation / nettoyage automatique du journal avait lieu, donc il consommait quelques Go à tout casser.

    J'ai mis à jour mon système Debian GNU/Linux à la version Buster. Ce problème continue. J'ai un peu craqué : mon modèle d'ordinateur date de 2012-2013, il est équipé d'un GPU Intel greffé sur le CPU. Le GPU le plus simple et compatible au monde, et ça continue de foirer en 2020 ?!

    Mon fichier de config' /etc/X11/xorg.conf date de 2014. Peut-être faut-il en générer une version actualisée ? Ouais, je sais : avec l'autoconfiguration Xorg, KMS et compagnie, on n'est plus censé devoir faire ça… sauf que ça a jamais vraiment fonctionné chez moi.

    Pour générer un nouveau fichier xorg.conf (adapté de ce tuto) :

    • Fermer ses logiciels / fichiers ;

    • Basculer en console tty avec ctrl+alt+F[1-6] et se connecter en root ;

    • Copier la conf' actuelle : cp /etc/X11/xorg.conf ~/xorg.conf.bak ;

    • Stopper le gestionnaire d'affichage (gdm, dans mon cas, même si, depuis, je suis passé à lightdm) : systemctl stop gdm3 ;

    • Générer la conf' : X -configure ;

    • Déplacer la conf' au bon endroit : cp xorg.conf /etc/X11/xorg.conf ;

    • Relancer le gestionnaire d'affichage : systemctl start gdm3.

    Hop, plus aucune erreur dans ~/.local/share/xorg/Xorg.0.log depuis plusieurs mois. \o/

    Sat May 2 15:56:08 2020 - permalink -
    - http://shaarli.guiguishow.info/?yUC8rQ
  • Comment utiliser SSH sur IPv6 ? - Antichesse (o ^ω^ o)

    Quelques remarques :

    • Ce principe de fonctionnement est valable pour tout protocole, pas seulement SSH. Ping une adresse du réseau fe80::/10 ? ping6 fe80::1%<nom_interface>. Netcat ? nc -u fe80::1%<nom_interface> 8112 ;

    • Il est préférable d'encadrer une IPv6 globale entre crochets. C'est même obligatoire pour les commandes où l'on précise un numéro de port en l'apposant à l'adresse IP (puisque le séparateur IP/port, « : », intervient également dans la représentation des adresses IPv6) et, d'une manière générale, dans toute commande où l'on appose quelque chose à la suite de l'adresse IP (genre avec rsync ou scp, il faut préciser la destination de la copie… avec « : »… donc, pour faire la différence entre la représentation d'une IPv6 et le séparateur, on utilise les crochets : scp test <identifiant>@[<adresse_IPv6>]:.) ;

    • Une adresse IPv6 fe80::/10 est spécifique à un même réseau niveau 2, à un même segment, à un même réseau local pour faire simple. Comme tous les réseaux niveaux 2 ont le même adressage (ce sera fe80::/10 que tu sois chez toi, au travail, chez des amis, en filaire ou en Wi-Fi ou…) et qu'une machine lambda est connectée à plusieurs réseaux en même temps (filaire, Wi-Fi, 4G, etc.), il faut préciser l'interface réseau qui sera utilisée pour l'émission, car l'algorithme de sélection de l'adresse IP source ne peut pas fonctionner. Une adresse locale au lien (fe80::/10) ne traverse pas un routeur (genre une box Internet), donc elles ne sont pas utilisables entre deux réseaux distincts. Une adresse fe80::/10 est soit tirée au sort (donc elle change avec le temps), soit dérivée à partir de l'adresse MAC de l'interface réseau (auquel cas, l'adresse fe80::/10 d'une interface réseau ne change pas avec le temps) ;

    • Les adresses fe80:/10 sont plutôt destinées à un usage technique interne aux protocoles autour d'IPv6 (routage, résolution MAC/IP, etc.). Je déconseille leur utilisation courante au niveau des applications (surtout si elles sont générées aléatoirement…), quitte à utiliser des adresses IPv6 """"privées""" (fc00::/7) pour adresser le serveur et le client. En faisant ainsi, il n'y a pas lieu de se plaindre que "pas le même comportement gnagna".
    Sat May 2 14:05:56 2020 - permalink -
    - https://cakeozolives.com/shaarli-antichesse/?AXuVyg
  • OpenDKIM + DNSSEC : « can't read SMFIC_EOH reply packet header: Success »

    Sur mon serveur d'emails, j'utilise OpenDKIM pour signer quelques entêtes de mes emails sortants et pour vérifier la signature des entrants dans un contexte anti-spam (il ne s'agit pas de garantir la confidentialité / l'authenticité / l'intégrité de l'échange). J'ai configuré OpenDKIM pour qu'il vérifie les signatures DNSSEC afin de garantir l'authenticité et l'intégrité des clés publiques DKIM récupérées dans le DNS. Ça sert à rien (déjà que DKIM c'est du vent…), mais bon, ça fait joli.



    Depuis bientôt 1 an (juin 2019), j'ai remarqué que la signature des emails entrants n'est plus vérifiée. J'avais constaté l'absence de l'entête « Authentication-Results » dans les emails. J'avais constaté que Postfix consigne ce qui suit pour chaque email reçu : « warning: milter inet:127.0.0.1:10028: can't read SMFIC_EOH reply packet header: Success ». Tant que je pouvais envoyer des emails et en recevoir, je m'en fichais.

    Il y a 3 mois, j'ai décidé d'étudier cela attentivement, car, à moment donné, il faut bien se sortir les doigts.



    Le message consigné par Postfix est trop générique : c'est le constat d'un milter défectueux, rien de plus.

    OpenDKIM consigne rien excepté exited with status 1, restarting à chaque email reçu ou presque. Le lancer à la main (systemctl stop opendkim && opendkim -f -vvv) ne le rend pas plus bavard.



    J'ai aucune idée. Dans ces moments-là, je reviens aux bases, j'essaye de me souvenir comment fonctionne précisément le logiciel incriminé, je relis la doc' relative à mon système d'exploitation, etc. La doc' Debian pour OpenDKIM est ici. Et la réponse s'y trouve sous forme d'un gros avertissement :

    The Debian unbound package installs a default configuration file at /etc/unbound/unbound.conf. Do not attempt to use this file unchanged with ResolverConfiguration! opendkim will just quietly shut down.
    
    The reason for the incompatibility is that the shipped unbound.conf includes an auto-trust-anchor-file setting, for which opendkim does not have the necessary permissions. Unfortunately, libunbound is rather fragile in this area. Prepare your own unbound.conf for opendkim and test carefully. 

    Une fois qu'on a connaissance de ça, une recherche sur le web avec de nouveaux mots-clés permet d'obtenir une confirmation : Question #293418 : Questions : opendkim package : Ubuntu.



    Je n'utilise pas /etc/unbound/unbound.conf, mais, dans ma configuration pour la bibliothèque Unbound, j'utilise bien auto-trust-anchor-file. Ce que je ne comprends pas, c'est que je stocke la clé publique de la racine DNS dans une arborescence dédiée à OpenDKIM : /var/lib/dkim/. C'est aussi là qu'est stockée la clé privée avec laquelle sont signés les emails. Ça devrait donc fonctionner.

    Pour une raison qui m'échappe totalement, l'utilisateur OpenDKIM n'était plus propriétaire ni du dossier /var/lib/dkim, ni de la clé publique de la racine DNS. La bibliothèque Unbound exécutée par OpenDKIM (uid:gid identique, donc) ne pouvait donc pas l'actualiser. J'ai corrigé ça de cette manière :

    chown opendkim:root /var/lib/dkim
    chmod 755 /var/lib/dkim
    chown opendkim:opendkim /var/lib/dkim/dnssec.root.key
    chmod 664 /var/lib/dkim/dnssec.root.key

    On redémarre OpenDKIM (systemctl restart opendkim) et c'est fini.

    Sat May 2 13:00:34 2020 - permalink -
    - http://shaarli.guiguishow.info/?R_X-_A
Links per page: 20 50 100
◄Older
page 86 / 298
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