Skip to content

Instantly share code, notes, and snippets.

@me-suzy
Created April 16, 2026 09:33
Show Gist options
  • Select an option

  • Save me-suzy/933ca3aaf3b706c09528c75ab4e571e5 to your computer and use it in GitHub Desktop.

Select an option

Save me-suzy/933ca3aaf3b706c09528c75ab4e571e5 to your computer and use it in GitHub Desktop.
GHID_SCHIMBARE_TOPIC_NTFY.md

Ghid complet - schimbare topic NTFY

Scop

Acest ghid documenteaza toti pasii urmati pentru a rezolva problema cu mesajele suspecte din aplicatia ntfy.

Problema a fost ca notificarile erau trimise catre un topic public de pe ntfy.sh, iar acel topic putea primi mesaje si de la alte persoane.

Simptom observat

In aplicatia de telefon au aparut mesaje suspecte, de tip spam, printre mesajele reale de backup.

Exemple:

  • mesaje reale de backup: Start ora_cold backup, End user_data backup
  • mesaje suspecte: link-uri si texte fara legatura cu backup-ul

Concluzie

Problema nu era la job-urile de backup si nici la serverul de backup in sine.

Problema era la notificari:

  • scriptul de pe server trimitea pe ntfy.sh
  • topicul era public
  • topicul vechi putea fi folosit si de alte persoane

Informatiile confirmate pe server

Te loghezi la Putty:

"e:\Carte\BB\17 - Site Leadership\alte\Ionel Balauta\Aryeht\Task 1 - Traduce tot site-ul\Doar Google Web\Andreea\Meditatii\2023\Monitor Server Biblioteca Copou\AlephMonitor-AutoLogin 32 biti\monitor-server-autologin.py"

SERVER_IP = "85...." SSH_PORT = 22 SSH_USER = "root" SSH_PASS = "PASS" # PAROLA CRITICĂ pentru SSH - fără ea nu poți accesa serverul!

Dupa conectarea prin SSH, s-au verificat urmatoarele:

whoami
hostname
pwd

Rezultat:

  • utilizator: root
  • hostname: bariasi
  • director curent: /root

Verificarea configuratiei NTFY locale

S-a verificat daca exista configuratie locala pentru un server ntfy self-hosted:

sudo cat /etc/ntfy/server.yml

Rezultat:

  • fisierul nu exista

Concluzie:

  • pe acest server nu exista configuratie locala standard pentru ntfy

Identificarea scriptului care trimite notificarile

S-a verificat scriptul de sumar backup:

sudo cat /usr/local/bin/backup_summary_ntfy.sh

Continut relevant:

#!/bin/bash
SUM="/exlibris/backup/logs/Summary.log"
NTFY="/usr/local/bin/ntfy_notify.sh"
MSG=$(awk '/^Start/{blk=$0;next}/^  End/{print blk" " $0}' "$SUM" | tail -4)
[ -n "$MSG" ] && echo "$MSG" | $NTFY

Concluzie:

  • scriptul real care trimite notificarea este /usr/local/bin/ntfy_notify.sh

Verificarea scriptului de notificare

S-a citit fisierul:

cat /usr/local/bin/ntfy_notify.sh

Continut relevant gasit:

#!/bin/bash
TOPIC="bariasi-5f07b8571f7c"
URL="http://ntfy.sh/${TOPIC}"

Concluzie:

  • serverul nu trimite catre un ntfy local
  • serverul trimite direct catre http://ntfy.sh/...
  • topicul vechi era bariasi-5f07b8571f7c

Confirmarea ca nu exista server NTFY local instalat

S-au rulat comenzile:

which ntfy
ps aux | grep ntfy
ls /etc/ntfy /var/lib/ntfy 2>/dev/null

Rezultat:

  • which ntfy nu a gasit binarul
  • ps aux | grep ntfy nu a aratat un proces ntfy local
  • directoarele standard nu au confirmat o instalare locala utila

Concluzie:

  • se foloseste serviciul public ntfy.sh

Solutia aleasa

Pentru rezolvare rapida s-a decis:

  • schimbarea topicului vechi cu unul nou, lung si random
  • pastrarea temporara a serviciului public ntfy.sh

Aceasta nu este protectie perfecta, dar reduce foarte mult riscul de spam daca topicul nou ramane secret.

Comanda folosita pentru schimbarea automata a topicului

S-a rulat pe server urmatoarea comanda:

NEWTOPIC=$(cat /proc/sys/kernel/random/uuid | tr -d '-') && sed -i "s/^TOPIC=.*/TOPIC=\"$NEWTOPIC\"/" /usr/local/bin/ntfy_notify.sh && echo "$NEWTOPIC"

Ce face aceasta comanda:

  • genereaza un topic nou random
  • modifica automat linia TOPIC=... din /usr/local/bin/ntfy_notify.sh
  • afiseaza topicul nou pe ecran

Topicul nou generat

Topicul nou folosit a fost:

1b748ceafced4ffaa049da2b23a8f310

Testarea dupa modificare

Dupa schimbarea topicului, s-a trimis un mesaj de test:

echo "test nou topic" | /usr/local/bin/ntfy_notify.sh

Rezultat:

  • mesajul a aparut in aplicatia de telefon

Concluzie:

  • scriptul a fost modificat corect
  • serverul trimite pe topicul nou
  • aplicatia a fost configurata pe topicul corect

Pasii facuti in aplicatia NTFY de pe telefon

In aplicatia de telefon s-au urmat exact acesti pasi:

  1. S-a deschis ecranul Subscribe to topic
  2. In campul topic s-a introdus exact:
1b748ceafced4ffaa049da2b23a8f310
  1. Optiunea Use another server a ramas oprita
  2. Optiunea Reserve topic and configure access a ramas oprita
  3. S-a apasat SUBSCRIBE
  4. S-a verificat aparitia mesajului test nou topic
  5. S-a confirmat functionarea corecta

Atentie importanta

La abonare trebuie introdus exact topicul generat pe server.

Nu trebuie apasat GENERATE NAME, deoarece aplicatia creeaza alt topic si mesajele din server nu vor mai ajunge acolo.

Dupa schimbare

Trebuie sters din aplicatie topicul vechi:

bariasi-5f07b8571f7c

Acest pas este important ca sa nu mai apara mesaje spam de pe topicul vechi public.

Test pentru mai multi utilizatori

Daca o alta persoana face subscribe la exact acelasi topic nou:

1b748ceafced4ffaa049da2b23a8f310

atunci va primi si ea toate mesajele noi trimise dupa abonare.

Exemplu de test:

echo "test pentru amandoi" | /usr/local/bin/ntfy_notify.sh

Cum repeti procedura pe viitor

Daca vrei sa schimbi din nou topicul in viitor, urmeaza exact acesti pasi:

1. Conectare pe server

Conectare prin PuTTY sau SSH.

2. Schimbare automata a topicului

Ruleaza:

NEWTOPIC=$(cat /proc/sys/kernel/random/uuid | tr -d '-') && sed -i "s/^TOPIC=.*/TOPIC=\"$NEWTOPIC\"/" /usr/local/bin/ntfy_notify.sh && echo "$NEWTOPIC"

3. Copiere topic nou

Copiaza topicul afisat de comanda.

4. Test trimitere

Ruleaza:

echo "test nou topic" | /usr/local/bin/ntfy_notify.sh

5. Actualizare aplicatie telefon

In aplicatia ntfy:

  • stergi topicul vechi
  • adaugi topicul nou exact cum a fost afisat

6. Verificare finala

Verifici ca mesajul de test apare in aplicatie.

Comenzi utile pentru verificare rapida

Vezi topicul curent din script

grep '^TOPIC=' /usr/local/bin/ntfy_notify.sh

Vezi URL-ul folosit

grep '^URL=' /usr/local/bin/ntfy_notify.sh

Trimite un test manual

echo "test manual ntfy" | /usr/local/bin/ntfy_notify.sh

Limitarea solutiei actuale

Solutia actuala foloseste in continuare ntfy.sh, adica un serviciu public.

Asta inseamna:

  • topicul nou este mai greu de ghicit
  • dar nu este protejat cu user/parola
  • daca topicul devine cunoscut, altcineva poate trimite iar mesaje pe el

Solutia corecta pe termen lung

Pentru securitate reala, pe viitor se recomanda una din variante:

  1. instalare ntfy pe serverul propriu
  2. configurare user/parola si ACL
  3. folosirea unui server ntfy privat, nu a topicului public de pe ntfy.sh

Rezumat foarte scurt

  • topicul vechi era public si primea spam
  • serverul trimitea pe http://ntfy.sh/${TOPIC}
  • s-a schimbat topicul cu unul random nou
  • topicul nou este 1b748ceafced4ffaa049da2b23a8f310
  • aplicatia a fost abonata la topicul nou
  • testul a functionat corect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment