Mablr

Internet, Libertés et Vie Privée

Bilan de l'action d'Elukerio durant les 12 derniers mois

July 19, 2019 — mablr

RMLL2018

Je me suis rendu tout seul aux rencontres mondiales du logiciel libre à Strasbourg. J’y ai retrouvé les amis d’Alolise, qui étaient bien occupés à gérer le stand buvette. J’ai fait une réédition de la conférence des JdLL2018 sur la dégooglisation des smartphones et assisté à plein de conférences passionnantes comme d’habitude ! Les soirées avec les amis d’Alolise était particulièrement conviviales,on m'a mis au courant de plein d’anecdotes croustillantes sur l’organisation des RMLL2017, de Stallman la figure emblématique du logiciel libre à Wauquiez et son pistolet à eau … les gens qui suivent sauront.

JdLL2019

Retour aux sources, un an après la première conférence sur la dégooglisation des smartphones. J’ai présenté, aidé par mes acolytes d’Elukerio, une conférence ayant pour but de décrire les étapes clefs de la création d’un hébergeur « CHATONS » en mettant en avant la dimension humaine de l’aventure. Les retours furent, il me semble très positifs, les personnes présentes ont posé énormément de questions très pertinentes, nous permettant de développer les propos tenus lors de la présentation. Cet évènement m’a encore permis de faire plein de rencontres très intéressantes. Il y a eu entre autres, Neil et Brume qui ont créé 42l.fr, un « CHATONS » dans l’école 42.

Adminsys

Bien que la configuration du serveur LDAP soit encore balbutiante (promis on termine ça avec Max avant la fin de l'été ;-)). Une grande partie des services a déjà été lancée. L’instance searx semble être le service ayant le plus de succès avec environ 100 000 requêtes par mois.

Avec max nous avons su gérer correctement le premier gros problème technique (dysfonctionnement sur le RAID matériel), il a fallu migrer les conteneurs LXC sur mon serveur dédié durant la réinstallation du serveur pour ne pas arrêter les services. Cette expérience fut mémorable car c’était la première fois que nous intervenions dans un datacenter.

Par ailleurs Elukerio a subit 2 incidents durant le mois de juin : * Du 2 au 4 Juin, l'instance Searx d'Elukerio a enduré une très grosse surcharge, avec plus de 8 millions de requêtes en 2 jours alors que le trafic normal dépasse rarement 15 000 requêtes sur une même période, un pic de surcharge a été le matin du 4 Juin à 15 requêtes/s. Environ 120 adresses IP parmi 15 blocs /24 ont été impliquées. La mise en place d'un filtre fail2ban plus dur que celui existant a permis de mettre fin à cet épisode. * Du 19 au 25 Juin, libmail.eu a été la proie d'un spammeur ayant un humour assez particulier (l'adresse qu'il a créé était facebook@libmail.eu). Parmi les 2,5 millions de mails qu'il a tenté d'envoyer seuls 122 sont réellement arrivés. Jusque-là rien de très grave mais le vrai problème à été causé par un conflit entre la configuration du filtre anti-spammeur de libmail et celui d'OVH. Je donnerai plus de détails dans un article détaillé sur le sujet. La situation est revenue à la normale.

PSES2019

Il y a quelques jours je me suis rendu au festival Pas Sage en Seine avec Max et Benoît. L’occasion de revoir les amis de 42l et de découvrir la communauté du logiciel libre d’Île de France. L’organisation nous a semblé impeccable, avec la mise en place d’un code de conduite très juste. Les quelques personnages toxiques ayant osé semer le trouble ont été virés sur le champ. Une très bonne chose pour maintenir une ambiance saine et respectueuse dans laquelle chacun se sent à sa place.

Bien que sensibilisé depuis plusieurs années aux fuites de données personnelles sur les smartphones, j'ai été impressionné par la démonstration d'exodus-privacy avec PiRogue, c'était très percutant !

Cet été

Pas mal de projets vont s’enchaîner cet été, avec notamment la finalisation du serveur LDAP qui va nous permettre d’ouvrir officiellement les inscriptions de l’association. Puis il y aura beaucoup de travail de documentation et de développement des outils de concertation en interne. Et bien sûr, l’assemblée générale qui va permettre de réunir les 7 membres d’Elukerio !

Tags: Elukerio

Créer un serveur web sous Debian Stretch avec Nginx, PHP-FPM et PostgreSQL

January 30, 2019 — mablr

Dans cet article je vais décrire la façon dont je crée habituellement mes serveurs web. La configuration qui va suivren'est pas absolument parfaite, mais déjà de qualité tout à fait convenable. J'ai également choisit de présenter la suite logicielle Nginx/PHP-FPM/PostgreSQL car je la trouve extrêmement performante et bien plus simple à utiliser que LAMP ...

Alors prêts à commencer ?

J'ai fait le choix d'utiliser uniquement les paquets issus des dépôts Debian stable, à la fois pour le côté pratique (on ne va pas s'embêter à rajouter des dépôts externes) mais également pour la stabilité, et oui je suis déjà vieux ;-) Il va bien sûr être indispensable d'utiliser le terminal (n'ayez crainte je vais vous guider pas à pas). Je considérerai lors des différentes étapes que vous êtes "root" donc avant de commencer : su -

Ou si vous avez configuré sudo : sudo -i

Installation des paquets

Commençons d'abord par mettre à jour la machine : apt update && apt upgrade -y

Installons maintenant l'ensemble des paquets nécessaires : apt install nginx php-fpm php-pgsql postgresql

Vous aurez peut-être besoin d'installer des modules PHP supplémentaires, pour cela cherchez les noms des paquets à installer sur le web ou plus simplement cherchez sur les dépôts : apt search nom_du_module_PHP | more

Pour lister l'ensemble des modules PHP disponibles sur les dépôt : apt search php- | more

Puis vous n'avez qu'à les installer avec "apt install nomdespaquets".

Configuration

 PHP-FPM

Par défaut PHP-FPM écoute sur un socket unix, mais nous allons préférer le faire écouter sur un port en local. Pour cela il va falloir éditer son fichier de configuration (remplacez vim par nano si vous êtes débutant) : vim /etc/php/7.0/fpm/pool.d/www.conf

Trouvez la ligne suivante : listen = /run/php/php7.0-fpm.sock

Modifiez pour qu'elle soit ainsi : listen = 127.0.0.1:9000

Enregistrez et quittez. (+x puis "y" ou "o" puis pour nano, et puis ":x" puis pour vim)

Redémarrez PHP-FPM: systemctl restart php7.0-fpm

PostgreSQL

Nous allons créer un utilisateur d'exemple ainsi qu'une base de données sur laquelle il aura tous les droits. Il faut changer d'utilisateur Unix pour faire cette étape : su - postgres

Puis on crée l'utilisateur et sa base de données : createuser -P utilisateur
createdb -O utilisateur bdd

Maintenant que PostgreSQL est prêt on peut quitter l'utilisateur postgres en tapant exit ou avec +d.

Nginx

Il maintenant temps de passer aux choses sérieuses en configurant Nginx ! Supprimez le site par défaut : rm /etc/nginx/site-enabled/default

Créez un dossier include et créez un fichier de configuration pour le php : mkdir -p /etc/nginx/include/
vim /etc/nginx/include/php

Puis collez ceci dans le fichier "php" et enregistrez : location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

Pour la configuration TLS renseignez vous sur Letsencrypt et Certbot pour générer vos certificats.

Une fois vos certificats obtenus il vous faudra créer une clé Diffie-Hellman, cette opération est très longue, vous avez largement le temps d'aller prendre un café après avoir lancé la commande : openssl dhparam -out /etc/nginx/dhparam.pem 4096

Voici maintenant une bonne configuration TLS pour Nginx, créez le fichier vim /etc/nginx/include/ssl

contenant les lignes suivantes (ajustez avec le bon chemin vers vos certificats) : ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 80.67.169.12 80.67.169.40 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000;includeSubDomains" always;

Il ne vous reste qu'à créer les fichiers de configuration correspondants à vos sites web, le premier est un exemple prenant en charge HTTP et HTTPS (en fait redirigeant tout le temps vers HTTPS) et le second prend en charge uniquement HTTP. N'oublier pas d'ajuster les directives "server_name" et "root" en fonction de vos besoins. vim /etc/nginx/sites-available/mon_premier_site server {
listen 80;
listen [::]:80;
server_name www.example.org example.org;
rewrite ^(.*) https://$server_name$request_uri permanent;
}
server { listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.org example.org;
root /var/www/mon_premier_site;
index index.php index.html;
location ~ /\. {
deny all;
}
include /etc/nginx/include/php;
include /etc/nginx/include/ssl;
}
server {
listen 80;
listen [::]:80;
server_name www.example.org example.org;
root /var/www/mon_premier_site;
index index.php index.html;
location ~ /\. {
deny all;
}
include /etc/nginx/include/php;
}

Une fois les fichers de configuration enregistrés, il faut faire un lien symbolique : cd /etc/nginx/sites-enabled/
ln -s ../sites-available/mon_premier_site

Testez la configuration : nginx -t

S'il n'y a pas d'erreurs, rechargez Nginx :

systemctl reload nginx

Bravo ! Votre serveur web est maintenant fonctionnel.

 Petit bonus

  • Configuration reverse-proxy: location / {
    proxy_pass http://machine.local;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Remote-Port $remote_port;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    }

  • Si vous obtenez une erreur 502 Bad Gateway, c'est sûrement un problème au niveau de PHP-FPM

  • Si vous obtenez une erreur 403 Permission Denied, il faut appliquer les bon droits d'accès à la racine de votre site web.

Tags: Tutoriels

Convertir un .jsonlz4 en .json

August 10, 2018 — mablr

Cet article est réalisé suite à une petite bêtise que j'ai faite avec mon Firefox. Je m'explique, la compilation d'une version de Firefox étant aujourd'hui assez longue (près d'un quart d'heure pour la dernière version 62 avec mon i7 8gen, un SSD et 16 Go de RAM), j'ai voulu voir ce que cela donne avec la version 1.0, j'ai donc tenté ma chance et sans surprise en moins de 5 minutes c'était déjà fini !

Comme une lettre à la poste ! Pour le petit instant émotion, j'ai voulu démarrer ma version (de 2003 !) frachement compilée sans me douter que cela allait planter mon profil actuel de Firefox. Je lance alors firefox : ./firefox

Tout fonctionne à peu près correctement, en même c'est pas étonnant vu que Firefox respecte les standards du web, le rendu 15 ans après la publication de cette version n'est vraiment pas dégueux. Après avoir fait le tour je referme et j'ouvre la version actuelle de Firefox, et là ... oups mon profil a disparu ! Enfin les données de personnalisation, extensions et favoris se sont barrés car le vieux Firefox a voulu utiliser mon profil actuel or vu le bon de version, ce n'était pas rétrocompatible ! C'est vraiment embêtant de perdre comme ça ses favoris et ses extensions, mais en informatique rien ne s'efface (ou presque ;-P) je ne me suis pas inquiété du tout, et je me suis mis immédiatement à fouiller le dossier contenant mon profil (dans ~/mozilla/firefox/.default/).

Tout de suite, j'ai trouvé des fichiers semblant être des archives de mes favoris avec une extension assez exotique ".jsonlz4". Par pure logique je n'ai déduit que c'était une sorte fichier .json compressé propre à Firefox, il faut conséquent trouver un moyen d'obtenir du json exploitable à importer. Voici ce que donne l'aperçu d'un de ces fichiers : Fichier jsonlz4

Après quelques recherches (Qwant est ton ami), j'ai trouvé un petit outil en C appelé dejonlz4. Il suffit de cloner le dépot : git clone https://github.com/avih/dejsonlz4.git

Compiler : cd dejsonlz4/
gcc -Wall -o dejsonlz4 src/dejsonlz4.c src/lz4.c

Il n'y a plus qu'à tester ! echo $(./dejsonlz4 <favoris-archivés-que-l'on-a-retrouvé>.jsonlz4) >> <favoris>.json cat <favoris>.png

Nous avons maintenant un beau fichier de favoris avec une syntaxe en .json, qu'il suffit d'importer dans Firefox dans les marque-pages, section "Importation et sauvegarde" puis "Restaurer" et enfin "Choisir un fichier". Notez qu'il est possible (avec un peu de chance) que vous puissiez restaurer vos favoris après avoir cliqué sur "Restaurer", les étapes du début vous seront dans ce cas là inutiles.

C'est terminé ! Les marque-pages sont de retour !

Tags: Tutoriels

Faire une clé USB bootable Windows depuis une machine sous GNU/Linux

July 30, 2018 — mablr

Bon l'autre jour, à mon grand désarroi, j'ai été obligé d’installer Windows sur un de mes PC. (Pour déverrouiller le bootloader de mon Xiaomi Redmi Note 5). Pour se faire il m'a fallu créer un support d'installation pour Windows depuis une machine sous GNU/Linux puisque je ne travaille que sous cet OS depuis déjà plusieurs années. J'ai pour cela trouvé un outil extrêmement pratique et simple ...

C'est WoeUSB !

Voici la procédure d'installation depuis la source : il faut d'abord cloner le dépot de WoeUSB. git clone https://github.com/slacka/WoeUSB.git

On génère ensuite le nom de version approprié basé sur les tags Git. cd WoeUSB
./setup-development-environment.bash

Puis on installe les dépendances. Tout en restant dans le répertoire WoeUSB. Pour Debian et ses dérivés, à adapter selon votre gestionnaire de paquet. sudo apt-get install devscripts equivs
mk-build-deps
sudo dpkg -i woeusb-build-deps*.deb

Pour finir on construit le paquet et on l'installe. dpkg-buildpackage -uc -b
sudo dpkg -i ../woeusb*.deb

L'interface graphique de WoeUSB ce lance grace au raccourci qui s'est créé dans les menus lors de l'installation ou avec la commande suivante : woeusbgui Capture d'écran de l'utilitaire WoeUSBGUI

Pour ceux qui préfèrent le terminal : sudo woeusb --device <windows>.iso /dev/sdX

Mission accomplie ! Un utilitaire bien utile à garder sous le coude.

Tags: Tutoriels

La génèse d'Elukerio

June 29, 2018 — mablr

Il y a environ deux ans j'étais déjà franchement intéressé par le libre et l'internet, j'utilisais déjà GNU/Linux au quotidien et ça me plaisait bien. Mais il y avait quelque chose qui me déplaisait, c'était le fait de ne pas comprendre vraiment comment ça fonctionne derrière. Bref, après avoir pas mal discuté avec deux amis de ma classe, nous avons pris un VPS chez OVH pour apprendre à gérer un serveur, en grande partie parce que c'était trop la classe ! Au bout de quelque temps j'ai pris l'initiative de créer un serveur courriel, pour apprendre et me débarrasser définitivement de mon compte Google ...

Au bout de 9 mois à apprendre les bases du réseau et de l'administration système sous Debian, ainsi que la programmation en PHP, libmail.eu est né. Un petit serveur courriel éthique et sans prétention, qui a fait son petit bonhomme de chemin (près de 100 utilisateurs actifs !! Trop bien). Ensuite les deux amis du début se sont de plus en plus investis dans les projets autour du VPS, c'est donc tout naturellement qu'est venue l'idée de l'association pour formaliser notre action.

Le 3 mars 2018, notre association appelée Elukerio est créée. Notre objectif est de fournir des services éthiques alternatifs à ceux des GAFAM & Cie, sensibiliser le jeune public à des thématiques comme la vie privée. Une des premières actions a été d'aller faire une conférence aux JDLL 2018 pour notamment aborder le problème des smartphones (véritables mouchards, avec Google viscéralement greffé dedans). Nous y avons fait de super rencontres en particulier avec PYG de chez Framasoft avec qui nous avons parlé "Chatons", ainsi que les gens de chez Alolise qui ont été absolument géniaux. En effet après avoir discuté quelques minutes avec l'un de leurs membres, ils ont décidé de nous donner un serveur, et de nous mettre en contact avec Rezopole pour faire héberger cette machine. Nous étions vraiment impressionnés par cette générosité !

Ensuite est venu le jour où je suis allé chercher le serveur chez Alolise à Saint-Étienne, j'ai testé avec eux l'état de marche de 5 ou 6 serveurs dont ils ne se servaient plus, et puis ils ont décidé de me donner le plus gros en disant "tu verras, il a du xeon ça tient la route, en plus avec 16 Go de RAM, tu pourras bien lancer ton asso" ! Je les ai remerciés, un peu gêné par tant de générosité, mais le plus impressionnant était encore à venir ! Un fois rentré chez moi, j'ai décidé de le tester en installant Debian à la place de la vieille Red Hat qui tournait dessus. J'ai d'abord ouvert le capot pour voir ce qu'il y avait dans le ventre de la bête, et là vu 4 blocs de refroidissement pour processeurs, surprenant c'était la première fois que je voyais 4 processeurs sur une même carte mère. J'ai ensuite trouvé 16 barrettes de RAM, j'en ai déduit que leur capacité respective était de 1 Go, à ce moment-là j'étais franchement très content ! Une fois démarré encore en grand choc ! Il y a en fait 32 Go de RAM ! et 4 processeurs xeon quadricœurs cadencés à 2,9 GHz ! Juste incroyable ! Alolise nous a vraiment fait un énorme cadeau ! C'est ainsi que l'aventure Elukerio a démarré et j'espère qu'elle durera longtemps le plus longtemps possible ...

Tags: Elukerio

Ouverture du blog

June 26, 2018 — mablr

Bonjour je m'appelle Dan !

C'est peut-être un peu bizarre comme intro mais parfois il vaut mieux aller à l'essentiel.

Ce blog sera mon terrain d'expression personnel en dehors de mes autres projets : Elukerio et Libmail.

Il sera surtout question de logiciel libre, de liberté d'expression, de surveillance de masse et toutes sortes de bidouillages intéressants ...

Les billets publiés n'engageront que moi et en aucun cas les organismes que je représente.

Tags: Annonces