Um bei einem Login via SSH auf die Fritz!Box automatisch eine Benachrichtigung zu erhalten bedienen wir uns eines kleinen Tricks. Dies könnte einen Hinweis geben auf einen unberechtigten Zugriff auf die Shell der Fritz!Box.
Folgend einige Modifikationen wie sie an einer Fritz!Box 7390 OS 6.03 vorgenommen wurden, auf anderen Boxen sollte das gleich, oder ähnlich möglich sein!
Bei einem Login wird die Datei /etc/profile ausgeführt, an dieser Stelle erweitern wir das Skript.
1. /etc/profile nicht ohne weiteres beschreibbar
daher legen wir uns in dem Verzeichnis wo die Modifikationen liegen eine Kopie der /etc/profile an: im Terminal geht das über
1 |
cp /etc/profile /var/media/ftp/IRGENDWO-mods-verzeichnis/ |
diese Datei werden wir im folgenden Editieren. also
vi /var/media/ftp/IRGENDWO-mods-verzeichnis/profile wir haben unsere Anpassungen nach der Ermittlung der Shell eingefügt.
2. Modifikation
Für eine E-Mail-Benachrichtigung benutzen wir den fritzboxeigenen Mailer. dazu fügen wir folgende angepasste Zeile hinzu:
1 |
/sbin/mailer send -f FROM -m SMTP -a ACCOUNT -w PASSWORD -i "/var/tmp/DATEI" -s "SSL Login auf $CONFIG_PRODUKT als $USER von $SSH_CONNECTION" -t "ZIEL" -l |
und ersetzen:
- FROM mit einer Emailadresse
- SMTP zb. smtp.gmail.com
- ACCOUNT mit Login-User
- PASSWORD mit dem Password
- ZIEL ist eine Emailadresse an die gesendet werden soll
- DATEI Der Teil -i „/var/tmp/DATEI“ kann weggelassen werden, oder eben darüber eine beliebige Datei inline eingefügt werden. (z.B. LogDateien) , ein DateiAnhang wäre über -d möglich
- -s gibt den Subject/Betreff der Email an, wir haben dort $USER und $SSH_CONNECTION reingeschrieben,
wer wissen will was darin steht kann mit echo $USER oder einer anderen beliebigen Variable deren Inhalt erfahren. Alle Variablen werden mit dem Terminalbefehl set ausgegeben (Die könnten alle verwendet werden) Wobei beachtet das die nur die Betreffzeile an dieser Stelle ist.)
Ihr solltet unbedingt ausprobieren ob der Mailer unter dem Pfad vorhanden ist, also in einem Terminal einmal den folgendern Befehl ausführen …
/sbin/mailer --help
(sollte der Befehl nicht gehen ist diese Beschreibung hier nicht für eure Fritzbox geeignet, bzw. muss angepasst werden)
Der Mailer an der 7390 – OS 6.03 gibt folgendes bei einem
/sbin/mailer --help aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
usage: mailer mailer [-s subject] -f from -t to -m mailserver [-a authname [-w passwd]] -i file(s) [-r] [-d attachfile(s)] [-l] [-c charset] options: -? - print this help -p STRING - pidfile. ("/var/run/mmailer.pid") -s STRING - subject. ("FRITZ!Box") -f STRING - from. (NULL) -t STRING - to. (NULL) -m STRING - mailserver. (NULL) -a STRING - authname. (NULL) -w STRING - passwd. (NULL) -n - no SMTP-Auth. (NOTSET) -d STRING - attachment(s). (NULL) -i STRING - inline part(s) - add text file(s) here. (NULL) -r - use "multipart/related" if possible. (NOTSET) -l - SMTP with SSL or TLS. (NOTSET) -c STRING - charset (default: iso-8859-1, no charset conversion!). (NULL) -D STRING - switch debug logs on. (NULL) note: please use filename extensions if possible |
3. Testen
Wir machen ein 2. Terminal mit Zugang zur Box auf, dort testen wir jede einzelne Zeile die wir in die /var/media/ftp/IRGENDWO-mods-verzeichnis/profile (unsere Kopie der proile Datei) schreiben wollen. Insbesondere die Mailer Zeile sollte euch eine Email schreiben.
Wenn alles soweit klappt wie ihr das möchtet, könnt ihr eure etc/profile über die jetzige drüber mounten, das geht über
1 |
mount -o bind /var/media/ftp/IRGENDWO-mods-verzeichnis/profile /etc/profile |
wobei das erste Verzeichnis/profile angibt wo eure Kopie liegt.
Jetzt solltet ihr euch mit dem 2. Terminal ausloggen (im Terminal exit eingeben) und wieder einloggen. Dann sollte das Skript so ausgeführt werden.
Das 1. Terminal sollte erstmal offen bleiben, denn falls was schiefgeht kann man hier dann wieder korrigieren.
Wenn alles klappt, könnt ihr diese mount Zeile eurer debug.cfg hinzufügen, damit ist sie auch nach einem Neustart wieder verfügbar.
4. Zusatz
wenn wir schon die /etc/profile überschreiben dann können wir dort auch noch ein paar andere Dinge vornehmen, ich hab dort u.a. stehen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
alias ls='ls --color=auto' alias mods ="cd $HDD_ABSOLUT" # nice coloring for shell # try to set PS1 value, with some roundup up hack - so that with every # cd the PS1 would be updatet # Update der PS1-Umgebungsvariable bezgl. aktuellem Verzeichnis # dank an moebi vom synology forum # http://www.synology-forum.de/showthread.html?1215-Config-ASH-Prompt-(user-host-path)&s=fa8b732eea53cb69cea05d50319e3c75&p=100812&viewfull=1#post100812 update_ps1() { cur_user=$USER cur_pwd=$PWD ech="\$" if [ $cur_user = "root" ]; then ech="#" fi if [ $cur_pwd = $HOME ]; then cur_pwd="~" fi PS1="$cur_user@`hostname`:$cur_pwd$ech " } # Initialisierung PS1 update_ps1 # Autom. PS1 updaten bei Verzeichnis-Wechsel mit cd alias cd=my_cd my_cd() { chdir $@ update_ps1 } |
wobei mods mein Verzeichnis mein Modverzichnis ist, um dort immer schnell hinzuwechseln, ein Alias definiert eben genau das , ein Alias was man statt eines komplizierten/langen Befehls setzen kann.
Code für Fritz!Box ohne USB-Speicher
Unter der Voraussetzung, dass ihr eine Kopie der profile Datei auf Ihrem Rechner gespeichert habt würde folgendes dafür sorgen das die Anpassung auch nach einem Neustart der Fritz!Box gilt. Natürlich sind auch andere Verzeichnisse denkbar wo ihr die angepasste profile Kopie liegen habt. Wenn ihr schon Anpassungen in der debug.cfg habt, ist lediglich die letzte Zeile neu/hinzuzufügen.
1 2 3 4 5 6 7 8 9 10 11 12 |
TEMP=/var/tmp while !(ping -c 1 www.google.de); do sleep 5; done cd $TEMP echo '[1. Zeile aus profile]' >> $TEMP/profile echo '[2. Zeile aus profile]' >> $TEMP/profile echo '[3. Zeile aus profile]' >> $TEMP/profile [...] mount -o bind $TEMP/profile /etc/profile |
Hierbei ist [X. Zeile aus profile] mit der jeweiligen Zeile aus profile zu ersetzen!
Code für Fritz!Box mit USB-Speicher
Unter der Voraussetzung, das ihr eine Kopie der profile in das Stammverzeichnis eures USB Speichers/Festplatte gelegt habt würde folgendes dafür sorgen das die Anpassung auch nach einem Neustart der Fritz!Box gilt. Natürlich sind auch andere Verzeichnisse denkbar wo ihr die angepasste profile Kopie liegen habt. Wenn ihr schon Anpassungen in der debug.cfg habt, ist lediglich die letzte Zeile neu/hinzuzufügen.
1 2 3 4 5 6 7 8 |
HDD='Hitachi-HTS543216L9A300-01' # ACHTUNG: unbedingt anpassen! HDD_ABSOLUT='/var/media/ftp/'$HDD TEMP=/var/tmp while ! [ -d $HDD_ABSOLUT ] ; do sleep 5; done cd $TEMP mount -o bind $HDD_ABSOLUT/profile /etc/profile |