- Mitglied seit
- 04. Apr 2013
- Beiträge
- 107
- Punkte für Reaktionen
- 9
- Punkte
- 24
Habe mir ein Script geschrieben, welches beim Boot des Synology NASes (bei mir DSM 7.1) ausgeführt wird und bestimmte Verzeichnisse/Dateien löscht, wenn das NAS nicht im Heimnetzwerk "erwacht".
Die Idee kam mir, als einem Bekannten die Bude von der Polizei gestürmt wurde. Die nehmen einfach alles mit, was iwie wie ein Computer aussieht (inkl Handy).
Man erstelle das Script startup.sh im Verzeichnis /usr/local/etc/rc.d . Es muss die Endung .sh und Rechte 755 haben!
Um da zu hantieren, melde Dich per SSH als Admin-User an (den, den Du halt als Admin auf der Diskstation konfiguriert hast).
In der Konsole dann ganz normal mit sudo nano ... arbeiten.
Das Script sieht wie folgt aus. Es prüft auf die IP des Gateways (von Vorteil, wenn diese nicht Standard 192.168.1.1 bzw 192.168.178.1 ist) und einem weiteren Gerät (zBsp Server). Geräte, welche eigentlich immer laufen.
Wenn beide nicht erreichbar sind, wartet das Script die in wartezeit definierten Sekunden ab und prüft nochmal. Wenn die immer noch nicht erreichbar sind, werden die gewählten Daten gelöscht.
Probiere vorher in der SSH Konsole aus, was
für einen Wert zurück gibt. Dieser Return-Wert variiert immer und ist nicht immer 1!
Diesen musst du dann ggf im Script anpassen.
admin-name, log_pfad, ip_gateway und ip_port_server sind natürlich Deinen Gegebenheiten im Script-Kopf anzupassen. Auch die Liste der zu löschenden Verzeichnisse bzw Dateien anzupassen nimmt etwas Zeit in Anspruch, welche Du Dir auch nehmen solltest.
Falls Leerschläge im Filenamen bzw Verzeichnisnamen vorkommen, dann ein \ vor dem Leerschlag einfügen! zBsp: syno user liste >> syno\ user\ liste
DEBUG=0 macht das Script scharf! Lass das Ganze erst ein paar Wochen mit DEBUG=1 laufen und beobachte, wie es sich bei Stromunterbrüchen verhält.
Ob es löschen würde, siehst in der Datei, welche Du in log_pfad definiert hast.
Teste/Reboote ein paar mal mit DEBUG=1. So siehst Du, ob alles wie gewünscht läuft. Nimm Dir Zeit zum testen! Immerhin kommt der Dampfhammer zum Zug!
Wenn Du an den 2 Stellen OR ( || ) anstatt AND ( && ) einsetzt, wird das Script viel restriktiver!
Wenn nun zBsp das dokumente Verzeichnis noch verschlüsselt ist, kann man davon ausgehn, dass die Daten nicht ohne Weiteres ausgelesen werden können (zusammen mit RAID und Verschlüsselung ist es nahezu unmöglich, die HDDs in einer anderen Hardware auszulesen... das schafft vielleicht die NSA. Aber dafür sind wir zu kleine Fische >> Aufwand rechnet sich nicht).
https://kb.synology.com/de-de/DSM/t...and_decrypt_shared_folders_on_my_Synology_NAS
Trotz der doppelten Abfrage, empfehle ich dringend, dass die Daten extern (zBsp Cloud) backuped sind. Die Zugangsdaten zu dieser Cloud solltest Du auf einem Papier-Notizzettel notiert haben!
So kannst das Passwort im Notfall dort sofort ändern (und hast Deine Daten immer noch) ....Dein Handy usw ist ja da weg!!!
Vergiss das Firefox Konto, welches den Browser syncht, nicht!!!
Auf älteren DSMs (zBsp 5.2) ist das Script unter /volume1/NetBackup/startup.sh zu speichern und der Eintrag: /volume1/NetBackup/startup.sh in /etc/rc.local zumachen.
Die Zeile
ist dann auch wie hier angegeben anzupassen.
Die Idee kam mir, als einem Bekannten die Bude von der Polizei gestürmt wurde. Die nehmen einfach alles mit, was iwie wie ein Computer aussieht (inkl Handy).
Man erstelle das Script startup.sh im Verzeichnis /usr/local/etc/rc.d . Es muss die Endung .sh und Rechte 755 haben!
Um da zu hantieren, melde Dich per SSH als Admin-User an (den, den Du halt als Admin auf der Diskstation konfiguriert hast).
In der Konsole dann ganz normal mit sudo nano ... arbeiten.
Das Script sieht wie folgt aus. Es prüft auf die IP des Gateways (von Vorteil, wenn diese nicht Standard 192.168.1.1 bzw 192.168.178.1 ist) und einem weiteren Gerät (zBsp Server). Geräte, welche eigentlich immer laufen.
Wenn beide nicht erreichbar sind, wartet das Script die in wartezeit definierten Sekunden ab und prüft nochmal. Wenn die immer noch nicht erreichbar sind, werden die gewählten Daten gelöscht.
Probiere vorher in der SSH Konsole aus, was
Code:
curl -m 5 IP_Server:Port &>/dev/null; echo $?
Diesen musst du dann ggf im Script anpassen.
Code:
DEBUG=1 # 0 macht das Script scharf!!!
ip_gateway="192.168.1.xxx" # Router IP
ip_port_server="192.168.1.xx:yyyyy" # IP und Port des lokalen Servers
log_pfad="/volume1/homes/admin-name/startup.log" # Pfad und Name der Log-Datei
wartezeit=30 # Wartezeit bis zum 2. Versuch
datum=$(date +"%d.%m.%Y %H:%M:%S")
echo "$datum startup.sh ausgeführt!" > $log_pfad
status_output () {
if [ -z "$var1" ]; then
echo "Gateway nicht erreichbar" >> $log_pfad
else
echo "Gateway erreichbar" >> $log_pfad
fi
if [ $nichterreichbar == true ]; then
echo "Server nicht erreichbar" >> $log_pfad
else
echo "Server erreichbar" >> $log_pfad
fi
echo "Debug: $DEBUG" >> $log_pfad
}
curl -m 5 $ip_port_server &>/dev/null; result=$?
if [ "$result" == "1" ]; then # Hier den ermittelten Return-Wert (wenn erreichbar) eintragen!
nichterreichbar=false
else
nichterreichbar=true
fi
string=$(ip route)
var1=$(echo $string | grep $ip_gateway\ )
if [ -z "$var1" ] && [ $nichterreichbar == true ]; then # Hier ein OR ( || ) macht das Ganze viel bissiger.
datum=$(date +"%d.%m.%Y %H:%M:%S")
echo "$datum Ich warte $wartezeit Sekunden" >> $log_pfad
status_output
sleep $wartezeit
string=$(ip route)
curl -m 5 $ip_port_server &>/dev/null; result=$?
if [ "$result" == "1" ]; then
nichterreichbar=false
else
nichterreichbar=true
fi
var1=$(echo $string | grep $ip_gateway\ )
if [ -z "$var1" ] && [ $nichterreichbar == true ]; then # Hier ein OR ( || ) macht das Ganze viel bissiger.
datum=$(date +"%d.%m.%Y %H:%M:%S")
echo "$datum Löschung ausführen" >> $log_pfad
status_output
if [ $DEBUG == 0 ]; then
# Hier ganze Verzeichnisse
rm -rf /volume1/dokumente/nicht_fuer_behoerden_gedacht
rm -rf /volume1/dokumente/FakeID
rm -rf /volume1/dokumente/warez
# rm -rf /volume1/* # das löscht alles!!
...
rm -rf /volume1/xxx
# Hier einzelne Dateien
rm /volume1/dokumente/email_logins*
...
rm /volume1/dokumente/Serv*
# Nun lösche ich mich selbst
rm -rf /var/log/*
rm /usr/local/etc/rc.d/startup.sh
fi
else
echo "Keine Löschung ausgeführt" >> $log_pfad
fi
else
echo "Keine Löschung ausgeführt" >> $log_pfad
fi
admin-name, log_pfad, ip_gateway und ip_port_server sind natürlich Deinen Gegebenheiten im Script-Kopf anzupassen. Auch die Liste der zu löschenden Verzeichnisse bzw Dateien anzupassen nimmt etwas Zeit in Anspruch, welche Du Dir auch nehmen solltest.
Falls Leerschläge im Filenamen bzw Verzeichnisnamen vorkommen, dann ein \ vor dem Leerschlag einfügen! zBsp: syno user liste >> syno\ user\ liste
DEBUG=0 macht das Script scharf! Lass das Ganze erst ein paar Wochen mit DEBUG=1 laufen und beobachte, wie es sich bei Stromunterbrüchen verhält.
Ob es löschen würde, siehst in der Datei, welche Du in log_pfad definiert hast.
Teste/Reboote ein paar mal mit DEBUG=1. So siehst Du, ob alles wie gewünscht läuft. Nimm Dir Zeit zum testen! Immerhin kommt der Dampfhammer zum Zug!
Wenn Du an den 2 Stellen OR ( || ) anstatt AND ( && ) einsetzt, wird das Script viel restriktiver!
Wenn nun zBsp das dokumente Verzeichnis noch verschlüsselt ist, kann man davon ausgehn, dass die Daten nicht ohne Weiteres ausgelesen werden können (zusammen mit RAID und Verschlüsselung ist es nahezu unmöglich, die HDDs in einer anderen Hardware auszulesen... das schafft vielleicht die NSA. Aber dafür sind wir zu kleine Fische >> Aufwand rechnet sich nicht).
https://kb.synology.com/de-de/DSM/t...and_decrypt_shared_folders_on_my_Synology_NAS
Trotz der doppelten Abfrage, empfehle ich dringend, dass die Daten extern (zBsp Cloud) backuped sind. Die Zugangsdaten zu dieser Cloud solltest Du auf einem Papier-Notizzettel notiert haben!
So kannst das Passwort im Notfall dort sofort ändern (und hast Deine Daten immer noch) ....Dein Handy usw ist ja da weg!!!
Vergiss das Firefox Konto, welches den Browser syncht, nicht!!!
Auf älteren DSMs (zBsp 5.2) ist das Script unter /volume1/NetBackup/startup.sh zu speichern und der Eintrag: /volume1/NetBackup/startup.sh in /etc/rc.local zumachen.
Die Zeile
Code:
# Nun lösche ich mich selbst
rm /volume1/NetBackup/startup.sh
Zuletzt bearbeitet: