Mot-clé - Mastodon

Fil des entrées - Fil des commentaires

mardi 9 avril 2024

Mastodon, maintenance et 2FA

Nous avons récemment, avec Xala, migré les différents services de ZdX pour aller vers une infrastructure plus puissante et surtout plus facile à faire évoluer. Et le dernier service à avoir été migré est Mastodon qui a toujours le don de réserver des surprises.

À la fin de cette migration donc, nous avons rencontré des difficultés avec PostgreSQL, et avons pu observer de nombreuses entrées dupliquées dans la base de Mastodon.

Qu'à cela ne tienne, Mastodon propose tootctl, un outil d'administration qui permet également de corriger les entrées dupliquées. Allons-y :

mastodon@zdx-mastodon:~/live/bin$ ./tootctl maintenance fix-duplicates
This task will take a long time to run and is potentially destructive.
Please make sure to stop Mastodon and have a backup.
Continue? (Yes/No) Yes
Deduplicating user records…
Restoring users indexes…
Removing duplicate account domain blocks…
Restoring account domain blocks indexes…
Removing duplicate account identity proofs…
Restoring announcement_reactions indexes…
Deduplicating conversations…
Restoring conversations indexes…
Deduplicating custom_emojis…
Restoring custom_emojis indexes…
Deduplicating custom_emoji_categories…
Restoring custom_emoji_categories indexes…
Deduplicating domain_allows…
Restoring domain_allows indexes…
Deduplicating domain_allows…
Restoring domain_blocks indexes…
Deduplicating unavailable_domains…
Restoring domain_allows indexes…
Deduplicating email_domain_blocks…
Restoring email_domain_blocks indexes…
Deduplicating media_attachments…
Restoring media_attachments indexes…
Deduplicating preview_cards…
Restoring preview_cards indexes…
Deduplicating statuses…
Restoring statuses indexes…
Deduplicating accounts… for local accounts, you will be asked to chose which account to keep unchanged.
Restoring index_accounts_on_username_and_domain_lower…
Reindexing textual indexes on accounts…
Deduplicating tags…
Restoring tags indexes…
Deduplicating webauthn_credentials…
Restoring webauthn_credentials indexes…
Deduplicating webhooks…
Restoring webhooks indexes…
Finished!

Trop facile !

Sauf que, suite à cela... Plus de 2FA sur l'instance ZdX. Impossible de se connecter si le 2FA est activé, le code généré est systématiquement refusé.

Me voilà obligé de désactiver le 2FA, et impossible de le remettre. Peu importe le compte. Je n'ai pas creusé, mais c'est dommage.

x.x.x.x - - [09/Apr/2024:12:00:47 +0000] "POST /settings/two_factor_authentication/confirmation HTTP/1.1" 500 894 "https://social.zdx.fr/settings/two_factor_authentication/confirmation/new" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15"

vendredi 2 février 2024

Changer la version de Ruby

À chaque fois que la version minimale de Ruby évolue dans les prérequis de Mastodon, je me retrouve à chercher comment la mettre à jour. C'est l'occasion pour moi de poser ça ici pour retrouver mes petits plus facilement.

Voici donc les quelques commandes qui me sont toujours utiles. Attention, j'utilise ici rbenv.

Connaître la version de Ruby :

$ rbenv version

Lister les versions disponibles :

$ rbenv install --list

Si la version voulue n'est pas disponible :

$ git -C /home/mastodon/.rbenv/plugins/ruby-build pull

Installation de la version voulue :

$ rbenv install <version>

Application de la nouvelle version :

$ rbenv local <version>

lundi 31 octobre 2022

Mastodon, la solution ?

Le rachat de Twitter par Elon Musk fait couler beaucoup d’encre. Enfin… Use énormément de claviers. Les utilisateurs s’inquiètent des dérives que peut impliquer l’arrivée à la tête d’un aussi gros réseau social d’un soutien de l’extrême-droite, et migrent vers Mastodon.


La vie privée remise en cause

La prise de conscience massive concernant ce sujet est une excellent effet de bord amené par cette nouvelle, et je ne me plaindrai pas de voir des internautes se soucier de leur vie privée. Malgré tout, celle-ci se fait (encore une fois) sous le coup de l’émotion suite à une annonce spécifique. Mais qu’en restera-t-il ?

Ces utilisateurs se soucient-ils de leur vie privée sur le reste d’Internet et des effets de bulle amenés par les algorithmes des différents réseaux sociaux ? S’inquiètent-ils de ce qu’il s’est passé avant l’arrivée de Musk ? Twitter, comme Facebook, peut-il restaurer les messages supprimés ?

Je ne remets pas du tout en cause la légitimité de cette inquiétude, bien au contraire.

Cependant, encore une fois, Mastodon et plus généralement le fediverse se retrouve au devant de la scène avec un exode « massif » des utilisateurs vers ce réseau social fédéré. Idéalisé, ce modèle dit alternatif se voit souvent attribuer une image bien plus belle que la réalité.

La fédération, comment ça marche ?

De nombreux articles détaillent très bien le fonctionnement des différents outils qui composent le fediverse. Je ne vais donc pas m’étendre sur le sujet.

Pour faire simple, il s’agit de plusieurs serveurs (instances) hébergés par des particuliers (comme moi), des associations (LQDN, Framasoft, …), des institutions (Etalab) ou des entreprises. Ces serveurs sont interconnectés et communiquent entre eux avec le même langage (ActivityPub), ce qui permet à une personne disposant d’un compte sur une instance d’échanger avec une personne qui dispose d’un compte sur une autre instance.

Voilà pour l’idée générale, mais…

Qu’en est-il de la vie privée et de la liberté d’expression ?

Puisqu’il s’agit bien là des deux principaux sujets qui font quitter Twitter pour cette « Grande migration », penchons-nous sur tout cela en détail.

Liberté d’expression

La liberté d’expression, ce n’est pas être autorisé à dire tout ce qu’on veut en se cachant derrière cet argument.

La liberté d’expression permet à chacune et chacun d’exprimer ses opinions librement, sans être puni pour cela. Toutefois, les contenus sont encadrés par la loi sont bien entendus interdits sur le fediverse.

Il revient donc à chaque administrateur de serveur de garder un œil sur ce qu’il se passe. Il doit répondre de façon adaptée à tout signalement qui peut être reçu de la part d’un compte. Ici se montre une première difficulté : Comment définir, sans être fin connaisseur de la loi, si un contenu est légal ou ne l’est pas ? Certains le sont de façon très évidente, d’autres beaucoup moins. Et nous devons déjà procéder à un premier arbitrage en prenant des pincettes.

Nous devons également être capables de répondre à une requête judiciaire, en gardant les logs de connexion sur une certaine durée. Il me semble que c’est un an, et c’est ce que je fais pour tous mes services. Là encore, je n’ai pas réussi à trouver l’information exacte. Si vous l’avez, je suis preneur.

Vous ne devez donc pas considérer que tout peut être dit en toute tranquillité. Vous ne pouvez pas non plus penser que les biais de Twitter n’y seront pas présents. Seul l’effet de bulle auquel les algorithmes vous contraignent n’est pas présent. Quoi que…

Vie privée

On s’attaque ici au second sujet qui inquiète les utilisateurs et utilisatrices de Twitter : la vie privée. En effet, on a pu voir fleurir beaucoup de tweets qui disaient : Sachez qu’Elon Musk peut lire vos messages privés. Oui, et ?

C’était déjà possible avant, ça l’est toujours. Seul le dirigeant de l’entreprise a changé.

Mais qu’en est-il sur le fediverse ? Êtes-vous davantage protégés ?

Pour répondre à cette question sans aller espionner mes utilisateurs, j’ai demandé à mon cobaye valere de m’envoyer un DM pour cet article.

Ensuite, pour faire ma recherche, je me suis basé sur l’identifiant du message qui apparaît à la fin de l’URL de ce dernier. Ce choix a été fait par facilité pour ne pas complexifier la partie technique. Une rapide requête directement en base de données me permet donc d’afficher les informations de ce message :

mastodon=# \x
Expanded display is on.
mastodon=# select * from statuses where id=109257510679454696;
-[ RECORD 1 ]----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------
id                           | 109257510679454696
uri                          | https://hostux.social/users/valere/statuses/109257510656373246
text                         | <p><span class="h-card"><a href="https://social.zdx.fr/@xakan" class="u-url mention">@<span>xakan</span></a></span> Ceci est un message super privé !</p>
created_at                   | 2022-10-30 13:41:48
updated_at                   | 2022-10-30 13:41:48.953448
in_reply_to_id               |
reblog_of_id                 |
url                          | https://hostux.social/@valere/109257510656373246
sensitive                    | f
visibility                   | 3
spoiler_text                 |
reply                        | f
language                     | en
conversation_id              | 1404791
local                        | f
account_id                   | 136
application_id               |
in_reply_to_account_id       |
poll_id                      |
deleted_at                   |
edited_at                    |
trendable                    |
ordered_media_attachment_ids |

Ici, nous obtenons donc rapidement l’expéditeur, la visibilité du message (3 étant un message privé), ainsi que le message en clair. J’ai donc, théoriquement, accès à tous les échanges privés qu’échangent les utilisateurs de mon instance. Je peux alors, si je le souhaite, tout lire. Strictement tout.

Certains pensent qu’il y a un système de clés, que le message est chiffré : ce n’est pas le cas.

De la même façon, je peux rapidement savoir combien de messages privés ont été échangés sur mon instance. Au moment où j’écris ces ligne, il y en a 2114.

mastodon=# select COUNT(*) from statuses where visibility=3;
-[ RECORD 1 ]
count | 2114

Pour être très clair : j’ai accès aux publications non publiques (réservées aux abonnés) dès lors qu’elles parviennent à mon instance. Et ce, même si je ne suis pas abonné aux comptes concernés. Il me suffit d’utiliser pour ça la valeur 2 au lieu de 3 pour la visibilité.

Et donc ?

J’ai la chance d’avoir des utilisateurs qui me font confiance. Je les ai toutes et tous interrogés sur le sujet, et les réponses ont jusque là toutes été positives. Mes utilisateurs ont assez confiance en moi pour savoir que je ne fais rien de toutes ces données.

Mais qu’en sera-t-il si un administrateur décide d’aller fouiner ? Quelle protection aurez-vous ? Aucune. Strictement aucune.

La vie privée sur Mastodon n’existe pas davantage qu’ailleurs, et le pouet d’Aral le dit parfaitement. Il en est de même pour l’anonymat. Rappelons-le, il s’agit de pseudonymat uniquement !

Utilisez l’outil que vous voulez, mais faites-le en connaissance de cause.

Bonus

Il y a encore deux trois points sur lesquels j’aimerais insister suite à ce petit billet.

Mastodon et le fediverse en général n’offrent pas plus de vie privée que Twitter. Si vous ne voulez pas qu’un contenu puisse vous nuire, ne le publiez pas. Privé ou non. Ne postez, ne dites que ce que vous êtes prêts à assumer si ça venait à fuiter.

Il existe également des risques de sécurité : nous avons tous des niveaux différents en ce qui concerne la sécurité. Les serveurs disposent obligatoirement de niveaux de sécurité différents. Une intrusion n’est pas à exclure, et nous ne la détecterons pas forcément.

Les bulles existent également, tout comme dans la vie hors d’Internet. Les instances sont souvent à thème. Les communautés, quelles qu’elles soient, existent aussi, et des personnes dangereuses sont également présentes sur ce réseau. Ces bulles ne sont juste pas créées par un algorithme.

Nous ne sommes pas à l’abri de l’arrivée de personnes comme Elon Musk sur ce réseau. Nous ne sommes pas non plus à l’abri de l’arrivée de publicitaires, et de personnes mal intentionnées.

Pour conclure le bonus de la conclusion d’un billet déjà trop long, je dirais simplement : Réfléchissez à tout ce que vous postez, ne le faites que si vous êtes certain de pouvoir l’assumer ensuite. Et surtout, ne pensez pas que c’est un eldorado. Les mêmes travers sont présents, et le seront davantage si le réseau grandit.

Pour le reste, le meilleur outil est celui qui nous convient, mais faites attention à vous ;)