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.
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
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
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
pwdRezultat:
- utilizator:
root - hostname:
bariasi - director curent:
/root
S-a verificat daca exista configuratie locala pentru un server ntfy self-hosted:
sudo cat /etc/ntfy/server.ymlRezultat:
- fisierul nu exista
Concluzie:
- pe acest server nu exista configuratie locala standard pentru
ntfy
S-a verificat scriptul de sumar backup:
sudo cat /usr/local/bin/backup_summary_ntfy.shContinut 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" | $NTFYConcluzie:
- scriptul real care trimite notificarea este
/usr/local/bin/ntfy_notify.sh
S-a citit fisierul:
cat /usr/local/bin/ntfy_notify.shContinut relevant gasit:
#!/bin/bash
TOPIC="bariasi-5f07b8571f7c"
URL="http://ntfy.sh/${TOPIC}"Concluzie:
- serverul nu trimite catre un
ntfylocal - serverul trimite direct catre
http://ntfy.sh/... - topicul vechi era
bariasi-5f07b8571f7c
S-au rulat comenzile:
which ntfy
ps aux | grep ntfy
ls /etc/ntfy /var/lib/ntfy 2>/dev/nullRezultat:
which ntfynu a gasit binarulps aux | grep ntfynu a aratat un procesntfylocal- directoarele standard nu au confirmat o instalare locala utila
Concluzie:
- se foloseste serviciul public
ntfy.sh
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.
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 folosit a fost:
1b748ceafced4ffaa049da2b23a8f310
Dupa schimbarea topicului, s-a trimis un mesaj de test:
echo "test nou topic" | /usr/local/bin/ntfy_notify.shRezultat:
- 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
In aplicatia de telefon s-au urmat exact acesti pasi:
- S-a deschis ecranul
Subscribe to topic - In campul topic s-a introdus exact:
1b748ceafced4ffaa049da2b23a8f310
- Optiunea
Use another servera ramas oprita - Optiunea
Reserve topic and configure accessa ramas oprita - S-a apasat
SUBSCRIBE - S-a verificat aparitia mesajului
test nou topic - S-a confirmat functionarea corecta
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.
Trebuie sters din aplicatie topicul vechi:
bariasi-5f07b8571f7c
Acest pas este important ca sa nu mai apara mesaje spam de pe topicul vechi public.
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.shDaca vrei sa schimbi din nou topicul in viitor, urmeaza exact acesti pasi:
Conectare prin PuTTY sau SSH.
Ruleaza:
NEWTOPIC=$(cat /proc/sys/kernel/random/uuid | tr -d '-') && sed -i "s/^TOPIC=.*/TOPIC=\"$NEWTOPIC\"/" /usr/local/bin/ntfy_notify.sh && echo "$NEWTOPIC"Copiaza topicul afisat de comanda.
Ruleaza:
echo "test nou topic" | /usr/local/bin/ntfy_notify.shIn aplicatia ntfy:
- stergi topicul vechi
- adaugi topicul nou exact cum a fost afisat
Verifici ca mesajul de test apare in aplicatie.
grep '^TOPIC=' /usr/local/bin/ntfy_notify.shgrep '^URL=' /usr/local/bin/ntfy_notify.shecho "test manual ntfy" | /usr/local/bin/ntfy_notify.shSolutia 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
Pentru securitate reala, pe viitor se recomanda una din variante:
- instalare
ntfype serverul propriu - configurare user/parola si ACL
- folosirea unui server
ntfyprivat, nu a topicului public de pentfy.sh
- 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