5514 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
◄Older
page 16 / 99
Newer►
1965 results tagged nomarkdown x
  • 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...
    Fri Jan 8 19:52:48 2016 - 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
    Mon Jan 4 14:47:03 2016 - 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 !
    Mon Jan 4 12:22:26 2016 - 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/
    Sun Jan 3 21:35:07 2016 - 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
    Sun Jan 3 18:23:22 2016 - 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...
    Sun Jan 3 17:05:29 2016 - 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
    Sun Jan 3 11:02:47 2016 - 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. :)
    Sat Jan 2 19:13:14 2016 - 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.
    Sat Jan 2 17:16:46 2016 - 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.
    Sat Jan 2 13:54:05 2016 - 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).
    Sat Jan 2 13:53:21 2016 - 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...
    Fri Jan 1 19:46:52 2016 - 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.
    Fri Jan 1 19:31:39 2016 - 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).
    Fri Jan 1 18:07:17 2016 - permalink -
    - ftp://ftp.igh.cnrs.fr/pub/os/linux/raspbian/raspbian/dists/jessie/rpi/binary-armhf/Packages
    nomarkdown
  • debian - how to remove a package which post-installation and pre-removal script fails? - Server Fault

    Je découvre (hééééééééé bah comme dirait l'autre) où sont stockés les hooks dpkg (avant installation, après installation, avant suppression, après suppression) : /var/lib/dpkg/info/<package_name>.<type>.

    Exemple pratique : quand un ejabberd provenant des backports (c'était pour un test) refuse d'être supprimé, je modifie /var/lib/dpkg/info/ejabberd.postrm pour faire commencer ce script par exit 0 et je relance apt-get autoremove ejabberd...
    Fri Jan 1 18:01:08 2016 - permalink -
    - https://serverfault.com/questions/179570/how-to-remove-a-package-which-post-installation-and-pre-removal-script-fails
    nomarkdown
  • Cherche solution à l'erreur « ERREUR (arc) - arc_not_found » de Sympa (gestionnaire de listes de discussion/diffusion)

    L'interface web de Sympa m'affiche cette erreur lorsque je consulte les archives publiques d'une liste, après avoir confirmé que je ne suis pas un spammeur... On ne trouve rien sur un moteur de recherche à part des SYmpa dans le même état que le mien... Si quelqu'un a la solution, qu'il fasse signe.
    Fri Jan 1 17:53:57 2016 - permalink -
    - http://shaarli.guiguishow.info/?gL5XXA
    nomarkdown
  • New in OpenDNSSEC 1.4 - OpenDNSSEC Documentation - OpenDNSSEC

    En passant de Wheezy à Jessie, on passe d'OpenDNSSEC 1.3.9 à la version 1.4.6. Changement majeur. Pourtant, sur mon infra perso, cette mise à jour s'est mieux déroulée que celle entre Squeeze et Wheezy (http://www.guiguishow.info/2013/05/19/de-debian-gnulinux-squeeze-a-wheezy/#toc-3696-opendnssec), qui était pourtant un changement mineur de version, ce qui illustre, à mon avis, qu'OpenDNSSEC devient un logiciel mature.

    Quelques points auxquels prêter attention tout de même :
        * « Auditor is deprecated The auditor is no longer supported in 1.4. This greatly reduced the dependencies of OpenDNSSEC, namely it no longer depends on Ruby. Alternative validation tools are described here. ». Il faudra donc mettre le bloc Auditor en commentaire (« <!-- [blabla Auditor ici] --> ») dans /etc/opendnssec/conf.xml sinon, l'erreur « Relax-NG validity error : Did not expect element Auditor there » se produira.

        * « Version 1.4  has some kasp database changes compared to 1.3 to allow for an update to the zonelist.xml schema (these changes support flexibility in the input and output adapters). » voir https://wiki.opendnssec.org/display/DOCS/Migrating+from+earlier+versions+of+OpenDNSSEC.  Il faut exécuter le SQL de migration : sqlite3 /var/lib/opendnssec/db/kasp.db < /usr/share/opendnssec/migrate_adapters_1.sqlite3 (merci https://stackoverflow.com/questions/10045035/how-to-execute-an-sql-script-file-against-an-sqlite-3-database-file pour la syntaxe). Si ce n'est pas fait, ods-ksmutil key list retournera l'erreur « ERROR: database version number incompatible with software; require 3, found 2. Please run the migration scripts
    Failed to connect to database ».

        * Lors d'un ods-signer sign <zonename>, je recevais une erreur « connect() failed: No such file or directory » qui indique que le démon ods-signer n'est pas en cours d'exécution (voir http://lists.opendnssec.org/pipermail/opendnssec-user/2012-July/002075.html). En regardant dans les logs, on peut voir :
        « Dec 24 17:11:12 localhost ods-signerd: SoftHSM: init: Could not open the token database. errno=2. Probably wrong privileges: /var/lib/lib/softhsm/slot0.db
           Dec 24 17:11:12 localhost ods-enforcerd: SoftHSM: init: Could not open the token database. errno=2. Probably wrong privileges: /var/lib/lib/softhsm/slot0.db
           Dec 24 17:11:12 localhost ods-enforcerd: hsm_get_slot_id(): No slots found in HSM
           Dec 24 17:11:12 localhost ods-signerd: [hsm] hsm_get_slot_id(): No slots found in HSM
           Dec 24 17:11:12 localhost ods-signerd: [engine] setup failed: HSM error
           Dec 24 17:11:12 localhost ods-signerd: [engine] signer shutdown »
        On remarque le chemin erroné « /var/lib/lib/softhsm/slot0.db » (deux fois « lib/ »). Il s'agit d'une erreur dans le package Debian et dérivés (voir https://bugs.launchpad.net/ubuntu/+source/softhsm/+bug/1451348). Il faut corriger ça dans /etc/softhsm/softhsm.conf et relancer opendnssec : systemctl restart opendnssec-enforcer ; systemctl restart opendnssec-signer
    Fri Jan 1 17:25:31 2016 - permalink -
    - https://wiki.opendnssec.org/display/DOCS/New+in+OpenDNSSEC+1.4
    nomarkdown
  • Mise à jour de la version 2.2 vers la version 2.4 - Serveur Apache HTTP Version 2.4

    Une liste des changements qui m'ont affecté lors du passage de Wheezy à Jessie et donc d'Apache httpd 2.2 à Apache 2.4 :

        * « NameVirtualHost has no effect and will be removed in the next release » : « La directive NameVirtualHost n'a plus aucun effet, si ce n'est l'émission d'un avertissement. Toute combinaison adresse/port apparaissant dans plusieurs serveurs virtuels est traitée implicitement comme un serveur virtuel basé sur le nom. ». J'ai donc simplement supprimée cette directive de configuration. Ça signifie également que la création de plusieurs VirtualHost TLS (reposant sur SNI) fonctionne désormais out-of-box ce qui représente un beau progrès.

        * « Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration » : « Les directives AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex et WatchdogMutexPath ont été remplacées par la directive unique Mutex. ». Voir https://askubuntu.com/questions/368515/upgraded-to-ubuntu-13-10-apache-not-able-to-start pour une directive de configuration de remplacement. Notons que c'est bien la même qui a été retenu dans la conf' par défaut chez Debian.

        * « Ignoring deprecated use of DefaultType in line NN of /path/to/httpd.conf - supprimez la directive DefaultType et remplacez-la par les directives de configuration appropriées. ». Cette ligne a simplement été supprimée de la config' par défaut chez Debian. J'en ai fait autant.

        * Chez Debian et Ubuntu, le nom des fichiers contenant les différents VirtualHosts doit terminer par « .conf » sinon ils sont ignorés, voir https://www.linode.com/docs/security/upgrading/updating-virtual-host-settings-from-apache-2-2-to-apache-2-4 . Il faut donc :
            * rm /etc/apache2/sites-enabled/*
            * cd /etc/apache2/sites-available
            * for vhost in `ls`; do mv $vhost $vhost.conf; sudo a2ensite $vhost; done;
            * systemctl reload apache2

        * « Either all Options must start with + or -, or no Option may. ». En effet, j'avais des « SymLinksIfOwnerMatch » qui n'ont jamais posés de problèmes... Il suffit donc d'ajouter un « + » devant pour confirmer qu'on veut bien activer cette option. Voir https://serverfault.com/questions/647665/either-all-options-must-start-with-or-or-no-option-may

        * Le mécanisme de contrôle d'accès change. Pour l'instant, la compatibilité est assurée mais il vaut bien se préparer en avance :
            * « Order deny,allow Deny from all » devient « Require all denied »

            * « Order allow,deny Allow from all » devient « Require all granted »

            * « Order Deny,Allow Deny from all Allow from <IP> » (très utile pour faire une maintenance peinard ;) ) devient « Require all denied Require ip <IP> »

            * « Order Allow,Deny Deny from <IP> Allow from all » (très utile contre les pénibles ;) ) devient
            « <RequireAll>
                    Require all granted
                    Require not ip <IP>
              </RequireAll>
        Voir https://httpd.apache.org/docs/2.4/fr/howto/access.html
    Fri Jan 1 16:43:05 2016 - permalink -
    - https://httpd.apache.org/docs/2.4/fr/upgrading.html
    nomarkdown
  • Debian Backports ›› FAQ [ How to get a list of all installed backports? ]

    « Q: How to get a list of all installed backports?

    A: Something like the following solutions should work:

    dpkg -l  |awk '/^ii/ && $3 ~ /bpo[6-8]/ {print $2}'

    or

    aptitude search '?narrow(?version(CURRENT),?origin(Debian Backports))' -F '%100p' »

    Pour ceux et celles qui voudraient récupérer une liste des logiciels installés en fonction de son composant (main, contrib, non-free, rpi,...) : dpkg-query -W -f='${Section}\t${Package}\n' | grep ^non-free
    Fri Jan 1 16:22:08 2016 - permalink -
    - http://backports.debian.org/FAQ/
    nomarkdown
  • Nagios: CRITICAL - Socket timeout after 10 seconds - Stack Overflow

    Chez ARN, FAI associatif en Alsace, nos machines ont une BMC c'est-à-dire un contrôleur permettant le management à distance (accès console, reboot, monitoring bas niveau,...) de la bécane (voir https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface#Baseboard_management_controller).

    La BMC de notre HP, un truc ILO 2 est perfectible : elle peut continuer à ping mais ne plus présenter son interface web... et devenir ainsi inutile. Impossible de reboot uniquement la BMC depuis le serveur lui-même (ipmitool bmc reset cold, voir https://serverfault.com/questions/205658/restarting-an-ibm-bmc-without-restarting-the-server-itself) dans ces moments-là : ça ne juste fonctionne pas. Le seul moyen est de rebooter totalement (éteindre + couper les arrivées électriques) la machine. Pas cool de découvrir ça quand on a besoin de la BMC car on a foiré un truc...

    On a donc mis en place un monitoring HTTP en plus du monitoring ICMP des BMC. Aucun problème sur notre Dell iDRAC... Problème sur notre ILO 2, bien entendu : le check retourne toujours « CRITICAL - Socket timeout after 10 seconds » même si l'on augmente la durée avant timeout. Un navigateur web ne rencontre aucun problème. Problème avec TLS, peut-être ? Non, une capture réseau montre que c'est la même version de TLS et la même suite cryptographique qui sont choisis dans les deux cas (check et navigateur web).

    Ce n'est pas la faute de la BMC mais celle du check de monitoring check_http que l'on trouve dans nagios. En effet, ce dernier exécute une requête HTTP 1.1. La BMC répond avec un Content-Type: chunked. La norme HTTP 1.1 *impose* le support de ce content-type donc la BMC n'est pas fautive : le check demande à causer HTTP 1.1 sans savoir parler la langue... Depuis mi-2014 environ (voir https://github.com/monitoring-plugins/monitoring-plugins/pull/1286), check_http sait causer chunked mais visiblement, c'est sacrément buggué (voir https://github.com/nagios-plugins/nagios-plugins/issues/103 par exemple).

    Conclusion : on utilise l'argument « -N » de check_http pour lui dire de se concentrer sur les entêtes HTTP uniquement, et non pas sur le contenu envoyé par la BMC. Ainsi, on vérifie quand même que la BMC est fonctionnelle (une connexion HTTP est possible) sans se prendre la tête.
    Fri Jan 1 16:21:03 2016 - permalink -
    - https://stackoverflow.com/questions/7871009/nagios-critical-socket-timeout-after-10-seconds
    nomarkdown
Links per page: 20 50 100
◄Older
page 16 / 99
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