Anleitung: SSH (Dropbear) und Etherwake auf der FRITZ!Box

Hi,

ich würde gerne ssh auf meiner Fritz Box nutzen. Habe einen Speedport w920v den ich mit der originalen 7570 Firmware zur Nutzung aller seiner Funktionen verholfen habe :)

Nutze im Moment folgendes Skript:

Code:
sleep 20
cd /var
#
# download der Software
#
# für neuere Firmware diese Zeile einkommentieren, obige wget - Zeile auskommentieren
/usr/bin/wget http://www.spblinux.de/fbox.new/cfg_dropbear

sleep 5
chmod 755 /var/cfg_dropbear
#
# config und Start (modus: onlykey -> kein password authentication, nur public key)
#
/var/cfg_dropbear install
/var/cfg_dropbear start onlykey

/var/dropbear/bin/dropbearkey -t rsa -f /var/tmp/dropbear_rsa_hostkey -s 768
#
# diese Zeilen sind als Alternative zu public key  authentication zu sehen
# Falls gewünscht muß oben auch "onlykey" entfernt werden!
#

#cp -p /var/tmp/shadow /var/tmp/tmp_shadow
#sed -e "/root:/s#^root:[^:]*:#xxxxxxxxx:#" /var/tmp/tmp_shadow > /var/tmp/shadow


cd /var/tmp
# # # # # # # # # Installation Etherwake
#
# Etherwake ist bereits auf der Box installiert!
# Damit kann man andere Maschinen per Netzwerk booten 
# (nur MAC Adresse nötig; password als Parameter möglich)
#
# Hier das Interface der Fritzbox und die MAC-Adresse des PCs eintragen
#echo "/usr/bin/ether-wake -i eth0 00:XX:XX:XX:XX:XX" > /var/tmp/start_script_host1
#chmod  x /var/tmp/start_script_host1


# add fritz box itself in resolv.conf to resolv dhcp attached machines in your network
echo "nameserver 192.168.177.1" >> /var/tmp/resolv.conf

# create valid authorized_keys file
# hier muß der public key (openssh-keygen generiert) eingetragen werden,
# der ohne auf die Fritz Box per ssh zugreifen können soll:
#  ssh [email protected]
#
#
cat > /var/tmp/dropbear/authorized_keys <<END_OF_FILE
ssh-rsa *wüsstetihrgerne* [email protected]
END_OF_FILE

# Damit dropbear mit dem public key funktioniert muss die authorized_keys Datei
# per symbolischem Link noch bekannt gegeben werden:
rm /etc/dropbear/authorized_keys
ln -s /var/tmp/authorized_keys /etc/dropbear/authorized_keys

Das Problem ist allerdings, nach reboot läuft ssh Server zwar aber ich kann mich nicht einloggen. Meiner Meinung nach stimmt was im Skript nicht bezüglich Speicherort der authorized_keys Datei.
Vielleicht war das Skript auch nur für die alte Version gedacht, auf jeden Fall gibt es ja auch gar kein /var/tmp/dropbear sondern nur ein /var/dropbear.

Wie müsste ich das Skript anpassen damit der dropbear server auch meine authorized_keys findet?
Bzw. wie könnte ich parallel password login aktivieren?

****
P.S.: Habs selber noch hinbekommen, hab folgende Zeilen geändert, nun läuft es:

cat > /var/tmp/dropbear/authorized_keys <<END_OF_FILE
zu
cat > /var/tmp/authorized_keys <<END_OF_FILE

Aber klappt sftp nicht mit dropbear?
 
Zuletzt bearbeitet:
Für sftp muss die Unterstützung im dropbear eincompiliert sein. K.A. ob das bei dem Programm so ist ??
Zusätzlich brauchst du das sftp Binary (und das noch am passenden Ort)...

Jörg
 
Hmm, hab ja nun login nur per authorized_key aktiviert, fühle mich also eigentlich recht sicher, als ich jedoch heute auf die Box per Telnet connecte hab ich dies hier aufgefangen:

[4691] Jun 24 04:08:57 exit before auth: Disconnect received
[4692] Jun 24 04:08:57 Child connection from 61.145.118.190:49842
[4692] Jun 24 04:08:59 login attempt for nonexistent user from 61.145.118.190:49842
[4692] Jun 24 04:08:59 exit before auth: Disconnect received
[4693] Jun 24 04:08:59 Child connection from 61.145.118.190:50014
[4693] Jun 24 04:09:00 login attempt for nonexistent user from 61.145.118.190:50014

Ip kommt anscheinen irgendwo aus China.
Für wie sicher haltet ihr dropbear? Gibt es vielleicht eine Möglichkeit eine IP für 24h zu blocken nach zb. 5 fehlgeschlagenen logins?
 
Das sind Versuche, für eine Liste von Benutzern einfache Passwörter zu raten. Bei vernünftigen Passwörtern oder Anmeldung mit Key kommt so niemand hinein.

Die Meldungen sind zum einen lästig, zum anderen kann es passieren, dass die Box aufgrund zu hoher CPU-Auslastung neu startet.

Das einfachste ist, einen anderen Port für SSH zu verwenden.
 
Gibt es vielleicht eine Möglichkeit eine IP für 24h zu blocken nach zb. 5 fehlgeschlagenen logins?
Evtl. geht das Blocken auch mit Freetz und sshguard (im trac), wenn dropbear in die Liste der von sshguard unterstützen Dienste, aufgenommen wird. Die Entwickler von sshguard warten auf Vorschläge für weitere aufzunehmende Dienste.;)
Code:
You are welcome to [COLOR="red"]propose support[/COLOR] for new logging systems and [COLOR="red"]new services[/COLOR].
 
Ich habe mir mit dem aktuellen freetz-trunk eigenständige dropbear-binary für 7240er FBF erstellt.
Code:
[ ] dns2tcp 0.5.2
[ ] Dnsmasq 2.63

[*] Dropbear 2012.55

[*]   Add SFTP support
[ ]   Without scp & ssh client

[*]   With zlib Compression

[*]   Disable DNS reverse-lookup of the client

[*]   Build static binary

[*]     Standalone binary (for use w/o freetz; paths set to /var/tmp/)
[ ] eSpeak 1.40.02 (binary only)
[ ] fortune 1.2

Es gibt also eine Datei namens 'dropbearmulti', dich ich vom eigenen Webserver nachlade. Man muss da symbolische Links erstellen - das ist klar.
Code:
# ./dropbearmulti --help
Dropbear multi-purpose version 2012.55
Make a symlink pointing at this binary with one of the following names:
'dropbear' - the Dropbear server
'dbclient' or 'ssh' - the Dropbear client
'dropbearkey' - the key generator
'scp' - secure copy
#

Ich habe mit dropbearkey die entsprechenden rsa und dss Dateien erstellt und sie da abgelegt, wo dropbear sie erwartet (also in /var/tmp/). Dropbear lässt sich starten. Es kommt auch eine SSH-Verbindung zustande. Aber egal welches Passwort ich eingebe, es klappt nicht. Zwei mal versuche ich es, dann wird die Verbindung geschlossen.

Die Frage ist nun: Wie kann ich da ein Passwort für dropbear vergeben (mit dem ich mich dann später per SSH einloggen will)? Muss ich dazu auch für die WebIf der FBF ein Passwort erstellen?
 
Aber egal welches Passwort ich eingebe, es klappt nicht. Zwei mal versuche ich es, dann wird die Verbindung geschlossen.
Die Frage ist nun: Wie kann ich da ein Passwort für dropbear vergeben (mit dem ich mich dann später per SSH einloggen will)? Muss ich dazu auch für die WebIf der FBF ein Passwort erstellen?
Welches "Standard root Passwort" hast Du eingegeben?
 
Ich habe dies und jenes versucht, und nach anschließendem Setzen von neuem Passwort mittels "passwd" in der shell geht das nun.
Aber nun gibt es ein anderes Problem: Ich kann mich per WinSCP nun verbinden, aber keine Dateien editieren. WinSCP sagt, dass das Kopieren von Daten vom entfernten Rechner fehlschlug.
Code:
SCP konnte für den Start der Übertragung nicht ausgeführt werden. Bitte stellen Sie sicher, dass SCP auf dem Server installiert ist und die $PFAD- Variable den Pfad zu SCP enthält. Anstatt SCP können Sie auch SFTP probieren.
Befehl gescheitert mit Beendigungscode 127.
Funktionierende Datei "scp" liegt unter /tmp/test/ und dieser Pfad ist auch in "PATH" eingetragen.

Nachtrag: Habe noch die binary sftp-server erstellt und in die FBF kopiert. Nun funzt alles wie ich es will.
 
Zuletzt bearbeitet:
Hi, Ich bin 'neu' hier. Ich möchte wake on lan mit der 7050 nutzen. Ich bin gerade per telnet eingeloggt und würde gerne dropbear für ssh installieren um später etherwake zu nutzen. Ist die Anleitung auf Seite 1 aktuell? Der Link zur neueren Version führt ins Leere.

wget --spider http://www.spblinux.de/fbox.new/cfg_dropbear

Sagt, dass die Datei existiert.

Was sagt mir das hier?
Code:
# nvi /var/flash/debug.cfg
cat: /var/flash/debug.cfg: No such file or directory

ls behauptet das Gegenteil. cat ist unter /bin/cat
Code:
# ls -l /var/flash/debug.cfg
crw-r--r--    1 0        0        240,  98 Jan  1  2000 /var/flash/debug.cfg
who am i oder whoami bzw. id gibt es nicht, aber der Prompt ist ein Doppelkreuz (hash) #

Ok, laut http://www.ip-phone-forum.de/showthread.php?t=167560 konnte ich wenigstens cat dazu überreden de Inhalt der debug.cfg anzuzeigen, allerdings geht nvi immer noch nicht:
Code:
#  nvi /var/flash/debug.cfg
vi: applet not found

Ich könnte die Datei aber per echo und Umleitung editieren. Mit sed könnte man dann weiter kommen...

Die Frage wäre also: Ist die Seite 1. Dieses gigantischen threads dazu geeignet meinem Bedürfnis nach WOL znachzukommen, oder gibt es da etwas 'aktuelles' für die angestaubte Fritz!Box FON 7050?

Man möchte es mir nachsehen, dass ich nicht die Muße habe alle 59 Seiten dieses threads zu lesen...

Übrigens ist es nicht so, dass vi nicht installiert wäre(?)
Code:
# ls -l /bin/vi
lrwxrwxrwx    1 0        0              12 May 10  2007 /bin/vi -> /bin/busybox
# vi 
vi: applet not found
Nur geht's nicht...

Ok, nvi ist nun 'wiped out'
Code:
# vi 
vi: applet not found
# sed 's:vi :/var/tmp/busybox &:g' /usr/bin/nvi >/var/tmp/nvi
chmod +x /var/tmp/nvi
mount -o bind /var/tmp/nvi /usr/bin/nvi# # 
# mount
/dev/root on / type squashfs (ro)
proc on /proc type proc (rw,nodiratime)
ramfs on /var type ramfs (rw)
ramfs on /usr/bin/nvi type ramfs (rw)
# /usr/bin/nvi
use: : not foundi <config-filename>
# /usr/bin/nvi /var/flash/debug.cfg
/usr/bin/nvi: /usr/bin/nvi: 6: /var/tmp/busybox: not found
# ls -l /var/tmp/busybox
ls: /var/tmp/busybox: No such file or directory
# sed 's:vi :/var/tmp/busybox &:g' /usr/bin/nvi >/var/tmp/nvi^[[B
# sed: not foundp/busybox:/bin/busybox:g' /usr/bin/nvi >/var/tmp/nvi
# sed 's:/var/tmp/busybox:/bin/busybox:g' /usr/bin/nvi >/var/tmp/nvi
# cat /usr/bin/nvi
#
 
Zuletzt bearbeitet:
für vi ist in der busybox der 7050 kein Platz mehr gewesen, der symlink passte aber noch
 
für vi ist in der busybox der 7050 kein Platz mehr gewesen, der symlink passte aber noch

ok, aber ich bekomme irgendwie kein Bild, was passieren soll. Ich musste noch busybox und dropbearmulti besorgen und habe ./install.sh deshalb mehrmals aufgerufen. Nur erhalte ich immer noch Fehler:
Code:
# pwd
/var/tmp
# ls
group               csem                to_wpa_hidden_sock  uudecode
hosts               me_usermand.ctl     wpa_debug_sock      uuencode
passwd              me_dsld.ctl         me_multid.ctl       dropbearkey
resolv.conf         me_voipd.ctl        install.sh          output.cfg
shadow              me_igdd.ctl         busybox             dropbearmulti
me_logic.ctl        fboxdesc.xml        dropbear            nvi
me_ctlmgr.ctl       igddesc.xml         input.cfg
# ./nvi /var/flash/debug.cfg
busybox: applet not found

Ich nutze die ssh_etherwake_v03.zip aus diesem Post:
http://www.ip-phone-forum.de/showthread.php?t=79500&p=405834&viewfull=1#post405834

Habe dan dropbearmulti und busybox hier heruntergeladen:
http://www.ip-phone-forum.de/showthread.php?t=125126&p=1209511&viewfull=1#post1209511
also => http://www.ip-phone-forum.de/attachment.php?attachmentid=30136&d=1226340586
http://www.ip-phone-forum.de/showthread.php?t=79500&p=1460782&viewfull=1#post1460782
also => http://www.fallen-angels-gotcha.de/data/fritzbox/busybox-1.2.1

Und jeweils ./install.sh wiederholt.

Danach waren die folgenden Fehler weg:
Code:
/var/tmp/dropbearkey: can't resolve symbol '__uClibc_start_main'
/var/tmp/busybox: can't resolve symbol '__uClibc_start_main'

EDIT: Ok, Ich hab's irgendwie geschafft mit den oben genannten Dateien.
Das Problem war noch dass bestehende symlinks durch vorherige fehlgeschlagene ./install.sh Aufrufe die darauffolgenden abbrachen. Ich habe sie dann mit rm uuencode uudecode drobboxkey gelöscht und ./install.sh lief danach durch. input.cfg und install.cfg habe ich bezüglich des Downloadlinks von meinem vserver angepasst. Die Anpassungen sind ebenfalls auf den Dateien des vservers vorgenommen.

Nun habe ich wenigstens ssh per LAN. Mal weiter sehen...
 
Zuletzt bearbeitet:
du hast binaries die dynamisch gelinkt sind gegen die ulibc library die auf der fritzbox nicht drauf ist. da helfen statisch gelinkte binaries, die leider etwas größer sind...
ich hab hier länger nicht mehr mitgelesen und auch an meiner box nix mehr geändert, die alten binaries die auf meiner box laufen sind hier: http://h3po.de/public/fritz.box/

edit:
wenn du dann ssh hast, leg eine neue datei unter /var/tmp an mit dem inhalt für die debug.cfg und kopier die dann mit cp nach /var/flash. direkt überschreiben geht nicht.
wake on lan müsste bei der busybox dabei sein, bei meiner alten version ists jdf drin.
 
Hi, danke, aber ich habe es ja mit den binaries in meinem Post dann auch hinbekommen, allerdings gibt es ein Problem mit etherwake
Code:
# $PWD/etherwake
etherwake: applet not found

Und dann sind noch einige Fragen offen. Z.B. wie ich das passwort abschalte und den Zugang per key einrichte und verwende. Ich denke das muss ich hier nachlesen http://freetz.org/wiki/packages/dropbear . Oder wie ich das Passwort ändere (PASSWD='36d6NYYMch85U' ist das das normale shadow hash? Wie kann ich ein passwort selbst verschlüsseln und statt des fritzbox hash in das script einsetzen?).
Ok, hab's hier gefunden, das geht ganz normal mit busybox passwd und es aus der /etc/shadow ins Skript einsetzen.

Ist das ganze nun persistent, solange die files von meinem vserver nachgeladen werden können? Oder muss ich da noch etwas per nvi editieren?

EDIT: Mir ist aufgefallen, das wegen der gescheiterten Versuche das /var/flash/debug.cfg das install.sh dreimal nacheinander enthält (append).

Danach wäre interessant ssh von außen zugänglich zu machen über die /var/flash/ar7.cfg und dann WOL zu verwenden.
 
Zuletzt bearbeitet:
bei meiner busybox schreibt sich das ether-wake.
die einfachste möglichkeit den dropbear von außen zugänglich zu machen ist meiner meinung nach das anlegen eines pseudo-interface mit 192.168.0.2, auf das man dann über das webinterface einen port weiterleiten kann.
ich benutze allerdings keyfiles, dann sieht das so aus:
/var/tmp/bin/ifconfig eth1:0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
/var/tmp/bin/dropbear -r /var/tmp/dropbear_rsa_host_key -s -p 192.168.0.2:22
 
hallo

heißt meistens, dass irgendwas mit dem binary-file nicht stimmt. probiere doch mal version von meiner homepage (siehe signatur). damit hast du gleich die neuere version 0.52 anstatt 0.48 und ich habe sie außerdem bei meiner 7170 im einsatz gehabt:)

wenn es immer noch nicht funktioniert, poste genau die schritte, die du in der console ausführst

gruß

Ich weiß, schon sehr alt der Thread... Sorry, dass ich das wieder ausgrabe ...
Aber Deine HP verlangt (mittlerweile?) Zugangsdaten, die ich wohl dann überlesen habe,
sollten diese dastehen ^^ ... (verzeiht mir dann bitte, ich bräuchte eine Brille und kann mir keine leisten)

Aber nun zu meinem eigentlichen Problem, warum ich überhaupt hier reinstolpere
(zu dem eigentlichen Problem gibt es übrigens auch einen ungelösten Thread hier im Forum):

Ich habe auf meiner...

FritzBox 7270 V3
Firmware: FRITZ!OS 05.22
Firmware-Version: 74.05.22

ein standalone static Binary des Dropbears über die debug.cfg auf meinem Stick eingebunden (Dropbear multi-purpose version 0.53.1 ... BusyBox v1.18.5 (2012-03-27 14:03:03 CEST) built-in shell (ash))
und bekomme partout das SCP nicht zum laufen. Ich habe die Einträge für Dropbear angelegt ... die PATH angepasst und versucht über
einen Hex-Editor an der Binary selbst Hand-anzulegen ... leider alles ohne Erfolg. SSH geht, SCP nicht...
Also es ist zwar wenn man eingelogt ist aufzurufen durch eingabe von scp -> es erscheint die Hilfe ... aber übertragen kann man nix ... bei Aufruf von außen kommt:
Code:
sh: scp: not found
lost connection
-> Das ist mein "eigentliches Problem"!

In der Binary (der Datei dropbearmulti) scheinen (falsche) Pfade (wie z.B. /usr/bin/ssh eincompiliert zu sein, welche sich ohne Modifikation der FritzBox ja auch nicht einfach einbinden lassen? = ein Mount/Drübermounten geht nur wenn ich die datei vorher erzeugen könnte oder? Und /usr/bin ist ja schreibgeschützt/readonly) ... wie gesagt durch einen Hex-Eingriff habe ich aber scheinbar eine ungültige Binary: Segmentation fault

meine debug.cfg:

Code:
mount -o bind /var/media/ftp/LG-USBDrive-01/profile /etc/profile
## Pfad des Temporaeren Verzeichnisses
ptmp="/var/tmp"
## Pfad der Dropbear Dateien
psource="/var/media/ftp/LG-USBDrive-01/7270"

## Port auf dem Dropbear laufen soll
dropbearport="22"

## Erstellen eines Ordners in tmp
mkdir $ptmp/mods/

## $PATH ergaenzen..
#PATH="/sbin:$ptmp/mods:$PATH"
#geht leider so einfach nicht. S.O.

## shadow-Datei mit root-pw kopieren
cp -p $psource/shadow $ptmp/shadow

## Eintraege fuer dropbear anlegen
ln -s $psource/dropbearmulti $ptmp/mods/dropbear
ln -s $psource/dropbearmulti $ptmp/mods/dropbearmulti
ln -s $psource/dropbearmulti $ptmp/mods/dbclient
ln -s $psource/dropbearmulti $ptmp/mods/dropbearkey
ln -s $psource/dropbearmulti $ptmp/mods/ssh
ln -s $psource/dropbearmulti $ptmp/mods/scp

## Eintraegen die benoetigten Rechte geben
chmod +x $ptmp/mods/dropbear
chmod +x $ptmp/mods/dropbearmulti
chmod +x $ptmp/mods/dbclient
chmod +x $ptmp/mods/dropbearkey
chmod +x $ptmp/mods/ssh
chmod +x $ptmp/mods/scp

## Starten des SSH Servers DROPBEAR
$ptmp/mods/dropbear -p $dropbearport -R -b $psource/bannerfile -r $psource/dropbear_rsa_host_key -d $psource/dropbear_dss_host_key

## Starten des HTS Tunnels
/var/media/ftp/LG-USBDrive-01/7270/hts -F 0.0.0.0:22 0.0.0.0:443

Ich weiß einfach nicht mehr weiter ... denke, dass es an der Binary liegt (wurde übrigens von mir über Freetz als Standalone MIT SCP-Unterstützung compiliert)

Eine Lösung (Workaround/neues oder funktionierendes Dropbear(multi)-binary-file) wäre super ... Aber würde auch gerne, falls das auch geht (also stattdessen) sogar mittlerweile lieber OpenSSH mit voller unterstützung (um mehr Tunnelmöglichkeiten etc. zu bekommen) auf die Box bringen. Gibt es denn dafür vll. eine Möglichkeit ... Standalone Static ohne Freetz?
 
Zuletzt bearbeitet:
Wenn Du's selber gebaut hast, kannst Du auch selber an den einkompilierten Pfaden spielen (und neu kompilieren).
 
Wenn Du's selber gebaut hast, kannst Du auch selber an den einkompilierten Pfaden spielen (und neu kompilieren).

:D ... Danke, die Idee hatte ich auch schon... aber bisher nicht herausgefunden, wo ich die Pfade im Source finde ... werde dann später halt mal versuchen mich durchzu'cat'grep'en xD ... Und bleibt zu hoffen, dass es das danach dann auch war und alles funktioniert wie es soll ... habe halt den Source in Freetz ausgewählt, es auf standalone und static gestellt, alles was rein sollte ausgewählt und ihn machen lassen ... aber ok ... man wird sehen. THX aber trotzdem für den Hinweis.
 
habe das auch mal gemacht, ist allerdings zu lange her, als das ich mich an Details erinnern könnte.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.