Como desabilitar 2FA de uma conta Mastodon pelo banco de dados - Ayom Fórum
Descrição de situação que talvez seja bug do Mastodon (sistema de microblogging
federado por ActivityPub) da comunidade Ayom ao tentar desabilitar o duplo fator
de autenticação (2FA) de uma conta e de como foi possível contornar o erro,
considerando que a necessidade pode vir a se repetir ou, também, eventualmente
ajudar a administração de outros servidores. ## Pela Web Por algum motivo
desconhecido, não foi possível à própria pessoa detentora da conta desativar o
duplo fator de autenticação em
https://ayom.media/settings/two_factor_authentication_methods
[https://ayom.media/settings/two_factor_authentication_methods] Tampouco houve
sucesso na interface de administração na Web, https://ayom.media/admin/accounts
[https://ayom.media/admin/accounts] — Nesse caso, após pesquisar pela conta e
carregá-la, quando ela tem 2FA ativo, aparece botão com a opção de desativar.
Porém, ao acioná-lo, ocorria erro, sem explicação. ## Por linha de comando
Tentamos, então, fazer isso pela interface de linha de comando. Nossa estrutura
utiliza Docker em modo Swarm. Alinhando o necessário nesse cenário com a
documentação do comando de administração do Mastodon
[https://docs.joinmastodon.org/admin/tootctl/#accounts-modify], executamos o
seguinte, também sem sucesso. Considerando ayom_mastodon-web o nome do contêiner
e nome.da.conta autoexplicativo: docker exec -it $(docker ps -q --filter
name=ayom_mastodon-web) tootctl accounts modify nome.da.conta --disable-2fa
Ocorreu erro, provavelmente o mesmo, porém visível agora, de quando a operação
foi tentada pela Web. ## Banco de dados Fomos, então, pesquisar sobre o esquema
do banco de dados do Mastodon
[https://github.com/mastodon/mastodon/blob/main/db/schema.rb], em PostgreSQL. No
ambiente Docker Swarm da Ayom, ele está em execução como outro serviço,
denominado mastodon-db, da pilha ayom, sendo mastodon o nome de usuário e
mastodon_production o nome do banco de dados. O nome do contêiner é
ayom_mastodon_db. ### Cópia de salvaguarda Elementar. Executamos, para isso,
nosso script backup_mastodon-db.sh
[https://codeberg.org/daltux/misc-scripts/src/branch/main/backup_mastodon-db.sh],
que salva o arquivo, por padrão, em ~/bkp ### Determinar a conta e zerar campos
do 2FA Abrir o programa psql já com a base em questão: docker exec -it $(docker
ps -q --filter name=ayom_mastodon-db) psql -U mastodon -d mastodon_production
Exemplo de como procurar pela conta que deseja alterar, para descobrir seu ID:
select id,username,domain from accounts where username='daltux''; Após muito
pesquisar, constatamos que os dados de 2FA ficam nos campos
otp_required_for_login, otp_secret e otp_backup_codes da tabela users. Basta
zerá-los, considerandooo o id descoberto no : begin; update users set
otp_required_for_login = false, otp_secret = NULL, otp_backup_codes = NULL where
id = 10; commit; ## ⚠️ Aviso de segurança da informação Recomenda-se ter certo
nível de certeza sobre quem solicitou a desativação de 2FA ser realmente a
pessoa titular da conta, pois a “engenharia social” é a maneira mais esperada de
atacantes tentarem contornar tal proteção.