5973 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
◄Older
page 216 / 299
Newer►
  • IP dynamique et XMPP

    Un truc auquel on pense rarement quand on cause d'auto-hébergement et d'adresse IPv4 dynamique, c'est à quel point c'est relou lorsque l'on utilise XMPP (messagerie instantanée) avec son serveur à la maison.

    En effet, lors d'une conversation, XMPP utilise deux connexions TCP entre les serveurs XMPP de chaque correspondant. La première délivre les messages (et les accusés de réception) écrits par le correspondant 1 au correspondant 2. La deuxième connexion... délivre les messages écrits par le correspondant 2 au correspondant 1.

    Donc, lorsque le correspondant 1 change d'IP, son serveur XMPP n'en a pas conscience (car l'adresse IP publique est attribuée à un routeur en amont du serveur) et continue donc à vouloir transmettre les messages du correspondant 1 au 2e correspondant comme si de rien n'était... On a donc une première session TCP aux caractéristiques suivantes : {nouvelle_IP_correspondant_1, sport, IP_correspondant_2, 5269 }. Le serveur du correspondant 2 n'a pas cette session dans sa table (lui il a {ancienne_IP_correspondant_1, sport, IP_correspondant_2, 5269 }) et casse donc la session avec un RST en mode "hé, d'où tu me causes, je te connais pas !". Donc le serveur du correspondant 1 monte une nouvelle connexion TCP et... ça fonctionne : correspondant 1 est bien en mesure de parler à correspondant 2.

    Par contre, correspondant 2 ne peut pas répondre à correspondant 1 car le serveur XMPP de ce premier continue à émettre à destination de l'ancienne IP du correspondant 1. Comme elle n'est pas réattribuée immédiatement par le FAI, il n'y a pas de RST... Il faut donc attendre l'expiration des timers TCP soit entre 15 minutes et 20 minutes constatées. Étant donné que l'on essaye de transmettre quelque chose (il y a toujours quelque chose à transmettre : état, présence,...), je pense que c'est le paramètre « tcp_retries2 » du noyau qui influe (« The maximum number of times a TCP packet is retransmitted in established state before giving up. The default value is 15, which correspondants to a duration of approximately between 13 to 30 minutes, depending on the retransmission timeout. [NDLR : qui dépend lui-même du RTT de la connexion, de nos jours] ». En cas d'inactivité complète (si c'est possible, je n'y crois pas avec XMPP), je ne pense pas que tcp_keepalive_{time,intvl,probes} agisse puisque ejabberd coupe les connexions TCP de manière normale (FIN+ACK) après 10 minutes d'inactivité).

    Une adresse IP dynamique, c'est juste mortel avec XMPP : on obtient une conversation à sens unique et ça casse bien comme il faut le rythme de la discussion. Note à ceux et celles qui ont un accès Internet avec une IP dynamique : bougez-vous pour changer de FAI, sérieusement ! Et si vous voulez faire le beau / la belle avec votre fibre optique, utilisez au moins un VPN chez un FAI de la fédération FDN. :-
    11/01/2016 12:18:52 - permalink -
    - http://shaarli.guiguishow.info/?N0YyoA
    nomarkdown
  • Turris Omnia: hi-performance & open-source router | Indiegogo

    Je meurs d'envie d'en avoir un mais nic.cz a décidé de recourir uniquement à Paypal comme intermédiaire de paiement (Indiegogo permet aussi Stripe pour les débits CB d'après leur FAQ ÉDIT DU 11/01/2016 À 12H25 : sauf pour les campagnes à seuil fixe... mais on n'a pas imposé à nic.cz d'utiliser Indiegogo hein. FIN DE L'ÉDIT. ). Paypal, la société commerciale pourrie qui a fait de la merde (fermeture abusive de comptes sans décision de justice, délit d'opinion, délation de leurs clients,... ) avec Wikileaks, Diaspora, Uptobox, ProtonMail (http://korben.info/protonmail.html, http://sebsauvage.net/rhaa/?2010/12/12 , http://www.numerama.com/magazine/21868-uptobox-paypal-et-google-bloquent-les-finances-du-service-francais.html ) et les Anonymous (http://sebsauvage.net/links/?vao3Ew) ?! Sans compter la commission énorme. NO FUCKING WAY que je contribue via PayPal !

    Avoir des principes et des valeurs, ça fait mal, parfois^w souvent. :(

    ÉDIT DU 11/01/2016 À 11H12 : je viens d'envoyer un mail à l'équipe du projet chez nic.cz. Ça va juste bien rien changer mais peut-être qu'ils seront plus attentifs à la plateforme de financement participatif qu'ils choisiront la prochaine fois. #espoir #inutile. FIN DE L'ÉDIT.

    Sans compter que Paypal demande prénom + nom (tout site web 3Dsecure-compliant demande ça donc bon...) + adresse postale + numéro de téléphone + adresse mail ! Pour juste un débit CB ! C'est juste de la collecte de données personnelles inutile ! Pour les personnes qui veulent vraiment payer via Paypal, utilisez au moins https://www.fakenamegenerator.com/gen-random-fr-fr.php pour ne pas filer toutes vos données persos d'une manière aussi infondée et dégueulasse.
    11/01/2016 10:29:19 - permalink -
    - https://www.indiegogo.com/projects/turris-omnia-hi-performance-open-source-router#/
    nomarkdown
  • Firefox versus spam vidéo non-Flash

    En ce moment, voici ce qui me fait vraiment chier sur le web :
        * Les vidéos natives (pas flash) youtube/dailymotion/arte.tv/autre incrustées sur des sites web avec, dans l'URL, « autoplay=1 ». Genre en bas des articles du Monde ou sur Arte.tv (exemple : http://www.arte.tv/guide/fr/060809-000/world-brain?autoplay=1) ou ailleurs (exemple : http://soocurious.com/fr/pole-sud-photographie/ ).
            Putain mais quand j'ai terminé la lecture d'un article de presse, je réfléchis sur ce que je viens de lire pour me faire une opinion donc me gueuler de la merde dans les oreilles, même si c'est relatif au contenu que je viens de lire, c'est pas du tout le bon plan, ça ferme directement mon esprit, pas moyen que j'écoute ce que vous avez à me dire / à me vendre avec une telle intrusion dans mes pensées ! Game over !
            Même chose quand je suis dans l'optique de regarder « 49 clichés qui vous font voyager dans les étendues glacées du pôle Sud » : je suis dans un moment de détente, je ne m'attends pas à une vidéo (on m'a dit « clichés ») et encore moins à une vidéo précédée par une pub pour des serviettes hygiéniques Always... Je m'attends encore moins à tout cela quand cette page web a été shaarlié chez quelqu'un que je suis (et donc à qui j'accorde une certaine confiance). Conclusion : fermeture de l'onglet Soocurious dans la foulée, ça peut finir que comme ça.
            Pour Arte.tv, c'est beaucoup moins facile de gueuler : j'aurai dû voir le « autoplay=1 » dans l'URL transmise par une pote, on nomme ça la vigilance. :(

        * Youtube autoplaye les vidéos par défaut. On peut désactiver ça mais il faut activer les cookies, chose que je ne fais plus depuis 1 mois (voir à la fin de http://shaarli.guiguishow.info/?1E_GKw pour les détails). Par ailleurs, le niveau sonore du lecteur est aussi stocké dans un cookie... donc à chaque fois, le son d'une vidéo est à fond ! Plutôt que de râler, j'ajoute une exception pour autoriser Youtube à stocker des cookies et basta ? N-O-N, car le raisonnement de Youtube est insidieux : *par défaut*, il est normal de se faire crier dans les oreilles et il est normal d'activer un paramètre pour que ce comportement change. Hé bah non, je suis en désaccord : par défaut, tu fermes ta gueule et tu l'ouvres seulement quand je clique sur une vidéo.


    Quelles solutions à ces problèmes ?
        * Mon premier conseil sera de bien faire attention à bien révoquer les permissions temporaires que vous accordez avec NoScript car ça peut être indirectement à l'origine des autoplay que je décris ci-dessus. Exemple concret : la pollution sonore en bas des articles du Monde se produisait chez moi car une permission temporaire permettait le chargement du cadre contenant la vidéo alors qu'il est bien bloqué par défaut par NoScript.

        * Dans about:config, passer la valeur de « media.autoplay.enabled » à false. Voir : http://techdows.com/2015/06/stop-html5-videos-autoplay-in-firefox-with-a-preference.html . Il faudra donc cliquer sur chaque vidéo pour que la lecture commence. Testé sur mon ordiphone (Firefox 43 via f-droid) : c'est juste parfait < 3 . Cette solution est totalement noob-friendly vu qu'elle ne casse rien : un clic et pouf la vidéo commence, ce que me semble être intuitif. C'est juste trop beau : cette fonctionnalité n'est pas disponible avant la version 41 de Firefox. Dans Debian stable, nous avons la version 38... :'(

        * En attendant Firefox 41, on peut penser à passer la valeur de « plugins.click_to_play » à true dans about:config. Ça fonctionne avec Java, avec Flash mais pas avec les vidéos natives... Même chose pour bon nombre d'extensions recommandées sur les forums pour faire taire ces autoplay : elles fonctionnement uniquement si l'on utilise Flash. Le temps de flash est révolu, merci de mettre à jour vos connaissances et vos habitudes et de ne plus utiliser cette daube non-libre constamment pleine de failles de sécurité !

        * On pourrait ne plus consulter ces sites web de merde (qui deviennent de la merde à l'instant même où ils font subir ces traitements à leurs visiteurs) dans l'optique de leur faire changer de comportement... sauf que Le Monde et Arte.tv restent des références, quoi qu'on en dise. On peut très difficilement se passer de ces sources d'informations (et c'est bien triste). De plus, une vision "par sacrifice", ça ne fonctionne jamais avec les noobs donc il nous faudrait trouver autre chose de toute façon.

        * Un truc noob-friendly en attendant Firefox 41 : avec des écouteurs, il est possible de régler deux volumes sonores indépendamment : celui quand les écouteurs sont branchés et celui quand ils sont débranchés (en tout cas, ça juste fonctionne avec GNOME sans faire de manipulations compliquées, juste ne pas brancher les écouteurs et régler le volume puis brancher et régler le volume et GNOME fait le reste en se souvenant des réglages). Après ce réglage, il suffit de débrancher (même légèrement) les écouteurs quand on ne s'en sert pas et lala le spam vidéo qui hurlera dans le vide. Cette solution est incomplète puisqu'il faut une intervention humaine à chaque fois et qu'elle ne conviendra pas à ceux et celles qui écoutent de la musique en permanence...

        * On pourrait utiliser Adblock Edge en créant un filtre personnalisé contenant « ||^*autoplay=1 ». D'ailleurs, un filtre « ||dailymotion.com^*autoplay=1$domain=anime301.com|mangaxd.com|pokercast.tv|stream4free.pro » est intégré dans « Easylist ». En l'état, il ne peut fonctionner à cause de sa syntaxe erronée mais si l'on reprend la section « ||dailymotion.com^*autoplay=1 » dans un filtre personnalisé, ça juste fonctionne pour une vidéo Dailymotion appelée dans une iframe comme sur Soocurious. Ça ne fonctionne pas en bas des articles du Monde (car la lecture est déclenchée avec javascript quand le visiteur scrolle sur elle). Ça n'empêche pas non plus l'autoplay des vidéos sur Youtube. Cette solution ne me convient donc pas.

        * Par défaut, les contenus audio/vidéo natifs sont bloqués par NoScript (voir dans l'onglet « Objets embarqués » des préférences). Simplement, Youtube, Dailymotion et tant d'autres sont dans la liste blanche pour ne pas que le surf avec NoScript devienne un véritable enfer (compromis, tout ça). Que peut-on faire ?
            * Soit on vire Youtube et Dailymotion de la liste blanche mais 1) ça ne nous protège pas de plateformes dont nous ignorons l'existence et sur lesquelles les emmerdeurs pourraient stocker la merde qu'ils nous balancent dans la tronche. 2) Si l'on souhaite un jour retrouver la liste blanche fournie par défaut (pour une démo, pour du debug,...), comment faire compte tenu qu'on aura enlevé des sites sans se souvenir desquels ? Je ne recommande donc pas cette solution.

            * Soit, on coche la case « Appliquer ces restrictions également aux sites de confiance » dans l'onglet « Objets embarqués » dans les préférences de NoScript. Dans le même temps, on décoche la case « Demander confirmation avant de débloquer temporairement un objet » sinon ça va devenir très très vite insupportable. Cela bloque tous les spams vidéos dans tous les contextes présentés au début de ce shaarli. Je teste cette solution depuis 15 jours et malgré les contraintes et les dommages collatéraux (que je vais exposer un peu plus loin), j'en suis satisfait. \o/
                Il faudra débloquer chaque vidéo avant de pouvoir la regarder en allant dans le menu NoScript puis « Objets bloqués » puis « Autoriser video/<format>@http://domaine temporairement ». Attention à bien prendre l'option qui propose « temporairement » ET qui n'autorise pas uniquement domaine.example/videoplayback mais bien tout le domaine. D'abord parce qu'il faut autoriser tout le domaine pour que ça fonctionne et ensuite pour pouvoir nettoyer les permissions facilement sinon toutes les vidéos déjà regardées se liront automatiquement donc notre objectif ne sera pas atteint.
                Pour ceux et celles qui ne ferment jamais leur Firefox et mettent leur ordi en suspend-to-ram/disk doivent « Revoquer les permissions temporaires » dans le menu NoScript à la fin d'une bonne grosse séance Youtube/autre ou en fin de journée, pour que le filtrage conserve son efficacité.
                Évidemment, le fait d'appliquer le blocage de tout un tas d'objets aux sites de confiance va faire de la merde : Dailymotion ne fonctionne pas toujours car NoScript ne nous offre pas toujours la possibilité de débloquer « video/mp4@http://www.dailymotion.com » pour voir la pub pré-vidéo ; vu que @font-face (techno CSS) est bloquée par défaut, certaines pages web peuvent avoir des symboles illisibles (genre les icônes dans le menu gauche de l'administration Wordpress) alors qu'elles étaient clean auparavant puisqu'incluses dans la liste blanche ; plein de systèmes de commentaires vont disparaître,... Rien qui me gêne à titre perso mais je comprends que ça puisse énerver. Cette solution n'est clairement pas noob-friendly. :'(

        * On pourrait se dire que, plutôt que de bloquer les contenus audio/vidéo natifs avec NoScript, on pourrait bloquer les iframes. C'est toujours dans le menu « Objets embarqués » des préférences que ça s'active. Néanmoins, on aura le même problème que ci-dessus : les sites web en liste blanche comme Youtube/Dailymotion permettront toujours de vous cracher des vidéos en pleine tronche. On notera donc que NoScript bloque la destination d'une frame et non pas la source. Je veux dire : quand j'autorise une frame « dailymotion.com » je comprends ça comme "autoriser une frame si la balise XHTML « iframe » est située sur le site web dailymotion.com", pas comme "autoriser une frame si le contenu qu'elle contiendra provient de dailymotion.com"... Notons également que cela n'empêchera pas l'autoplay sur Youtube et Arte.tv ainsi que le spam vidéo en bas des articles du Monde (car actionné par javascript) donc cette solution ne répond pas totalement à mon besoin.


    Conclusion : si votre version de Firefox est >= 41, passez la valeur de « media.autoplay.enabled » à false dans about:config pour virer le spam vidéo non-Flash qui pollue le web en ce moment (il faudra cliquer sur toute vidéo pour en commencer la lecture). Si vous n'avez pas cette version de Firefox (comme avec Debian stable, par exemple), je n'ai pas trouvé de solution parfaite. La moins pire est donc d'utiliser NoScript en lui demandant de virer les objets embarqués *même* sur les sites web inclus dans la liste blanche (voir item numéro 6 pour les détails et dommages collatéraux). Je teste cette dernière solution depuis 15 jours.
    10/01/2016 21:40:52 - permalink -
    - http://shaarli.guiguishow.info/?aJehow
    nomarkdown
  • Extensions Firefox pour protéger sa vie privée

    Les extensions Firefox d'Aeris. Je vais commenter uniquement les extensions que je n'ai pas encore commentées un jour sur ce shaarli.

    Au-revoir-UTM : tout comme le script Greasemonkey « UTM Stripper » (http://userscripts-mirror.org/scripts/show/71813), ça enlève le tracker utm à l'affichage uniquement (ce qui est pratique quand on veut shaarlier/twitter/autre la ressource de manière propre) mais la requête HTTP part sur le réseau avec le tracker. Extension sans intérêt selon moi.


    Pure URL (https://addons.mozilla.org/en-US/firefox/addon/pure-url/ , GPL 3.0) : contrairement à « Au-revoir-UTM » et au script Greasemonkey « UTM Stripper », le tracker est supprimé à l'affichage mais aussi avant que la requête HTTP soit faite. Utilité = 100% donc, après un mois de test, je garde. Je la recommande même aux noobs vu qu'elle ne casse vraiment rien.


    Decentraleyes (https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/ , MPL 2.0) : je teste depuis un mois et le verdict est très clair : très bon, je garde. Je la recommande même aux noobs vu qu'elle ne casse vraiment rien.


    DNSSec/TLSA Validator, SSleuth, Cookie Monster : je ne conteste pas leur utilité mais je ne souhaite pas installer ces extensions pour ne pas alourdir mon Firefox. Il ne faut jamais oublier que chaque extension installée détourne et complète le flot d'exécution par défaut de l'affichage d'une page web via des hooks en tout genre dans tous les sens. Ça a forcément un impact sur les performances de Firefox.
        * DNSSec/TLSA Validator : DANE dépend de DNSSEC et le déploiement est loiiiiiiiin d'être commencé donc une extension m'informant qu'elle n'a rien pu vérifier sur 99% des sites web, ça ne me sert à rien sauf à plomber les performances de mon navigateur. Selon moi, on est encore à la phase où il faut convaincre les webmasters de déployer et ça se fait sans extension dans le navigateur.

        * SSleuth : si je regardais la fiabilité de la configuration TLS du peu de sites web sur lesquels je dévoile un peu de mes données persos, je ne surferais plus du tout : on sait que c'est tout pourri de partout, pas la peine de se le rappeler tout le temps. La seule chose à faire, c'est de râler contre les webmasters à coup de testeurs de confs TLS externes (voir http://shaarli.guiguishow.info/?QBqR6Q ). De plus, comme l'écrit Aeris : cette extension juge uniquement les paramètres négociés (version de TLS et suite cryptographique utilisées)... Oui bah je peux les afficher et juger moi-même de leur fiabilité en cliquant sur le cadenas dans la barre d'adresse puis sur « Plus d'informations », je n'ai pas besoin d'alourdir mon Firefox pour ça.

        * Cookie Monster : on peut aussi aller dans préférences -> vie privée -> décocher « Accepter les cookies » et utiliser « Exceptions... » pour ajouter des domaines sur lesquels les cookies seront autorisés. Pas besoin d'alourdir mon Firefox pour ça. Alors oui, Cookie Monster met en évidence les cookies en jeu plus simplement et elle permet de recharger automatiquement les pages web après ajout de l'exception (à la NoScript) mais bon... Bref, ça simplifie la vie mais on peut s'en passer.


    uBlock : je n'ai toujours pas essayé... Je suis satisfait de mon Adblock Edge donc c'est vrai que je ne cherche pas ailleurs...


    Blender et uMatrix : no fucking way, je n'ai pas envie de rendre ma navigation sur le web totalement insupportable.


    Smart Referer (https://addons.mozilla.org/en-US/firefox/addon/smart-referer/ , WTFPL 2.0) : je l'ai aussi vu passer chez Mitsu et chez Le Hollandais Volant présenté comme "ça ne casse rien". Il y a plus de 10 ans, je bidouillais déjà le referer avec une extension (dont le nom m'échappe complètement) et déjà, à l'époque, ça cassait beaucoup de sites web. C'est donc avec beaucoup d'appréhension que j'ai testé Smart Referer. Verdict après un mois d'essai : c'est utilisable, ça casse des sites web comme voyages-sncf (mais pas Captain Train ;) ) ou comme le site web d'un grand prestataire européen de services Internet... Vu que c'est des sites web que je ne consulte pas tous les jours, je garde mais je ne recommande pas aux noobs (il faut en déduire que la panne vient de cette extension, la désactiver,... bref, c'est le meilleur moyen de dégoûter les gens).


    J'ai supprimé Greasemonkey. Je l'utilisais pour trois scripts : un dont j'ai oublié le nom et dont la fonctionnalité peut-être remplacée par une fonctionnalité native activable dans about:config (on ne pense pas assez souvent à aller chercher de ce côté-là avant d'engraisser notre Firefox d'extensions :S ), UTM Stripper (http://userscripts-mirror.org/scripts/show/71813) et Don't track me Google (http://userscripts-mirror.org/scripts/show/121923).
        UTM Stripper est totalement inutile face à Pure URL (la raison est donnée au début de ce shaarli ;) ). Il ne reste donc plus que Don't track me Google.
        Garder Greasemonkey pour un seul script, c'est idiot si l'on tient un tout petit peu aux performances de son navigateur web. Ce script a deux fonctionnalités : masquer le referer et virer l'indirection de Google sur les liens dans Search. Masquer le referer, c'est le rôle de Smart Referer à présent. Par contre, je suis totalement incapable de me passer de la fonctionnalité de nettoyage des liens Google Search car c'est super pratique. Heureusement, une alternative existe et elle juste fonctionne : l'extension « Google search link fix » (https://addons.mozilla.org/en-US/firefox/addon/google-search-link-fix/ , MPL 2.0). Je la recommande même aux noobs (plutôt shaarlieurs/twitteurs,... ceci dit) car elle ne casse vraiment rien.


    Par ailleurs, cela fait un mois que j'ai désactivé le support des cookies dans Firefox. Là encore, j'avais déjà testé il y a plus de 10 ans et j'en garde un très mauvais souvenir. Je m'attendais donc à un véritable enfer, notamment sur les sites administratifs (CPAM, banques, opérateur de téléphonie,...) mais en vrai, ça passe car le mécanisme d'exception du gestionnaire de cookies de Firefox fonctionne pour le domaine indiqué et pour tous ses sous-domaines. Autoriser ameli.fr autorise aussi assure.ameli.fr ! Autoriser mabanque.example autorise tous les répartiteurs de charge en truc-incompréhensible.mabanque.example !
        Évidemment, c'est relou sur d'autres sites web : slashdot veut absolument des cookies pour fonctionner (pourquoi ?!) ; même chose sur des sites techniques comme bgp.he.net ; sans cookies, youtube autoplay les vidéos et passe automatiquement à la vidéo suivante de la playlist qui sont deux comportements par défaut que l'on peut désactiver et mémoriser dans un cookie ; tout etherpad a besoin des cookies... J'ai adopté un comportement psychorigide dit du "je trouverai l'information ailleurs" donc je n'ajoute pas tous les sites web qui me le demandent à la liste des exceptions mais uniquement ceux sur lesquels j'ai un compte et je vais chercher l'information ailleurs.
        Je ne recommande donc pas la désactivation du support des cookies chez les noobs.
    10/01/2016 16:53:07 - permalink -
    - https://blog.imirhil.fr/2015/12/08/extensions-vie-privee.html
    nomarkdown
  • De l’authentification sans mot de passe

    Très bonne vulgarisation, à lire absolument.

    « L’authentification a pour but de donner l’accès à une ressource protégée en vérifiant par une manière donnée que la personne qui cherche à obtenir l’accès est bien celle qu’elle dit être. Via un mot de passe ou une phrase de passe, on authentifie une personne par une chose qu’elle sait (son mot de passe). On pourrait aussi authentifier une personne par ce qu’elle détient, un petit objet physique dont on a la certitude qu’elle en est bien l’unique détentrice. On a de la chance, de tels objets existent.

    La difficulté de conception de ces objets est d’arriver à trouver une méthode permettant de prouver qu’on est bien détenteur de l’objet à l’instant où on réalise l’authentification. On ne peut évidemment pas se baser sur des choses aussi simple qu’un numéro de série inscrit sur l’objet ou qu’il enverrait par un moyen ou par un autre, puisque qu’il suffirait de récupérer ce numéro une seule fois pour pouvoir s’authentifier sans avoir réellement l’objet sur soi.

    La plupart des systèmes d’authentification de ce type repose donc classiquement sur des clefs de chiffrement (symétrique ou asymétrique) dont la clef privée va être en écriture seule sur l’objet, et dont personne ne pourra donc jamais avoir accès sinon le fabriquant (et généralement même pas son utilisateur).

    [...]

    On va commencer par le plus utilisable en pratique, et le plus libre, Yubikey.

    Une Yubikey est une petite clef USB qui simule un clavier USB. À l’intérieur se trouve une clef AES en écriture seule (pas de lecture possible de la clef), possédée aussi par Yubico (l’entreprise fabriquant la Yubikey).

    À chaque appui sur le bouton de la clef, celle-ci va émettre une chaîne composée de son identifiant de clef, d’un compteur de session (s’incrémente à chaque branchement de la clef), d’un compteur d’horloge (s’incrémente 8× par seconde) et d’un compteur d’utilisation (s’incrémente à chaque appui sur le bouton). La chaîne complète est chiffrée avec la clef AES interne, et envoyée ainsi à l’application qui cherche à vous authentifier.

    Votre application va alors contacter le serveur de Yubico et lui soumettre la chaîne chiffrée. Le serveur possédant lui aussi la clef privée, il peut déchiffrer les données et les vérifier. S’il est capable de déchiffrer les données et que l’identifiant d’utilisateur correspond bien à celui associé à la clef, on est en présence d’une clef valide. Si les valeurs de tous les compteurs sont bien strictement supérieures à celles de la dernière chaîne validée, on est en présence d’un nouveau identifiant et non d’un rejeu d’une chaîne interceptée.

    La dernière propriété (la vérification des compteurs) est assez intéressante, puisque même si vous parvenez à subtiliser une clef et à lui faire générer des millions de chaînes pour ensuite la remettre à sa place sans que son propriétaire ne remarque son absence, la prochaine utilisation de la clef invalidera l’intégralité de toutes les chaînes enregistrées (compteur de session ou d’utilisation inférieur au compteur de la clef) ! Vous pouvez même volontairement générer des clefs pour n’importe qui (au pif, une des miennes : cccccccirlrfrvldfubllgjdjkbdgeejbuvcfcvfdurb, que vous pouvez tester sur le serveur de démo de Yubico), ça ne compromet pas votre sécurité (sauf à vous permettre de bruteforcer la clef AES 128 de la clef).

    Une fois la vérification de la chaîne réalisée, le serveur Yubico répond à votre application (via du chiffrement asymétrique) si elle est valide ou non, et votre application autorise alors ou non l’accès à la ressource protégée.

    Pas mal d’applications sont compatibles avec Yubikey. LUKS, PAM, LastPass, GitHub, DropBox, WordPress, Drupal, RoundCube, OwnCloud, j’en passe et des meilleurs.

    Tous les logiciels nécessaires à l’intégration d’une Yubikey sont libres et intégrés nativement à la plupart des distributions GNU/Linux. Vous avez même tout le nécessaire pour monter votre propre serveur de validation si vous ne voulez plus dépendre de celui de Yubico.

    Cette clef ne coûtant que $25, ça en fait un excellent moyen d’authentification à pas trop cher.


    [ NDLR : les yubikeys peuvent aussi être utilisées comme des cartes à puce OpenPGP (voir : http://shaarli.guiguishow.info/?VMg7XA et http://shaarli.guiguishow.info/?Me7lIQ ) ou comme  des carte à puce PIV (voir http://shaarli.guiguishow.info/?rftZjA ). ]

    [...]

    Une autre solution basée sur un matériel physique dédié : les OTP c100 et c200 de chez FTSafe

    Le principe est le même que pour les Yubikeys, une clef privée est embarquée à l’intérieur et ne peut en sortir. Cette clef privée vous est aussi communiquée sur un bout de papier (dans un envoi séparé physiquement et temporellement de celui du token physique lui-même !!!). Lorsqu’on appuie sur le bouton, l’écran affiche un numéro à 6 chiffres calculé à partir de la clef privée et d’un compteur (pour la version HOTP / « event based ») ou de l’heure (TOTP / « time based »).

    Quand on veut s’authentifier la première fois auprès d’une ressource, il suffit de recopier sa clef privée et de saisir la valeur affichée et le serveur peut alors identifier votre valeur initiale de compteur (HOTP) ou d’horloge (TOTP). Pour chaque authentification suivante, on saisit uniquement la valeur affichée et le serveur est capable de faire le même calcul que le token. Si la valeur calculée est identique à celle fournit par l’utilisateur, on est bien en présence du token physique. [...]

    Les horloges du serveur et du token (TOTP) ou du compteur (HOTP) ne sont pas forcément tout à fait identiques (décalage de l’horloge ou utilisateur qui s’est amusé à appuyer plusieurs fois sur le bouton), le serveur accepte donc une légère tolérance dans la valeur d’horloge et de compteur (en fait il calcule X valeurs et la valeur saisie par l’utilisateur doit être parmi ces X, avec généralement X = 4).
    Les petits malins remarqueront qu’il faut donc un token HOTP par service (chaque authentification sur un service désynchroniserait le compteur côté serveur des autres services), alors qu’on peut réutiliser un token TOTP pour autant de service qu’on souhaite (à ceci prêt que tous les services auront accès à votre clef privée et pourraient donc s’authentifier ailleurs à votre place).

    [...]

    Des solutions existent pour faire du TOTP en version logicielle sur téléphone mobile, l’import de la clef privée se faisant via le scan d’un code QR. On perd simplement la capacité du matériel à empêcher d’extraire votre clef privée (vous vous faites voler votre téléphone éteint ou verrouillé, on peut en extraire la clef quand même).

    [...]

    X.509 permet de faire la vérification dans l’autre sens, et autorise ainsi au serveur de s’assurer de l’identité du client via un certificat client, tout comme le serveur de votre banque vous présente le sien. Cette possibilité est malheureusement trop peu utilisée, le seul exemple notable étant la tentative de l’administration fiscale française en 2009 qui s’est soldée par un cuisant échec face à la complexité technique engendrée…

    L’énorme avantage de la solution du certificat X.509 personnel est que c’est la seule solution qui passe l’échelle. En effet, les solutions précédentes sont utilisables pour un petit groupe d’une dizaine de personnes, après la gestion devient trop complexe (révocation, perte, arrivée d’un petit nouveau…). X.509 étant basé sur une chaîne de confiance, on peut au contraire créer sa propre autorité de certification, gérée par sa propre PKI, et tout certificat émis par cette autorité est valide et reconnu comme tel par le système. On peut alors générer à la chaîne des pilées de certificat sans avoir à toucher à une ligne de configuration d’un des services, alors que les solutions précédentes demandaient une intervention manuelle à chaque ajout/retrait d’une personne. X.509 fournit aussi tous les outils pour gérer la révocation d’un certificat (perte, départ, compromission…).

    Cette solution a aussi l’avantage d’être implémentée nativement dans tous les navigateurs web et dans la plupart des outils pouvant utiliser TLS (courriel, messagerie instantanée…). Par contre, elle reste mal comprise des utilisateurs, demande un peu de gestion régulière (renouveler les certificats chaque année…) et pose parfois des problèmes techniques (importer son certificat utilisateur sur X machines ou navigateurs, logiciels ne supportant pas ou mal ce mode de fonctionnement…).

    [...]

    Empreintes digitales, oculaires, palmaires… Non, je rigole bien sûr ! Ces solutions ne sont pas des solutions d’authentification, mais uniquement d’identification.

    Une solution d’authentification doit pouvoir être révocable à tout moment en cas de compromission. Vous pouvez changer votre mot de passe ou révoquer votre Yubikey/C100/X.509, mais vous ne pouvez en aucun cas changer vos empreintes digitales ou votre fond d’œil. Et pourtant, faites confiance à un gus dans un garage pour vous pirater vos empreintes digitales et ne sous-estimez jamais l’intelligence d’une petite fille de 5 ans.

    Servez-vous des données biométriques tout au plus pour vous assurer de l’identité de votre utilisateur (en remplacement d’un login par exemple), mais certainement pas en remplacement d’un mot de passe !

    De la même manière, ne protégez pas uniquement vos ressources critiques avec seulement un token, demandez aussi à votre utilisateur de saisir un mot de passe standard en supplément, ceci afin de parer au vol du token (ou au collègue qui aura lu ponctuellement un de vos OTP). Ce mot de passe a moins besoin de répondre aux critères standards d’un bon mot de passe (unicité, longueur, aléa…) puisqu’il vient en complément de la solution d’authentification forte. »
    10/01/2016 14:26:06 - permalink -
    - https://blog.imirhil.fr/2015/11/25/password-otp.html
    nomarkdown
  • A Logarithmic Map of the Entire Known Universe in One Image | Colossal

    WOW O_O

    Via http://lehollandaisvolant.net/?id=20160109184753
    09/01/2016 19:29:57 - permalink -
    - http://www.thisiscolossal.com/2016/01/a-logarithmic-map-of-the-entire-known-universe-in-one-image/
    nomarkdown
  • Attentats de Paris: «Charlie» n’aurait pas voulu de la France d’aujourd’hui» - Monde - tdg.ch

    « «Le dessin en une et l’édito de Riss dans le numéro anniversaire sont totalement dans le ton de ce que fait Charlie Hebdo depuis quarante ans. Je suis surpris des réactions aussi vives. Ce journal a toujours utilisé sa liberté de railler: il a toujours été antireligieux et sans concession.» En effet, le Charlie actuellement dans les kiosques, avec un dieu assassin en une, a suscité de nombreuses réprobations en France et ailleurs dans le monde.

    [...]

    «La France de janvier 2016, c’est le contraire de ce que souhaitait le journal… J’imagine mal un Cabu, par exemple, souscrire à la politique du tout-sécuritaire proposée par Manuel Valls», analyse l’historien. Pour qui le modèle de société libertaire et postsoixante-huitard que représentait le journal a toujours affiché sa méfiance de l’autorité.

    [...]

    «Cabu aurait refusé la Légion d’honneur. Lui la décerner, en plus à titre posthume, a quelque chose de risible!» s’amuse Christian Delporte. «Quand on connaît son travail, on l’imagine mal sous un drapeau tricolore entonner la Marseillaise. Il n’aimait pas les mots d’ordre patriotiques.»

    Etat d’urgence, déchéance…

    «Ce n’est évidemment pas la société rêvée par Cabu et ses acolytes dans les années 70 qui ne voyaient le progrès que dans les libertés individuelles», analyse Christian Delporte. Et pour l’historien contemporain, la controverse autour de la «déchéance de nationalité» montre surtout à quel point il y a une rupture entre les élites et le peuple. «Ce n’est pas le même débat. D’un côté, c’est technique, juridique et philosophique. De l’autre, on demande aux gens de se prononcer sur le fait de savoir si des terroristes qui attaquent la France sont encore Français: que voulez-vous qu’ils répondent…»

    Dessinateur emblématique de toute une génération libertaire, Cabu sera aussi chanté dimanche lors de la cérémonie place de la République par Johnny. Le Canard enchaîné rappelle, à raison, que le dessinateur antimilitariste et écolo aura droit en plus des chœurs de l’armée française à «l’idole des beaufs» qu’il n’aimait pas! «Faire chanter Johnny, c’est comme tout le reste: en contradiction avec ce que dit ce journal. Charlie, ce n’est pas un JT à 20 heures! Quand Charlie est le symbole du rassemblement, il y a erreur sur la personne», pense l’historien.

    [...]

    Mais qu’est-ce qui a changé?

    Christian Delporte: «Dans le fond, rien n’a changé. La polémique sur l’actuel Charlie Hebdo montre à quel point il est encore difficile d’aborder certains sujets. Pour être clair, on ne dessine plus autant de prophètes qu’avant. Les dessinateurs s’autocensurent. »


    Gros +1. Faire entrer Cabu dans la Légion du déshonneur, faire chanter notre Jojo national pour ceux et celles qui sont tombé-e-s parce que la Maire de Paris kiffe bien « Un dimanche de janvier » (source : le Canard du 6 janvier) alors que Cabu est un antimilitariste convaincu et un anti-fan d'Hallyday... C'est ignoble... Tout comme d'écrire « Wolinsky » (au lieu de Wolinski) sur la plaque commémorative... Sérieux, personne à la mairie de Paris n'a eu le temps de vérifier ?! Le pouvoir pourrit même les plus pur-e-s à l'instant même où ils/elles en ont : toute cette cérémonie de commémoration n'est que de la poudre aux yeux pour afficher des valeurs qui ont bien disparue, pour rassurer, pour rappeler au Peuple qu'on est là et qu'on est légitime et pour faire passer la pilule des choses horribles qui se déroulent en France (état d'urgence, déchéance de nationalité,...).

    Finalement, Luz avait raison (voir http://shaarli.guiguishow.info/?Vyp9eg ) : on a fait devenir Charlie le symbole que l'on a voulu qu'il devienne mais que ceux et celles qui sont tombé-e-s n'ont jamais été et qu'ils n'ont jamais voulu être. C'est à gerber.

    Ce genre de comportements et de bourdes ne devraient même pas exister. Tout cela m'attriste et me dégoûte...
    08/01/2016 19:52:48 - permalink -
    - http://www.tdg.ch/monde/Charlie-n-aurait-pas-voulu-de-la-France-daujourdhui/story/28115928
    nomarkdown
  • Quels outils / sites web pour tester vos configurations TLS ?

    Il faut toujours tester ses configs pour savoir si l'on n'a pas fait d'erreur, si ça fonctionne bien comme attendu, s'il ne reste pas des trous de sécurité béants,... Avec quels outils tester ses configurations TLS ? J'en ai présenté plusieurs sur ce shaarli mais c'est clairement le bazar. Il est l'heure de faire un bilan :

        * https://www.ssllabs.com/ - HTTPS uniquement - Ce que j'aime : une référence mise à jour très rapidement lors de la découverte de nouvelles faiblesses/vulnérabilités + informations complètes sur la chaîne des certificats + test des faiblesses/vulnérabilités.

        * https://www.hardenize.com/ - DNS / DNSSEC / DANE TLSA / DNS CAA, x509 / TLS, web (redirection HTTP => HTTPS, CSP, SRI, CT) et emails (STS, DMARC). ÉDIT DU 06/09/2022 : j'ai ajouté ce testeur ce jour. FIN DE L'ÉDIT DU 06/09/2022

        * https://internet.nl/ - RPKI, IPv6, DNS / DNSSEC / DANE TLSA, x509 / TLS, web (redirection HTTP=>HTTPS, CSP, Referer-policy), et emails (SPF, DKIM, DMARC) . ÉDIT DU 06/09/2022 : j'ai ajouté ce testeur ce jour. FIN DE L'ÉDIT DU 06/09/2022

        * https://cryptcheck.fr/ (ancienne version : https://tls.imirhil.fr/ ) - HTTPS, SMTP, XMPP - Ce que j'aime : présentation très épurée et claire (grâce aux couleurs) + affichage des infos concernant l'échange Diffie-Hellman + code dispo sous licence libre (https://github.com/aeris/cryptcheck) même si l'on n'a aucune certitude que c'est bien ce code qui tourne sur le serveur en dehors de la confiance que l'on accorde (ou non) à Aeris. S'intéresse uniquement à la crypto donc les certificats et les vulnérabilités comme Heartbleed sont exclus de son périmètre.

        * https://xmpp.net/ - XMPP uniquement - Ce que j'aime : plutôt complet + affichage clair + il teste des technos novatrices comme DANE + affichage des informations concernant l'échange de Diffie-Hellman. Il s'intéresse aux certificats et à la crypto donc les vulnérabilités comme Heartbleed sont exclues de son périmètre.

        * https://testssl.sh/ - HTTPS + les protocoles supportant STARTTLS supportés par votre version d'OpenSSL (XMPP, IMAP/POP3,...), syntaxe : ./testssl.sh -t <protocol> <hostname>:<port>. Exemple : ./testssl.sh -t imap <host>:143 - Ce que j'aime : outil local, pas de dépendance à un service externe (en contrepartie, ça veut dire qu'il dépend des options de compilation et de configuration de votre openssl local donc tout n'est pas testé contrairement à tls.imirhil.fr par exemple, donc attention !) + logiciel libre. Ce que je n'aime pas : pas d'information sur la chaîne des certificats et pas d'informations sur l'échange de clés Diffie-Hellman (parce que ma version d'openssl ne sait pas communiquer cette information, apparemment). De plus, pour moi, il y a un fail sur le test BEAST, voir http://shaarli.guiguishow.info/?BdwFxw.

        * ÉDIT DU 06/09/2022 : ce service n'existe plus. FIN DE L'ÉDIT DU 06/09/2022. https://starttls.info/ - SMTP uniquement - Je n'aime pas ce service : informations trop succinctes, ne teste quasiment rien (ce n'est pas uniquement la taille des blocs utilisés en interne des algos cryptos qui est importante... ÉDIT DU 26/09/2016 À 16H15 : ceci est une connerie, voir https://sweet32.info/ . FIN DE L'ÉDIT).


    Je vous conseille évidemment de tester vos configurations avec plusieurs outils afin de ne pas être sensible à un oubli ou à un bug d'un outil en particulier.

    Pour la même raison, je vous conseille de tester depuis plusieurs machines quand vous utilisez testssl.sh. Typiquement, en testant depuis mon laptop, testssl.sh m'informe que mon serveur SMTP est vulnérable à Heartbleed alors qu'il ne voit rien sur le serveur web présent sur le même serveur. Heartbleed est une faille côté OpenSSL, pas côté application donc ce résultat n'est pas cohérent. En faisant tester par un ami, c'est OK alors qu'on utilise tous les deux openssl 1.0.1k packagée dans Jessie sur une architecture amd64... Même résultat en testant depuis un autre de mes serveurs. Toujours la même version d'OpenSSL. Un « sudo apt-get install --reinstall openssl » sur mon laptop corrige l'erreur mais c'est plutôt effrayant. :S

    \#testeur #testeurs
    04/01/2016 14:47:03 - permalink -
    - http://shaarli.guiguishow.info/?QBqR6Q
    nomarkdown
  • GoLeaks : une plateforme pour lanceurs d'alerte dans le Grand Ouest - Next INpact

    « Le Grand Ouest aura bientôt sa plateforme de fuite de documents. Depuis la mi-décembre, le projet GoLeaks s'est lancé sur Kickstarter, demandant 5 400 euros pour permettre aux lanceurs d'alerte de l'ouest de fournir facilement aux journalistes leurs documents sensibles. Il a été fondé au printemps par deux nantais : le hacker Datapulte et Romain Ledroit, rédacteur en chef des Médias libres, qui se sont rencontrés sur un plateau de la radio associative Radio Prun'. Pour eux, les nombreux sujets polémiques de leur région manquent encore d'alertes citoyennes.

    [...]

    Cette plateforme est fondée sur GlobaLeaks, un système open source spécifiquement conçu pour cet usage. Ce projet a été choisi face à d'autres (comme SecureDrop) parce qu'il est pensé pour être partagé entre plusieurs rédactions. Le but de GoLeaks est ainsi de pouvoir envoyer des documents ainsi que discuter avec des journalistes choisis et formés par l'équipe du service. Pour le moment, des médias nationaux et régionaux ont été contactés. De toutes tailles, assure l'équipe.

    Au lancement, une dizaine de journalistes seront présents, dont probablement certains d'un petit journal vendéen. Pour chacun, le site affichera une biographie avec ses spécialités et quelques articles. [...]

    Le service sera uniquement accessible par Tor, la version sur le web classique n'étant qu'un site vitrine avec quelques tutoriels. [...]

    D'un point de vue technique, la sécurité est assurée de plusieurs manières. GlobaLeaks serait en soi une base technique fiable, maintenue et auditée régulièrement. L'hébergement chez FAIMaison permet à la fois de connaître l'équipe et permet d'accéder physiquement aux serveurs en cas de besoin. Enfin, GoLeaks promet un travail constant sur la configuration et la sécurité de sa plateforme. Des audits seront menés, mais bénévolement. « Vu l'économie du projet, nous n'avons pas vraiment le choix » défend Datapulte.

    Si la plateforme est le support du projet, ce n'est pas son seul objectif. « Le gros défi est de sensibiliser les citoyens à cette possibilité de transmettre des documents d'utilité publique sans le compromettre » affirme le hacker, selon lequel la majorité du budget passera dans cette sensibilisation. Ils comptent ainsi se rendre un peu partout dans le Grand Ouest pour rencontrer citoyens et journalistes pour les former.

    Pour trouver ses informations, la plateforme fonctionnera par campagnes de recherche, de trois mois. De quoi assurer une certaine clarté sur les sujets traités et relancer régulièrement l'intérêt autour du service.

    [...]

    Le financement via Kickstarter doit permettre au projet de tenir un et demi. « C'est une expérience. Comme toutes les expériences, elle a un temps donné. Ça ne veut pas dire qu'on va s'arrêter dans 18 mois » déclare Datapulte, qui prévoit de trouver un autre modèle si la plateforme réussit son pari.

    Une des pistes privilégiées serait une adhésion des journalistes et médias de la plateforme à une association, pour la financer. Une autre idée serait simplement de chercher des financements auprès de fondations. « Nous sommes les premiers à faire ça à l'échelle régionale et nous voulons voir ce que ça donne avant de mettre en place quelque chose d'un peu plus costaud » explique GoLeaks.

    Pour le moment, le projet occupe une bonne partie du temps libre de ses initiateurs. Les déplacements réguliers seraient donc une charge supplémentaire. Si la campagne Kickstarter échoue, ils maintiendront donc la plateforme dans la limite de leurs moyens. À moyen terme, l'équipe compte lancer une deuxième version dans une autre région, avant de potentiellement mailler le territoire. Elle aurait déjà été contactée dans ce sens. »


    Je pense qu'on n'a pas assez de médias d'investigation généralistes libres (là comme ça, à la va-vite, je vois uniquement Mediapart et le Canard...). Ces plateformes intermédiaires me semblent être une très bonne voie à explorer puisque ça mutualise les moyens entre plusieurs journaux donc réduction des coûts mais forte expertise.

    De plus, l'aspect sensibilisation prôné par le projet est super important : la réussite de telles plateformes dépend directement de si l'on arrive à redonner espoir à chacun-e que l'on peut, à notre échelle de moins-que-rien, dénoncer les choses qui ne vont pas, que l'on peut faire cesser des mauvais comportements d'entreprises, d'associations et d'élus en montrant des faits, le tout sous vérifications par des journalistes (on est donc sur un modèle de Wikileaks à ses débuts, pas ce qu'il est devenu ensuite, notons ;) ) pour éviter les dérives. Il faut lutter contre la résignation : un monde plus clean est possible.

    En un mot : soutenez-les, c'est important !
    04/01/2016 12:22:26 - permalink -
    - http://www.nextinpact.com/news/97876-goleaks-plateforme-pour-lanceurs-dalerte-dans-grand-ouest.htm
    nomarkdown
  • Renforcement des configurations TLS sous Debian GNU/Linux Jessie

    Ce n'est pas le passage à Jessie lui-même qui va durcir vos configs TLS mais le fait que des logiciels serveur y sont présents dans une version qui ouvre de nouveaux horizons. Il s'agit d'Apache httpd, d'ejabberd et de dovecot. Je repars des configurations que j'ai donné dans un autre shaarli (à la fin) : http://shaarli.guiguishow.info/?GPqmpA

    Commençons par Dovecot :
        * La directive de configuration « ssl_prefer_server_ciphers = yes » permet de forcer les clients à respecter l'ordre du serveur dans le choix de la suite cryptographique à utiliser parmi toutes celles supportées des deux côtés. Cette directive évite le choix d'une suite cryptographique sous-optimale (bug ou attaque par repli afin de choisir une suite que l'attaquant sait cassable facilement). Voir https://www.howtoforge.com/tutorial/how-to-protect-your-debian-and-ubuntu-server-against-the-logjam-attack/

        * La génération des paramètres de Diffie-Hellman a complètement changé depuis la branche 2.1 : « When Dovecot starts up for the first time, it generates new 512bit and 1024bit Diffie Hellman parameters and saves them into <prefix>/var/lib/dovecot/ssl-parameters.dat. Dovecot v2.1.x and older regenerated them every week by default, but because the extra security gained by the regeneration is quite small, Dovecot v2.2 disabled the regeneration feature completely. » (source : http://wiki.dovecot.org/SSL/DovecotConfiguration ). Avec ce changement, rien de nous empêche de générer des paramètres de Diffie-Hellman plus robustes, même sur un tout petit serveur genre OlinuXino ou Raspberry Pi avec « ssl_dh_parameters_length = 4096 », par exemple. J'ai mis 4096 bits dans cet exemple car c'est la taille de la clé dans le certificat x509 utilisé par ce serveur. Je rappelle que l'ANSSI recommande 3072 bits et que la NSA dit 3072 bits minimum (voir http://shaarli.guiguishow.info/?r6npkg ). ;) Après l'ajout de cette directive de configuration, Dovecot générera les paramètres de Diffie-Hellman au prochain reload/restart. :)


    Continuons avec Apache httpd :
        * « Beginning with version 2.4.7, mod_ssl makes use of standardized DH parameters with prime lengths of 2048, 3072 and 4096 bits and with additional prime lengths of 6144 and 8192 bits beginning with version 2.4.10 (from RFC 3526), and hands them out to clients based on the length of the certificate's RSA/DSA key. » (source : https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslcertificatefile ). C'est déjà une excellente nouvelle : on gagne en sécurité sans avoir quoi que ce soit à configurer.

        * On voudrait aussi pouvoir utiliser des paramètres de Diffie-Hellman personnalisés afin d'être sûrs de leur unicité (pour éviter les attaques par pré-calcul) et/ou de leur bonne génération (utiliser un bon générateur de nombre pseudo-aléatoires). Pour cela, on peut utiliser la directive de configuration « SSLOpenSSLConfCmd » (voir https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslopensslconfcmd ). Exemple : « SSLOpenSSLConfCmd DHParameters "/etc/apache2/ssl/dh_4096.pem" » (voir http://shaarli.guiguishow.info/?hCgBYQ pour apprendre à générer des dhparam). L'ennui, c'est qu'il faut avoir OpenSSL >= 1.0.2 alors que nous avons uniquement la version 1.0.1 dans Jessie... Une autre idée est de chaîner le fichier contenant les paramètres DH au fichier contenant votre certificat x509 (pour ce faire : cat moncert.pem dh_4096.pem > cert+dh.pem) et de donner ce chaînage à manger à « SSLCertificateFile ». Perso, je ne fais pas ça car je factorise un même fichier certificat entre tous mes logiciels serveur car j'ai la flemme de changer X fichiers à chaque renouvellement de certificat. J'attendrais donc OpenSSL 1.0.2


    Terminons avec ejabberd :
        * Ejabberd permet enfin de définir la liste des suites cryptographiques que l'on souhaite utiliser ! C'est la directive de configuration « ciphers » dans un listener c2s et la directive « s2s_ciphers » pour la liste à utiliser lors des communications s2s (entre deux serveurs XMPP). On peut utiliser une liste plus robuste comme celles que je donne à l'adresse suivante : http://shaarli.guiguishow.info/?YddWtQ . Exemple : « ciphers: "EDH+aRSA EECDH+aRSA aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4 !SEED !CAMELLIA" »

            Attention : il y a un comportement totalement incompréhensible : « ciphers » devrait agir uniquement sur la connexion entre mon client XMPP et mon serveur. Or, si je sélectionne uniquement des suites cryptos supportant la confidentialité persistante (parce que je sais que mon client, Gajim, supporte les algos PFS), booom, la plupart de mes contacts deviennent injoignables (remote-server-not-found). Une capture réseau côté serveur montre que mon serveur initie des connexions mais que les négociations TLS échouent et les connexions sont clôturées. Aucun problème avec les contacts qui utilisent, comme moi, un ejabberd et un gajim venant de Jessie ET (et c'est important), qui ont défini une liste de suites cryptos moins moisie que celle par défaut dans leur config ejabberd. Aucun problème si, dans ma config ejabberd, je mets uniquement des suites cryptos PFS dans s2s_ciphers et des suites PFS mais pas seulement dans ciphers... Oui, ça n'a aucun sens, il y a clairement un os quelque part...


        * On a également à notre disposition la directive de configuration « protocol_options » (et son amie « s2s_protocol_options » ;) ) qui va nous permettre de virer SSLv3 et de forcer les clients à respecter l'ordre du serveur dans le choix de la suite cryptographique à utiliser. Les autres options possibles sont consultables à l'adresse suivante : https://github.com/processone/tls/blob/master/c_src/options.h (oui, code is doc, certainement :S ). Ça donne donc ceci :
          « s2s_protocol_options:
              - "no_sslv2"
              - "no_sslv3"
              - "cipher_server_preference" »

         Et « protocol_options:
                - "no_sslv2"
                - "no_sslv3"
                - "cipher_server_preference" »

        * On n'oublie pas de préciser « starttls_required: true » dans le listener c2s. Ça évite que la communication passe en clair si, pour X raisons (bug, attaque par repli par un Homme du Milieu), la négociation TLS échoue. Je rappelle que sur la connexion c2s, il y a votre roster (liste de contacts) qui passe + l'état de vos contacts (absent puis disponible puis absent puis déconnecté,... ;) ) +  le contenu des communications par la suite. Vous devriez également préciser « s2s_use_starttls: required » mais là, ça dépend des serveurs de vos contacts... Google ne supporte pas TLS par exemple donc si vous faites ça, vous vous privez de parler à ces personnes-là. :(

        * Par défaut, ejabberd génère des paramètres de Diffie-Hellman de 1024 bits ce qui est clairement trop faible de nos jours (logjam tout ça, voir http://shaarli.guiguishow.info/?S2CJMg ). On peut générer des dhparam plus robustes (voir apache httpd ci-dessus) et les utiliser avec les directives de config « dhfile » et « s2s_dhfile» (voir https://blog.process-one.net/securing-ejabberd-against-logjam-attacks-and-future-threats/ ) mais... ces directives de configuration arrivent avec la version 15.06 alors que nous avons la 14.07 dans Debian Jessie. :( Upgrader la lib erlang-p1-tls (qui apporte les fonctionnalités TLS) indépendamment ne sert à rien. On peut utiliser la version (de ejabberd ET de erlang-p1-tls) présente dans les backports mais ça sera sans moi : la team security de Debian ne s'occupe pas des backports donc pas question sur un serveur.

        * Enfin, cette nouvelle version d'ejabberd, de par les options précédentes, re-ouvre les portes de MUC (discussion à plusieurs sur XMPP, voir http://shaarli.guiguishow.info/?fBKCuA) sur des serveurs configurés un peu durement niveau crypto comme jabber.ccc.de. \o/
    03/01/2016 21:35:07 - permalink -
    - http://shaarli.guiguishow.info/?vjODJw
    nomarkdown
  • De Debian GNU/Linux Wheezy à Jessie

    Comme à chaque passage à une nouvelle version de Debian GNU/Linux, voici un résumé de tout ce qui a foiré ou a changé quand je suis passé à Jessie :
        * Apache httpd : NameVirtualHost et DefaultType n'ont plus aucun effet. LockFile est remplacée par Mutex. Le nom des fichiers contenant les VirtualHost doivent désormais terminer par .conf sinon ils sont ignorés. Toutes les Options doivent commencer par un signe + ou - . La syntaxe des mécanismes de contrôles des accès change mais il n'est pas encore impératif de suivre le mouvement puisque la compatibilité est assurée. Voir : http://shaarli.guiguishow.info/?oZiIVw

        * Ejabberd : passage à YAML pour la syntaxe du fichier de configuration. Le convertisseur ne supporte pas inet6. mod_admin_extra est déplacé dans ejabberd-contrib. Voir http://shaarli.guiguishow.info/?xOQeRA

        * LXC : le passage à la version 1 et à systemd complique légèrement les choses. Voir  http://shaarli.guiguishow.info/?82j-Ow . On notera également la disparition de lxc-list que l'on peut remplacer par lxc-ls -f . Voir http://shaarli.guiguishow.info/?5b7WUw

        * Netfilter-persistent : il faut penser à installer le package iptables-persistent aussi sinon netfilter-persistent est inutile. Voir http://shaarli.guiguishow.info/?W6Txug

        * OpenDNSSEC : l'auditor est déprécié, il faut le commenter dans la configuration. La base de données change de format (ajout d'une colonne), il faut utiliser le script de migration. Le fichier de configuration de softHSM contient une typo qu'il faut corriger. Voir http://shaarli.guiguishow.info/?7VlWuw

        * Postfix : le code de relay access denied passe de 554 (refus définitif) à 454 (refus temporaire) car smtpd_relay_restrictions entre en action avec la valeur « defer_unauth_destination » par défaut. Voir http://shaarli.guiguishow.info/?9vmt6A

        * Puppet : le package puppet de Debian, c't'un peu le zouk... Y'a l'initscript et l'unit systemd sans compter le fait que puppet peut rester en démon après un lancement manuel... Autrement dit, c'est le bordel pour avoir un puppet agent qu'on lance uniquement à la demande. Voir http://shaarli.guiguishow.info/?l6JxVg

        * Sympa : affichage du message d'erreur « ERREUR (arc) - arc_not_found » lors de la consultation des archives publiques d'une liste, après avoir confirmé que « je ne suis pas un spammeur ». Je n'ai pas la solution à ce problème...

        * Snmpd : « The init script /etc/init.d/snmpd will kill all processes with the name  snmpd in stead of killing by PID from /var/run/snmpd.pid which has as effect the killing of the daemon on all LXC containers. ». Ce mauvais comportement persiste des précédentes versions mais on peut l'empêcher avec une unit systemd. Voir : http://shaarli.guiguishow.info/?EFTB0Q

        * Systemd + dbus, le duo indispensable mais dbus n'est pas toujours installé par dépendance. Il faut donc penser à l'installer manuellement. Voir http://shaarli.guiguishow.info/?aZk0YQ

        * Systemd-logind se vautre sur le spawn des TTY et spamme les logs dans certains environnements (un conteneur LXC, par exemple). Voir  http://shaarli.guiguishow.info/?qkFhrQ

        * Zabbix : il faut augmenter le nombre de processus autorisé pour l'utilisateur MySQL et, suite à un changement de la hiérarchie des dossiers de configuration de PHP, il faut repositionner les valeurs de post_max_size et max_execution_time selon ce que Zabbix réclame. Voir http://shaarli.guiguishow.info/?K1UiHA
    03/01/2016 18:23:22 - permalink -
    - http://shaarli.guiguishow.info/?fMCWbQ
    nomarkdown
  • Ejabberd - De Wheezy à Jessie

    En mettant à jour de Wheezy à Jessie, quelques problèmes sont apparus avec ejabberd :
        * Le serveur refusait d'être lancé avec un joli message dans les logs :
          « <0.38.0>@gen_mod:start_module:90 Problem starting the module mod_admin_extra for host <<"guigui.example">>
            options: []
            error: undef
           [{mod_admin_extra,start,[<<"guigui.exemple">>,[]],[]},
            {gen_mod,start_module,3,[{file,"src/gen_mod.erl"},{line,82}]},
            {lists,foreach,2,[{file,"lists.erl"},{line,1336}]},
            {ejabberd_app,start,2,[{file,"src/ejabberd_app.erl"},{line,67}]},
            {application_master,start_it_old,4,
                         [{file,"application_master.erl"},{line,272}]}]
            2016-01-03 16:10:49.411 [critical] <0.38.0>@gen_mod:start_module:95 ejabberd initialization was aborted because a module start failed.

         Cela vient du fait que j'ai conservé mon ancienne configuration, qui charge le module « mod_admin_extra » qui a été déplacé dans ejabberd-contrib (https://github.com/processone/ejabberd-contrib), voir https://www.ejabberd.im/node/24787 . Il faut donc installer le package ejabberd-contrib ou virer mod_admin_extra de la configuration ejabberd. Il n'est pas présent dans le fichier de conf' par défaut de Jessie donc on peut vivre sans. :D


        * Par défaut, ejabberd utilise désormais une syntaxe yaml pour son fichier de configuration. C'est toujours mieux que le format erlang. \o/ On peut convertir son ancien fichier de conf' à la nouvelle syntaxe avec « ejabberctl convert_to_yaml /etc/ejabberd/ejabberd.cfg /etc/ejabberd/ejabberd-converted.yml ». J'ai rencontré deux problèmes :
            * « Error: eacces ». Cela signifie que l'utilisateur ejabberd n'a pas le droit d'écrire dans le dossier de destination. Une impossibilité de lire le fichier source se manifeste par « Problem 'exit "Problem loading ejabberd config file /tmp/ejabberd.cfg : permission denied"' occurred executing the command. »

            * « Problem 'error function_clause' occurred executing the command.
                Stacktrace: [{p1_yaml,encode_pair,
                          [inet6,4],
                          [{file,"src/p1_yaml.erl"},{line,117}]},
                 {p1_yaml,'-encode/2-lc$^0/1-1-',2,
                          [{file,"src/p1_yaml.erl"},{line,98}]},
                 {p1_yaml,'-encode/2-lc$^0/1-1-',2,
                          [{file,"src/p1_yaml.erl"},{line,98}]},
                 {p1_yaml,'-encode/2-lc$^1/1-0-',2,
                          [{file,"src/p1_yaml.erl"},{line,100}]},
                 {p1_yaml,encode_pair,2,[{file,"src/p1_yaml.erl"},{line,118}]},
                 {p1_yaml,'-encode/2-lc$^0/1-1-',2,
                          [{file,"src/p1_yaml.erl"},{line,98}]},
                 {p1_yaml,'-encode/2-lc$^0/1-1-',2,
                          [{file,"src/p1_yaml.erl"},{line,98}]},
                 {p1_yaml,encode,1,[{file,"src/p1_yaml.erl"},{line,90}]}] »

             Le parser ne gère pas le mot-clé « inet6 » que l'on utilise dans le fichier de configuration pour faire écouter ejabberd en IPv6 (et aussi en IPv4 en fonction de bindv6only ;) ). C'est un bug connu et corrigé (voir https://github.com/processone/ejabberd/issues/803 ) mais ce n'est pas dans Jessie ni encore dans les backports. IPv6 c'est pour demain qu'ils disent... Deux méthodes :
                * Si votre fichier de configuration n'est pas trop spécifique / poilu, je vous recommande de prendre le modèle yml fourni par défaut et de le re-remplir à votre convenance (genre domain, certificat x509,...). Pas seulement pour éviter ce bug de parse ou le déplacement de mod_admin_extra mais aussi pour conserver les commentaires explicatifs de ce que fait chaque directive de config' et, enfin, pour éviter d'autres galères...

                * Mettre les « inet6 » en commentaire dans les blocs listen de votre ejabberd.cfg puis convertir le fichier puis corriger le fichier généré en ajoutant « ip: "::" » à chaque listener car sinon ejabberd écoute uniquement en IPv4...
    03/01/2016 17:05:29 - permalink -
    - http://shaarli.guiguishow.info/?xOQeRA
    nomarkdown
  • Email Privacy Tester

    « Some email clients perform operations when reading an email which give away information about the reader, to the sender of the message. If you enter your email address below, this application will send you a specially crafted email which uses a variety of techniques, to attempt to send information back to this server when read. It will then display the results for you. »

    L'auteur a réfléchi à la problématique de la vie privée (voir https://emailprivacytester.com/privacy). Rien à signaler au niveau de la réputation du site dans WOT. Rien non plus à ce sujet sur Twitter. C'est pas un petit site nouveau mais un site qui date de 2012 avec une version 2 récente... À l'exception des messages signés avec GPG en utilisant la fonction de condensation SHA-1 qui commence à sentir le moisi, tout ça inspire confiance donc j'ai testé en utilisant un alias (pas folle la guêpe).


    La palette de ce que peuvent utiliser les marketeux et les méchants est impressionnante :O : vidéo ogg, vidéo webm, des tricks CSS (content, image de fond, ), images, objets (genre Flash et co), iframes, balise meta refresh, prefetch DNS et lien, applet, flux (RSS ou Atom),... Bref, toute la complexité d'HTML  et de CSS dans un mail.


    Avec un Thunderbird 38 :
        * Avec un affichage texte des mails (ce qu'il faut faire, il faut toujours proscrire l'affichage HTML) : aucun tracker n'est déclenché ;

        * Avec un affichage HTML simple, aucun tracker n'est déclenché ;

        * Avec un affichage HTML original, aucun tracker n'est déclenché ;

        * L'affichage HTML original fait apparaître un message qui nous demande si l'on veut charger des contenus distants. On accepte (uniquement pour ce mail, attention quand vous cliquez !). La moitié des trackers se déclenchent : vidéo ogg, vidéo webm, css content, css background-image, css attachment, iframe srcdoc attr, audio tag, vidéo tag, vidéo MP4, iframe, objet flash, objet data, image submit button, css import, vidéo poster, picture tag, img srcset attr, image taf, svg inline with remote image, css link tag, background attribute.

        * Pour déclencher les trackers restants, j'imagine qu'il doit falloir autoriser javascript, activer le prefetch dans about:config,...


    Il y'a d'autres moyens de traquer les gens qui ne sont pas explorés par cet outil, j'en suis sûr genre cookie, super cookie, ... C'est plutôt effrayant.

    La bonne nouvelle, à laquelle je ne m'attendais pas, c'est que même avec un affichage HTML, Thunderbird veille sur notre vie privée. Je suis agréablement surpris.

    Mais bien sûr, ce n'est pas une excuse pour activer l'affichage HTML dans les mails ! Un mail HTML ne sert à rien ! Désactiver ça dans le menu Affichage -> Corps du message en... -> Texte seul.


    Via https://twitter.com/aeris22/status/683409290409951233
    03/01/2016 11:02:47 - permalink -
    - https://emailprivacytester.com/
    nomarkdown
  • NET-SNMP et UCD-SNMP, Configuration de l'agent SNMP sous Linux et Unix

    Avec SNMP, il est possible d'exposer tout ou partie de l'arborescence soit selon le modèle "expose uniquement telle partie" soit selon le modèle "expose tout sauf cette partie". C'est le principe des vues.

    Prenons un cas concret : Zabbix ne sait pas interpréter les valeurs qu'il remonte concernant la shared memory dont la taille varie (à la hausse comme à la baisse) en fonction des besoins jusqu'à attendre le maximum défini par kernel.shmall dont on peut positionner la valeur avec sysctl. Cette mal-interprétation génère des fausses alertes qui, en plus d'être pénibles, habituent les techs à ne plus prêter attention aux mails émis par la supervision ce qui représente la pire situation possible.

    Plutôt que de trifouiller SNMP, est-ce qu'on ne pourrait pas demander à Zabbix d'exclure la shared memory ? Zabbix la découvre tout seul, avec un discovery et tout le bazar... Il faudrait créer un filtre et tout et tout, voir https://www.zabbix.com/documentation/2.4/manual/discovery/low_level_discovery point 3.1 . Ce n'est pas fun à mes yeux et pour une fois que j'avais un alibi pour creuser la syntaxe d'un fichier snmpd... Bon ça va, ok, je le reconnais : en vrai, je suis maso. :P

    Cet exemple est bateau mais le masquage d'une partie ou de l'intégralité de l'arborescence SNMP peut servir (exemple parmi d'autres : générer un graphe de débit pour une seule interface réseau pour que seul l'utilisateur branché sur cette interface puisse consulter ce graphe, voir http://net-snmp.sourceforge.net/wiki/index.php/Vacm#VACM_Masks.2C_or_How_to_restrict_access_to_a_particular_index_.28row.29_in_a_Table) donc ce n'est pas inintéressant de se pencher sur ça.

    Dans l'arborescence SNMP, c'est le tableau nommé « hrStorageTable » qui contient, entre autres, la description, la taille d'une allocation, le nombre total d'allocations possibles et le nombre d'allocations réalisées de chaque espace logique de stockage (RAM, shared memory, points de montage,...). Voir http://www.net-snmp.org/docs/mibs/host.html#hrStorageTable . Donc pour récupérer les tailles exprimées sous la forme qu'on leur connaît (Mio, Gio, Tio,...), il faut multiplier le bon nombre d'allocations par la taille d'une allocation. Exemple : espace occupé sur le stockage en octets = taille d'une allocation * nombre d'allocations réalisées. #IZI

    L'OID (l'identifiant unique d'un élément dans l'arborescence SNMP) de ce tableau hrStorageTable est .1.3.6.1.2.1.25.2.3 (ou HOST-RESOURCES-MIB::hrStorageTable en langage presque courant...). Ensuite, on met la colonne à laquelle on souhaite accéder : .1.3.6.1.2.1.25.2.3.1.3 = HOST-RESOURCES-MIB::hrStorageTable.1.3 = description de tous les points de montage, .1.3.6.1.2.1.25.2.3.1.6 = HOST-RESOURCES-MIB::hrStorageTable.1.6 nombre d'allocations utilisées,... Ensuite, on met l'ID du stockage : dans mon cas .1.3.6.1.2.1.25.2.3.1.3.1 = HOST-RESOURCES-MIB::hrStorageTable.1.3.1 = nom donné à ma RAM, .1.3.6.1.2.1.25.2.3.1.3.31 = nom donné à la racine (/),...

    Les ID / descriptions ne se devinent pas, on les remonte avec : snmpwalk -v2c -c <communauté> <IP_agent_SNMP> HOST-RESOURCES-MIB::hrStorageTable.1.3 :)

    La shared memory a l'ID 8. Ce que nous voulons faire c'est donc dégager tout ce qui concerne .1.3.6.1.2.1.25.2.3.1.X.8. Peu importe la valeur de X puisque l'on veut virer la description, l'ID, la taille d'une allocation, les allocations effectuées,... Bref, nous voulons faire disparaître toute information sur l'objet d'ID 8 de la table hrStorageTable.

    On a l'OID : .1.3.6.1.2.1.25.2.3.1.X.8, il reste à calculer le masque. Cet OID nécessite 12 bits pour être représenté (ne faites pas attention aux nombres > 1, c'pas comme ça qu'on compte :D ). Il nous faudra donc deux octets, c'est plié d'avance.

    Mettons un 1 sous chaque élément de l'OID que l'on souhaite invariant. Et mettons 0 sous chaque partie variante. Dit de manière plus simple : on met un 1 en dessus de chaque élément de l'OID que l'on veut matcher dans la requête SNMP qui sera adressée au serveur. Nous voulons matcher tous les bits sauf le 11e, peu importe ce que contient ce dernier.

    OID :        .1.3.6.1.2.1.25.2.3.1.X.8
    Masque :  1 1 1 1 1 1  1  1 1 1 0 1 0 0 0 0
    On regroupe les bits en paquets de 8 (pour faire des octets) et on convertit en hexadécimal : 1 1 1 1 1 1 1 1 = ff ; 1 1 0 1 0 0 0 0 = d0 . Masque final : ff:d0 \o/
    On a donc tout pour créer notre vue : « view    <label>     excluded        .1.3.6.1.2.1.25.2.3.1.3.8       ff:d0 ».

    Ici, on dit donc que l'on exclut la ligne d'ID 8 dans la table hrStorageTable, peu importe la colonne. #IZI

    Si l'on remplaçait le masque par ff:f0, on dirait que seulement l'OID .1.3.6.1.2.1.25.2.3.1.3.8 doit être exclu. On exclurait donc uniquement la description de la shared memory mais on pourrait toujours récupérer la taille d'une allocation en .1.3.6.1.2.1.25.2.3.1.4.8, par exemple. #IZI

    Si l'on remplaçait « excluded » par « included », on dirait bien que seul .1.3.6.1.2.1.25.2.3.1.X.8 peut être lu. On pourrait donc récupérer uniquement les infos sur la shared memory. Et si on remplaçait « excluded » par « included » et le masque par ff:f0, alors on autoriserait uniquement la consultation de la description de la shared memory. #IZI

    Mais avant de dire ce que l'on exclu, il faudrait peut-être dire ce que l'on inclu ? Car exclure quelque chose du néant, ça va pas être possible. Voici donc la vue finale :
    « view    <label>     included        .iso
      view    <label>     excluded        .1.3.6.1.2.1.25.2.3.1.3.8       ff:d0 »
    On inclus tout l'arbre SNMP et on dégage la ligne de la table hrStorageTable qui concerne la shared memory.


    Maintenant, il faut écrire le fichier de configuration de snmpd kiVaBien. La page pointée par ce shaarli n'est plus vraiment appropriée, je lui préfère https://aresu.dsi.cnrs.fr/spip.php?article175 que j'ai shaarlié y'a quelque temps en http://shaarli.guiguishow.info/?t_NB6w.

    Pour simplifier, je vais développer un exemple complet :
    « ## Listen
    agentAddress udp:161,udp6:161


    ## Qui suis-je ?
    # snmpd remplit le sysName tout seul avec le FQDN de la machine
    sysLocation Internet
    sysContact guigui@example.com


    ## Qui voit quoi ?
    # Déclaration des machines autorisées
    # Se lit comme : les machines avec les IP 192.0.2.1 et 127.0.0.1, qui viennent nous causer
    # en positionnant la communauté à la valeur « zabbix » font partie de la comsec nommée « supervision »
    #                   Nom             Source          Communauté
    com2sec supervision     127.0.0.1       zabbix
    com2sec supervision     192.0.2.1       zabbix

    # Déclaration des groupes d'accès
    # Les machines de la comsec supervision font partie du groupe nommé « ReadOnly » (ce n'est qu'un label,
    # pas une permission effective !) qu'ils utilisent SNMP version 1 ou 2c
    #             Nom             Version         Com2sec
    group   ReadOnly        v2c            supervision
    group   ReadOnly        v1              supervision

    # Déclaration des vues
    # La vue NoSharedMem masque HOST-RESOURCES-MIB::hrStorageTable.hrStorageEntry.X.8
    # Donc on vire les infos à propos de la shared memory que Zabbix ne sait pas interpréter
    #                    Nom             Incl/Excl                      Subtree                         Masque (optionnel)
    view    NoSharedMem     included        .iso
    view    NoSharedMem     excluded       .1.3.6.1.2.1.25.2.3.1.3.8           ff:d0

    # Association entre un groupe et une vue
    # Le groupe ReadOnly est associé a la vue NoSharedMem en lecture seule
    #           GroupName       Contexte    Version      SecLevel        Prefix               Read            Write   Notif
    access  ReadOnly               ""              any             noauth          exact       NoSharedMem     none    none


    ##  Params divers
    # To keep "snmpd[3458]: Connection from UDP: [127.0.0.1]:48911" from filling your logs
    dontLogTCPWrappersConnects true »


    Notons que, sans la vue, une configuration snmpd qui autorise les mêmes deux machines à lire toute l'arborescence sans aucun droit d'écriture, ça se dit : « rocommunity zabbix 89.234.141.72/32 ». On voit donc que les vues sont complexes et pas toujours appropriées. :)

    Il ne reste plus qu'à déployer ce fichier de configuration avec Puppet^WAnsible ou autre selon vos goûts. :)
    02/01/2016 19:13:14 - permalink -
    - http://www.loriotpro.com/ServiceAndSupport/How_to/UCD-SNMP_ConfigSNMPv1-v1.2.php#_Toc43798575
    nomarkdown
  • Zabbix - De Wheezy à Jessie

    En mettant à jour de Wheezy à Jessie, deux problèmes sont apparus avec Zabbix (j'utilise php-fpm et nginx) :
        * « SQLSTATE[HY000] [1135] Can't create a new thread (errno 11); ». Voir https://www.percona.com/blog/2013/02/04/cant_create_thread_errno_11/ : « The canonical solution to this issue, if you do a bit of Googling, is to increase the number of processes / threads available to the MySQL user, typically by adding a line like this to /etc/security/limits.conf: « mysql  soft  nproc  4096 »  followed up by a restart of MySQL in a fresh user session. J'ai donc donné la possibilité à l'user MySQL de lancer 50 processus. Problème résolu depuis de nombreux mois.

        * Zabbix se plaint que post_max_size et max_execution_time n'ont pas les valeurs qu'il souhaite. Avant, nous n'avions jamais eu de problème... /etc/php5/fpm/conf.d/30-zabbix.ini (comme demandé par /usr/share/doc/zabbix-frontend-php/README.Debian ) contenait les bonnes valeurs et faisait parfaitement le job. Voir https://wiki.debian.org/PHP/#Configuration_layout . Problème : avec Jessie, les différents dossiers représentant chaque SAPI (apache2, fpm,...) comme /etc/php5/fpm/conf.d ne sont plus des liens symboliques vers /etc/php5/conf.d comme avant donc notre fichier de conf était dans /etc/php5/conf.d/30-zabbix.ini alors qu'il était attendu dans /etc/php5/fpm/conf.d/30-zabbix.ini... Il était donc ignoré. Solutions ?
            * mv /etc/php5/conf.d/30-zabbix.ini /etc/php5/fpm/conf.d/30-zabbix.ini

            * Passer les valeurs des directives de configuration à partir du virtualhost : https://forum.ivorde.com/nginx-php-fpm-increase-upload-max-filesize-and-other-php-values-per-vhost-t1151.html. Dans le virtualhost Zabbix, dans le bloc « location ~ \.php$ » nous ajoutons donc : « fastcgi_param PHP_VALUE "post_max_size=51M \n max_execution_time=300 \n max_input_time=300 \n date.timezone = Europe/Paris"; »

            * Dans le premier cas, il faut restart php5-fpm. Dans le deuxième cas, il faut restart php5-fpm et nginx.
    02/01/2016 17:16:46 - permalink -
    - http://shaarli.guiguishow.info/?K1UiHA
    nomarkdown
  • Chrooter Apache httpd, bonne ou mauvaise idée ?

    Sur mon serveur perso, je chroote Apache httpd depuis 3 ans et demi pour essayer mais ça cause tout un tas de problèmes pour un gain en sécurité pas évident du tout... Tant qu'à faire, voici quelques problèmes dont je me souviens et que je n'ai pas encore documenté :
        * Il fallait quand même créer les dossiers correspondants au DocumentRoot de chaque virtualhosts dans /var/www (ou autre chemin si vous l'avez changé...) sinon erreur au démarrage. Ça ne semble plus être nécessaire de nos jours.

        * Il faut charger explicitement les librairies utilisables. Genre si l'on a besoin d'une résolution de noms, il faut copier /etc/resolv.conf dans le chroot (au même emplacement, ofc) et ajouter ceci à la conf' Apache : « LoadFile /lib/x86_64-linux-gnu/libnss_dns.so.2 » sinon plus de résolution des noms et ces messages dans les logs :
        « PHP Warning:  file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/[...] on line 3
          PHP Warning:  file_get_contents([...]): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/[...] on line 3 »

        * Il faut copier /usr/share/zoneinfo et son contenu dans le chroot sinon PHP se vautrera dès qu'une fonction relative au temps/date sera utilisée. Exemples : « PHP Fatal error:  date_default_timezone_get(): Timezone database is corrupt - this should *never* happen! », «  PHP Fatal error:  strtotime(): Timezone database is corrupt - this should *never* happen! », « PHP Warning:  strtotime(): Invalid date.timezone value 'Europe/Paris', we selected the timezone 'UTC' for now. », « PHP Warning:  date_default_timezone_get(): Invalid date.timezone value 'Europe/Paris', we selected the timezone 'UTC' for now. ».

        * Problème de suppression des fichiers de session (stockés dans session.save_path). PHP n'a pas de mécanisme pour supprimer automagiquement ces fichiers. Sous Debian GNU/Linux, c'est stocké dans /tmp qui est souvent un tmpfs qui se vide donc à chaque extinction du serveur. De plus, un script, /usr/lib/php5/sessionclean est exécuté en cron toutes les 30 minutes. Problème : ce script récupère bien le chemin où sont stockés les fichiers... mais sans tenir compte du chroot. Ainsi « session.save_path = /tmp » dans le php.ini d'un PHP exécuté dans un chroot Apache httpd ne désigne pas /tmp mais $chrootdir/tmp (/var/apache/chroot/tmp dans mon cas puis chrootdir = /var/apache/chroot). Mon workaround :
            * Dupliquer /usr/lib/php5/sessionclean en /usr/local/lib/php5-sessionclean ;

            * Définir moi-même $save_path en commentant save_path=$(echo [...]) et en le remplaçant par « save_path=/var/apache/chroot/tmp »

            * Dupliquer /etc/cron.d/php5 en /etc/cron.d/php5-custom dans lequel j'appelle /usr/local/lib/php5-sessionclean au lieu de /usr/lib/php5/sessionclean

            * systemctl restart cron pour prendre en compte cette modification

        * Problème avec la validation des certificats x509. Voir http://shaarli.guiguishow.info/?lWsIvQ

        * Les sockets UNIX deviennent compliquées à utiliser pour communiquer avec les SGBD. On doit donc utiliser des sockets TCP... C'est déjà le cas par défaut donc ça n'entraîne pas de contraintes supplémentaires.
    02/01/2016 13:54:05 - permalink -
    - http://shaarli.guiguishow.info/?08T1Cw
    nomarkdown
  • error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed · Issue #3346 · composer/composer · GitHub

    J'utilise tt-rss (https://tt-rss.org/gitlab/fox/tt-rss/wikis/home) comme agrégateur de flux RSS et rssbridge (https://github.com/sebsauvage/rss-bridge) pour produire des flux RSS pour des sites web qui n'en fournissent plus par pur choix. Depuis la mise à jour à Jessie, certains flux RSS passant par rssbridge ne sont plus fonctionnels : rssbridge présente une page vide (dans la version récupérable fin décembre 2015 sur github, on aura un message « Requested username can't be found. ». Les flux qui ne sont plus fonctionnels correspondent à des sites auxquels le bridge accède en HTTPS ou les sites web qui redirigent automatiquement sur leur version HTTP (on ne parle pas d'HSTS (voir http://www.bortzmeyer.org/6797.html ) mais juste d'une bête redirection HTTP 301) comme Twitter, par exemple.


    Si l'on n'a pas accès aux logs, on passe rssbridge en mode debug en commentant « error_reporting(0); » et en décommentant « ini_set('display_errors','1'); error_reporting(E_ALL);  // For debugging only. » au début du fichier index.php de rssbridge. On se rend à l'URL défectueuse (ou dans les logs) et on obtient l'erreur complète :
    « Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
    error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /var/www/rssbridge/lib/Bridge.php on line 369

    Warning: file_get_contents(): Failed to enable crypto in /var/www/rssbridge/lib/Bridge.php on line 369

    Warning: file_get_contents(http://twitter.com/aeris22): failed to open stream: operation failed in /var/www/rssbridge/lib/Bridge.php on line 369
    Requested username can't be found. »

    OpenSSL n'arrive donc pas à valider le certificat du serveur. NE PAS désactiver la vérification des certificats x509 de file_get_contents() avec une méthode comme celle exposée à l'adresse https://stackoverflow.com/questions/26148701/file-get-contents-ssl-operation-failed-with-code-1-and-more (verify_peer -> false) : c'est une connerie, ça fonctionnait avant, on va réparer ça, c'est tout, pas la peine de créer une absence de sécurité. D'autant plus que ça nécessite de modifier le code de rssbridge, ce qui ne résistera pas aux mises à jour.


    Si l'on écrit un bête fichier de test, comme « <?php echo file_get_contents('https://twitter.com/') ?> » et qu'on l'exécute avec php-cli (php test-x509.php , par exemple), on se rend compte que cela fonctionne. Le même fichier de test accédé via un serveur web comme Apache httpd retourne l'erreur vue ci-dessus. On en déduit que cela vient soit de l'environnement d'exécution, soit d'un changement entre la conf' php-cli et la conf php Apache httpd.

    Pourtant, les contextes TLS (obtenus avec « var_dump(openssl_get_cert_locations()); » sont identiques dans les deux cas :
    « array(8) {
      ["default_cert_file"]=>
      string(21) "/usr/lib/ssl/cert.pem"
      ["default_cert_file_env"]=>
      string(13) "SSL_CERT_FILE"
      ["default_cert_dir"]=>
      string(18) "/usr/lib/ssl/certs"
      ["default_cert_dir_env"]=>
      string(12) "SSL_CERT_DIR"
      ["default_private_dir"]=>
      string(20) "/usr/lib/ssl/private"
      ["default_default_cert_area"]=>
      string(12) "/usr/lib/ssl"
      ["ini_cafile"]=>
      string(0) ""
      ["ini_capath"]=>
      string(0) ""
    } »

    /usr/lib/ssl/cert.pem n'existe pas sous Debian GNU/Linux mais /usr/lib/ssl/certs est un lien symbolique vers /etc/ssl/certs qui, grâce au package ca-certificate, contient bien les certificats d'AC x509 dont l'un d'eux a signé le certificat de Twitter...

    Haaaaaaaaa mais j'y suis : cet Apache httpd tourne dans un chroot, « ChrootDir /var/apache/chroot » dans la conf' ! Or, /var/apache/chroot/usr/lib/ssl/certs n'existe pas !


    De là, on a plusieurs solutions :
        * Copier /etc/ssl/certs et tout son contenu dans /var/apache/chroot/etc/ssl/certs et faire un lien symbolique de /var/apache/chroot/usr/lib/ssl/certs vers /var/apache/chroot/etc/ssl/certs.

        * Récupérer tout un magasin de certificats d'AC x509 et demander à PHP de l'utiliser

    Dans les deux cas, la mise à jour des certificats reste problématique... Dans le deuxième cas, on peut lancer un wget en cron pour s'assurer d'avoir les derniers certificats et de ne plus avoir les certificats révoqués. Ces mises à jour sont plutôt rares (et dépendent de la source de votre magasin de certificats genre Microsoft, Mozilla, Google, Debian,...) mais mieux vaut être prévenu.


    J'ai choisi la deuxième méthode. Pour la mettre en pratique, on :
        * wget https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt (magasin de certificats de Mozilla compacté par les dev de cURL, voir http://curl.haxx.se/docs/caextract.html).

        * En fonction des besoins, on peut aussi ajouter d'autres AC au bundle genre CACert (qui n'est plus dans le magasin de certificats de Mozilla). Il suffit de concaténer les certificats intermédiaires / root de l'AC au reste du bundle : cat ca-bundle.crt root.crt > ca-bundle.crt

        * mkdir /var/apache/chroot/etc/ssl

        * mv ca-bundle.crt /var/apache/chroot/etc/ssl/

        * ajoute « openssl.cafile = /etc/ssl/ca-bundle.crt » dans /etc/php5/apache2/php.ini

        * systemctl restart apache2

    Maintenant, notre contexte TLS est le suivant :
    « array(8) {
      ["default_cert_file"]=>
      string(21) "/usr/lib/ssl/cert.pem"
      ["default_cert_file_env"]=>
      string(13) "SSL_CERT_FILE"
      ["default_cert_dir"]=>
      string(18) "/usr/lib/ssl/certs"
      ["default_cert_dir_env"]=>
      string(12) "SSL_CERT_DIR"
      ["default_private_dir"]=>
      string(20) "/usr/lib/ssl/private"
      ["default_default_cert_area"]=>
      string(12) "/usr/lib/ssl"
      ["ini_cafile"]=>
      string(19) "/etc/ssl/ca-bundle.crt"
      ["ini_capath"]=> string(0) "" } »

    Notons le « ["ini_cafile"]=> string(19) "/etc/ssl/ca-bundle.crt" » ;)

    rssbridge devrait parfaitement fonctionner (et si ce n'est pas le cas, il faut vider le cache avec rm -r <document_root>/cache/* ). \o/ On n'oublie pas de virer le mode debug de rssbridge. ;)


    Pourquoi ça s'est mis à déconner avec le passage à Jessie ? J'avais dû déjà mettre en place un trick que je n'ai pas documenté ici, que j'ai donc dû oublier et j'ai dû accepter le remplacement de php.init durant la mise à jour, quelque chose dans ce goût-là.

    Le mieux étant de ne pas chrooter Apache httpd : ça cause tout un tas de problèmes pour un gain en sécurité pas évident du tout (voir http://shaarli.guiguishow.info/?08T1Cw).
    02/01/2016 13:53:21 - permalink -
    - https://github.com/composer/composer/issues/3346
    nomarkdown
  • #638045 - warning: xsasl_cyrus_server_get_mechanism_list: no mechanism available - Debian Bug report logs - GuiGui's Show - Liens

    « Dec 26 17:54:17 localhost postfix/smtpd[16304]: warning: SASL authentication failure: Internal Error -4 in ../../lib/server.c near line 1757
    Dec 26 17:54:17 localhost postfix/smtpd[16304]: warning: SASL authentication failure: Internal Error -4 in ../../lib/server.c near line 1757
    Dec 26 17:54:17 localhost postfix/smtpd[16304]: warning: SASL authentication failure: Internal Error -4 in ../../lib/server.c near line 1757
    Dec 26 17:54:17 localhost postfix/smtpd[16304]: warning: xsasl_cyrus_server_get_mechanism_list: no mechanism available
    Dec 26 17:54:18 localhost postfix/smtpd[16304]: fatal: no SASL authentication mechanisms
    Dec 26 17:54:18 localhost postfix/master[5159]: warning: process /usr/lib/postfix/smtpd pid 16304 exit status 1
    Dec 26 17:54:18 localhost postfix/master[5159]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling »

    Et 1 an et demi après, je me réponds à moi-même : il faut installer le package libsasl2-modules...
    01/01/2016 19:46:52 - permalink -
    - http://shaarli.guiguishow.info/?_-omsg
    nomarkdown
  • Configuring Apache, Nginx, and OpenSSL for Forward Secrecy | Qualys Community

    Pour ne plus avoir à chercher les listes de suites cryptographiques qui supportent la confidentialité persistante (Perfect Forward Secrecy, PFS, en anglais, c'est-à-dire que même si la clé privée de votre serveur est dérobée, les échanges passés sont indéchiffrables par l'attaquant, même s'ils ont été capturés et conservées), je me note ça ici :

    On commence par celle donnée dans l'article (moins RC4, que j'ai choisi de dégager) : EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4
    Analyse : que des suites permettant la PFS. Notons que la priorité est donnée aux courbes élliptiques aussi bien pour l'échange de Diffie-Hellman éphémère que pour le chiffrement asymétrique. On a donc 21 suites cryptographiques.

    On voudrait la même chose (PFS uniquement + priorité aux courbes elliptiques) mais sans être aussi précis sur les suites qu'on autorise afin que de nouvelles suites ajoutées dans le futur soient automatiquement activées. Attention : ça permet de prendre en compte automagiquement les nouvelles suites cryptos meilleures... mais aussi des nouvelles suites cryptos moisies... Il y a donc un choix à faire.
    EECDH+ECDSA EECDH+aRSA EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4
    Et pour les personnes qui voudraient donner la priorité à RSA aussi bien pour l'échange de Diffie-Hellman que pour la crypto asymétrique, la liste devient : EDH+aRSA EECDH+aRSA EECDH+ECDSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4

    Pour chacun des exemples précédents, on peut virer SEED et CAMELLIA qui sont des algos de chiffrement symétrique sans faiblesses connues à ce jour mais qui ne sont pas accélérés matériellement comme l'est AES et qui sont largement moins utilisés (et donc moins audités ?) qu'AES : pour cela, il suffit d'ajouter « !SEED !CAMELLIA » à la fin de la liste. Il reste 18 suites cryptos dans la liste.

    Pour ceux et celles qui veulent jouer les nazis : on peut faire la même (PFS uniquement, +/- SEED/CAMELLIA selon vos préférences, priorité aux courbes elliptiques ou pas) mais en virant SHA-1 qui commence à sentir le moisi : il suffit d'ajouter « !SHA » à la fin des listes vues précédemment. À ce stade, il ne reste plus que 12 suites dans la liste. Évidemment, ça ne va pas fonctionner souvent puisqu'il faut un support TLS v1.2 minimum (qui apporte les suites PFS sans SHA-1) qui n'est pas encore du tout la norme mais c'est clairement ce qu'il faut utiliser pour des services non publics et des environnements contrôlés.

    Si l'on veut une liste plus réaliste, qui exclut le moins de logiciels clients sans pour autant être une passoire (car oui, y'a encore *beaucoup* de serveurs et clients qui ne supportent pas la PFS, comme les serveurs XMPP de mes contacts, par exemple...) : EDH+aRSA EECDH+aRSA EECDH+ECDSA ECDH aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4 . On arrive à 42 suites cryptos, le compte est bon \o/ ( ;) ). Comme pour les autres listes, on peut virer SEED et CAMELLIA en fonction du niveau de confiance que l'on accorde à ces algorithmes et/ou en fonction des performances recherchées. On peut aussi donner la priorité aux courbes elliptiques puisqu'ici je la donne à RSA.
    01/01/2016 19:31:39 - permalink -
    - https://community.qualys.com/blogs/securitylabs/2013/08/05/configuring-apache-nginx-and-openssl-for-forward-secrecy
    nomarkdown
  • [ Utilisateurs de Raspbian, vous pouvez supprimer le composant « rpi » de vos sources.list ]

    Voici ce que contient le composant « rpi » des dépôts Debian Raspbian. Soit 3 logiciels : gstreamer1.0-omx, gstreamer1.0-omx-dbg et ssh-regen-startup. Si aucun de ces logiciels est installé sur votre Raspberry Pi, vous pouvez supprimer le composant rpi de votre sources.list.

    Ça signifie aussi que les packages bricolés de partout par les mainteneurs Raspbian sont injectés directement dans le composant « main ».... C'est plutôt contestable. Mais ce n'est pas un scoop, voir http://www.guiguishow.info/2013/09/07/auto-hebergement-sur-olinuxino/#toc-4076-technique . D'où ma préférence pour les OLinuXino : ça utilise les dépôts Debian standard donc on bénéficie du support de la team Debian-Security et de sa réactivité (alors que les màj, même de sécu, sont décalées de plusieurs jours chez Raspbian).
    01/01/2016 18:07:17 - permalink -
    - ftp://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian/dists/jessie/rpi/binary-armhf/Packages
    nomarkdown
Links per page: 20 50 100
◄Older
page 216 / 299
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