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

supafly2k

Neuer User
Mitglied seit
18 Mai 2005
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
Bitte Komplett lesen um Problemen vorzubeugen!

Ich übernehme keinerlei Haftung für irgendwelche Schäden an eurer Hardware

Hier gehts zur Aktuellen Version 0.3

Anleitung zum nachinstallieren von SSH (Dropbear) und Etherwake auf der FRITZ!Box - reloadMOD

Als erstes geht ein Dank für Hilfestellung bei Fragen an olistudent.

Diese Modifikation sollte auf allen Boxen mit allen Firmware Versionen laufen, es wäre nett wenn sich die jenigen, bei denen es funktioniert hat, kurz melden würden dann könnte ich die erfolgsliste ergänzen.

Allgemeine Informationen

Bisher erfolgreich auf:
--> FRITZ!Box Fon WLAN 7050
--> FRITZ!Box Fon 5050
--> FRITZ!Box Fon WLAN
--> FRITZ!Box Fon ata
--> FRITZ!Box Fon
--> FRITZ!Box WLAN 3030
--> FRITZ!Box WLAN 3070
--> FRITZ!Box SL WLAN

Hinweise:
--> Dropbear ist ein verhältnismäßig kleiner SSH Server und Client
--> Etherwake dient zum aufwecken von PC über das Netzwerk

Funktionsweise:
Auf der FRITZ!Box befindet sich eine Datei (/var/flash/debug.cfg) welche auch nach dem Neustart der Box noch vorhanden ist und beim booten ausgeführt wird, genau wie andere Modifikationen setzt auch dieses Verfahren auf diese Datei.
Die Dateien für SSH und Etherwake werden auf einem Server (Intranet oder Internet) abgelegt und von dort nachgeladen.
Die Box prüft nach dem Booten durchgehend (Pausen zwischen den Versuchen kann eingestellt werden) ob eine Verbindung zum Server besteht, sobald das der Fall ist werden die Dateien für Dropbear und Etherwake nachgeladen.

Vorteile:
--> Es muss keine veränderte Firmware geflasht werden.
--> Falls eine neue Firmware von AVM erscheint kann diese aktualisiert werden, SSH (Dropbear) und Etherwake sind davon unabhängig.
--> Erscheinen neue Versionen von Dropbear oder Etherwake so können diese unkompliziert auf den neusten stand gebracht werden.

Nachteile:
--> Speicherplatz (weniger als 1MB) muss auf einem Server (Internet oder Intranet) vorhanden sein. (Gratis Speicherplatz gibt es im Internet allerdings wie Sand am Meer)

Ein paar Infos zu VI bzw. NVI:
--> Mit der "Einfügen"-Taste kann zwischen Replace und Insert umgeschaltet werden.
--> Mit "ESC" kommt man wieder in den Command Modus um Commands an das Programm abzusetzten
----> Im Command Modus
----> :q Beenden
----> :q! Beenden erzwingen (klappt nicht bei nvi)
----> :x Speichern & Beenden

SSH von außen erreichbar machen:
Für die die SSH auch von außen erreichen wollen, dieser Teil ist Kniffliger
1: Mit NVI die Datei ar7.cfg öffnen (nvi /var/flash/ar7.cfg).
2: Im Command Modus mit "/" nach "forwardrules" suchen, hier sollten eure Weiterleitungen stehen.
3: Fügt eine Weiterleitung hinzu welche auf die Intranet IP der Box führt (z.B. -> "tcp 0.0.0.0:22 192.168.178.1:22 0 # SSH"; <-)


Versionspezifische Informationen 0.1

Installation von v0.1:
Alle die schon Telnet aktiv haben können mit Schritt 2 anfangen
1. Telnet Zugang einrichten
2. Die Dateien dropbear und etherwake (im Anhang) auf einem Server ablegen.
3. Mit Telnet auf die FritzBox connecten (Start->Ausführen->telnet fritz.box).
[highlight=red:cea2ddde9f]>>WICHTIG<<
Wenn ihr irgendwas an der "debug.cfg" verbockt habt, nicht versuchen mit ":q!" zu beenden, das klappt nicht, einfach den Netzstecker ziehen und der alte Stand wird wieder geladen.
[/highlight:cea2ddde9f]
4. Die Datei debug.cfg mit NVI öffnen (nvi /var/flash/debug.cfg).
5. Das beigefügte Script an eure gegebenheiten anpassen und in die "debug.cfg" übertragen.
6. Wenn alles Richtig eingetragen ist mit ":x" beenden und "reboot" eingeben, die Box startet jetzt neu durch und hat, vorrausgesetzt ihr habt alles richtig angegeben, SSH und Etherwake an Board
7. Einloggen mit User: "Root" Passwort: "fritzbox"
7. Viel Spaß mit SSH


Code:
# Starten des Telnet Daemons
/usr/sbin/telnetd -l /sbin/ar7login


# Konfiguration
# Adresse des Servers von dem die Dateien nachgeladen werden
serverurl="deinserver.de"
# Lokales Verzeichnis (muss beschreibbar sein) in dem die Dateien liegen sollen
localdir="/var/tmp"
# Port auf dem Dropbear laufen soll
dropbearport="22"
# MAC Adresse fuer das startpc Script welches das Wecken eines PC vereinfacht
wolmac="01:23:45:67:89:AB"
# Interface über das geweckt werden soll
# eth0 = LAN1
# eth1 = LAN2
wolinterface="eth0"


# Aendern des Root Passwortes
cp -p /var/tmp/shadow /var/tmp/shadow.old
PASSWD='36d6NYYMch85U'
sed -e "/root:/s#^root:[^:]*:#root:$PASSWD:#" /var/tmp/shadow.old > /var/tmp/shadow

# Warten bis FritzBox den Server erreichen kann
while !(ping -c 1 $serverurl); do
sleep 5
done

# In das Lokale Verzeichnis wechseln
cd $localdir

# Anlegen eines vereinfachenden WOL Scripts
echo "$localdir/etherwake -i $wolinterface $wolmac" > ./startpc

# Nachladen von Dateien
wget http://$serverurl/dropbear
wget http://$serverurl/etherwake

# Anpassen der Dateirechte
chmod +x ./dropbear
chmod +x ./etherwake
chmod +x ./startpc

# Symlink fuer dropbearkey erstellen
ln -s $localdir/dropbear dropbearkey

# 1024Bit RSA/DSS Keys fuer Dropbear erstellen
$localdir/dropbearkey -t rsa -f dropbear_rsa_host_key
$localdir/dropbearkey -t dss -f dropbear_dss_host_key

# Dropbear starten
$localdir/dropbear -p $dropbearport -r $localdir/dropbear_rsa_host_key -d $localdir/dropbear_dss_host_key

Dies ist meine erste Anleitung ich hoffe sie ist einigermaßen nachvollziehbar.

Für Fragen/Anregungen/Kritik bin ich immer zu haben.


supafly2k
 

Anhänge

  • dropbear_etherwake.zip
    374.2 KB · Aufrufe: 3,779
Zuletzt bearbeitet:
Re: Anleitung: SSH (Dropbear) und Etherwake auf der FRITZ!Bo

supafly2k schrieb:
Die Keys für SSH werden bei jedem Reboot der Box neu generiert die erhöht die Sicherheit.

Das ist Blödsinn. Dann kennt man ja nach dem Reboot den public Key der Box nicht mehr und weiss nicht, ob man sich überhaupt mit seiner Box verbindet. Das pervertiert den Sinn von Hostkeys komplett!

Hostkeys gehören einmal generiert und dann - z.B. mittels der debug.cfg - dauerhaft gespeichert!

Gruß,
Enrik
 
Version 0.2 verfügbar

Hallo,

als erstes muss ich eingestehen das ich wenig Ahnung von der Funktionsweise von SSH habe und ich einfach mal mit SSH und der Box rumspielen wollte.

Version 0.2

Changelog:
- Feste Hostkeys

Hier die Variante mit festen Hostkeys (übernommen vom mod57) v0.2:

Code:
# Starten des Telnet Daemons
/usr/sbin/telnetd -l /sbin/ar7login


# Konfiguration
# Adresse des Servers von dem die Dateien nachgeladen werden
serverurl="deinserver.de"
# Lokales Verzeichnis (muss beschreibbar sein) in dem die Dateien liegen sollen
localdir="/var/tmp"
# Port auf dem Dropbear laufen soll
dropbearport="22"
# MAC Adresse fuer das startpc Script welches das Wecken eines PC vereinfacht
wolmac="01:23:45:67:89:AB"
# Interface über das geweckt werden soll
# eth0 = LAN1
# eth1 = LAN2
wolinterface="eth0"


# Aendern des Root Passwortes
cp -p /var/tmp/shadow /var/tmp/shadow.old
PASSWD='36d6NYYMch85U'
sed -e "/root:/s#^root:[^:]*:#root:$PASSWD:#" /var/tmp/shadow.old > /var/tmp/shadow

# Warten bis FritzBox den Server erreichen kann
while !(ping -c 1 $serverurl); do
sleep 5
done

# In das Lokale Verzeichnis wechseln
cd $localdir

# Anlegen eines vereinfachenden WOL Scripts
echo "$localdir/etherwake -i wolinterface $wolmac" > ./startpc

# Nachladen von Dateien
wget http://$serverurl/dropbear
wget http://$serverurl/etherwake
wget http://$serverurl/uudecode

# Anpassen der Dateirechte
chmod +x ./dropbear
chmod +x ./etherwake
chmod +x ./uudecode
chmod +x ./startpc

# Hostkeys für Dropbear erstellen
$localdir/uudecode -o $localdir/dropbear_rsa_host_key <<\EOP
begin 600 $localdir/dropbear_rsa_host_key
M````!W-S:"UR<V$````#`0`!````@P">QN0NFWP@?VTC'8GL\C8&G11:L9<M
MQA<-_IIT1EP!8^IU&=$BJL>UNP\5?3KZB5K7M;;"/;EFT138#:F?/UHL2I0F
M'PGSN0DE_]%AOKG,N190XRO+TM)%(VIJEY3Y0M+Q.;&,`_<_,U9EOFW.GREP
M=OY$5FA`88/^D>-[XEWJ-_:/````@B+<W0%VUGQT/DQUD?%;!8W2,\/N-IFP
M8R.)@?2!]G6_L)UAN\_VV[\%@;Q@,/$-\\IE=>F4C_\);:`Z[\&ML6D#YHM]
M(B^API5I6]H^:.:JN;5W7-$F90="^%)HS+X>E"+G^39WAKE_50WA!.%8`*LS
MK;@"2UY(;IW3U[%X2JCIOA$```!"`,-_EZ%MD#HC5)OFX!`A.':DC>JGD-F#
M).A.*0=E@XN=1G_V0RP,YVE4:-:D:(('Y8!;%&2]/.:?X#'8P=6BU!&[````
M0@#/Z@?)I0(J)6Z%ICS)K$JV@R7)#)-$^A&6,'JJ6&`T'ZX\K9U#<(:$55S,
6O@BE_]ET3U]\.=#.I-FHN`-1DA#G/0``
`
end
EOP
$localdir/uudecode -o $localdir/dropbear_dss_host_key <<\EOP
begin 600 $localdir/dropbear_dss_host_key
M````!W-S:"UD<W,```"!`-K9RIVP7+\N_GLU^N_/`*GG:8+I86MH60OU."4"
M#YS/R"EJ5"/NR6"IQXN,&3NH@,NOL]V&'.RJ3&QR-PI(%85*#Y+ZCK^='X`F
MX44AO9E)9K6I>PP`RS\I7KV/8#?^BV*N0=,7@@Z/W_Y(?51W%5+5IT\FDI^C
MY9^-?B)\S)E=````%0";NJAW(U.E,T>@"8T>VNF,(2-&L0```(`JGQ!QO2"E
M*S/668]56PQ/KM?^KC-(*E-L.EAJ7/W1M50^BHSY[)-,WF&B)$0<6B_VVTIA
M5.Z'"[;O]_RD;_N%Q\_GZ2N9>(#36&^X.#"V4@!G]!NIJ;:(KE%"S6TB2_;[
ME+!#Q2%3AOQ.^8C<%5:!8R73?7'^_O3ZL!'R0?3KW@```(!L'BX?@Q*UV<.N
MST&:1Q*)+3M?A<=;RQ6I?$)3?W),]IZ)\`EFB',`>Q^-9\9$1/UYR4@*%9VO
MNJ'O'N@_B-\-.:/:6VN>R@*M2W5`T#'HCNUD^0K_XU&9RWZ48SOEFI)$SUA7
MW9J2X^BF]#=3RJBY%VP.,H,+9<;M-#&\]SBZ1@```!4`Y/$*;*CE9>!CNEVB
(L<TH-!^D^)8`
`
end
EOP


# Dropbear starten
$localdir/dropbear -p $dropbearport -r $localdir/dropbear_rsa_host_key -d $localdir/dropbear_dss_host_key

Allerdings sollte man einen anderen Hostkey wählen da jeder der zb mod57 draufhat diesen nutzt.


gruß supafly2k
 

Anhänge

  • dropbear_etherwake_static_hostkey.zip
    621.3 KB · Aufrufe: 887
Hi.
Der Hostkey wird beim mod-0.57 beim ersten Start generiert und dann in die debug.cfg reingeschrieben! Ist also nicht für alle Boxen gleich!!!
Wie das geht musst du dir in der modstart.init angucken.

MfG Oliver
 
Hi!
hab das script erfolgreich in die box verfrachtet. wenn ich reboote scheint die debug.cfg nicht ausgeführt zu werden. die änderungen hat er gespeichert... woran kann das liegen?

Wenn ich die mod. debug.cfg manuell über "sh debug.cfg" aufrufe, dann startet alles wie erwartet... :roll:
 
Hi.
Hardware? Firmware-Version?
Die debug.cfg wird normalerweise beim Start der Box in der rc.S aufgerufen:
Code:
mknod /var/flash/debug.cfg           c $tffs_major $((0x62))
...
if cat /var/flash/debug.cfg >/var/rc.user 2>/dev/null ; then
    chmod +x /var/rc.user
    . /var/rc.user
MfG Oliver
 
Ein paar Anmerkungen meinerseits:

1. Scheint auch auf der FBF ATA zu funktionieren!

2. Kleiner Fehler im Script? Müsste es nicht heißen:
# Anlegen eines vereinfachenden WOL Scripts
echo "$localdir/etherwake -i $wolinterface $wolmac" > ./startpc
("Dollarzeichen" vor der Variable wolinterface)?

3. Wenn in der Variablen serverurl nicht nur eine Domain, sondern ein Pfad angegeben wird, dann bleibt das Startscript beim Pingen hängen (in der Prozessliste (ps) steht dann "sleep -5" als dauernd laufender Prozess). Liegen die benötigten Dateien also nicht im Wurzelverzeichnis des Servers, muß in der Zeile
while !(ping -c 1 $serverurl); do
entweder der Server explizit angegeben werden oder eine weitere Variable eingeführt werden.

Ich hoffe, das hilft beim einen oder anderen Problem weiter...

Gruß,
Wichard
 
Hallo,
ja du hast recht, danke für den Hinweis (Im script geändert!).
Ich bin gerade dabei eine neue Version zu basteln (der Weg eines Mods zur vollendung ist hart und steinig *G*).

Ich werde deinen Tipp mit der Variable $serverurl mit einfliessen lassen.

gruß supafly2k
 
supafly2k schrieb:
(der Weg eines Mods zur vollendung ist hart und steinig *G*).

Aber wenn er da ist, dann sind wir alle dankbar... :)

Zur Ergänzung noch eins: Bei der ATA scheint eth0 das WAN-Interface zu sein, eth1 müsste demnach die LAN-Buchse sein. Aufgrund der Netztopologie bei mir muß etherwake an WAN senden - und das klappt mir eth0.

Danke für Deine Arbeit,
Wichard
 
Version 0.3 ist verfügbar

Hiho,
ich habe eure Ratschläge zu Herzen genommen und mal die Version 0.3 entwickelt welche noch einfacher zu handhaben ist da sie einen Installer besitzt.
Danke an alle hier im Forum für euren beistand.

Wie Versprochen war das Update auf Firmwareversion 14.03.71 kein Problem (im Bezug auf diesen Mod) drauf damit und alles läuft brav weiter.

Version 0.3

Changelog:
- SSH Hostkeys werden einmal generiert und dann immer verwendet (auch nach Neustart)
- Installer hinzugefügt
- Kleinere Korrekturen

Achtung beim Editieren der input.cfg und der install.sh ist darauf zu achten mit dem Unix Zeilenumbruch zu arbeiten da es sonst zu Problemen kommen könnte.
Ein Freeware Editor der dies unterstützt ist z.B. Proton.

Installation von v0.3:
Alle die schon Telnet aktiv haben können mit Schritt 2 anfangen
1. Telnet Zugang einrichten
2. Alle Dateien die im Anhang sind, entpacken euren wünschen anpassen und auf einem Server ablegen.
3. Mit Telnet auf die FritzBox connecten (Start->Ausführen->telnet fritz.box).
4. Ins Verzeichnis /var/tmp wechseln (cd /var/tmp)
5. Die Datei install.sh mit wget herunterladen (zb wget http://deinserver.de/install.sh)
6. Die Datei install.sh ausführbar machen (chmod +x install.sh)
7. Die Datei install.sh starten (./install.sh)

Falls Ihr Fehler findet bitte melden.


Viel Spaß

Gruß supafly2k
 

Anhänge

  • ssh_etherwake_v03.zip
    376.2 KB · Aufrufe: 11,291
Hiho,

ein kleiner Fehler hatte sich eingeschlichen.
Beim setzen des Passworts müssen ' statt " verwendet werden da es sonst bei bestimmten Zeichen zu Problemen beim übertragen des Passworts in die shadow kommen kann.

Habe es in der ZIP Datei schon geändert.

Code:
# Verschluesseltes Passwort des Root Users (Wichtig für SSH)
	PASSWD="36d6NYYMch85U"

muss heissen:

Code:
# Verschluesseltes Passwort des Root Users (Wichtig für SSH)
	PASSWD='36d6NYYMch85U'

gruß supafly2k
 
also ich krieg hier laufend nen fehler beim versuch das ganze auf der FRITZ!Box SL WLAN (09.03.65) zum laufen zu bringen:
Sichern der alten debug.cfg in /var/tmp/output.cfg ... cat: /var/flash/debug.cfg: No such file or directory

auch wenn ich den befehl manuell eingebe kommt das gleiche bei raus:
# cat /var/flash/debug.cfg >> /var/tmp/output.cfg
cat: /var/flash/debug.cfg: No such file or directory

dabei existiert die datei aber
# cd /var/flash/
#
# ls -la
drwxr-xr-x 1 root root 0 Sep 8 14:00 .
drwxr-xr-x 1 1002 1002 0 Jan 19 2005 ..
crw-r--r-- 1 root root 254, 113 Sep 8 14:00 ar7.cfg
crw-r--r-- 1 root root 254, 98 Sep 8 14:00 debug.cfg
crw-r--r-- 1 root root 254, 112 Sep 8 14:00 multid.leases
crw-r--r-- 1 root root 254, 117 Sep 8 14:00 net.update
crw-r--r-- 1 root root 254, 116 Sep 8 14:00 stat.cfg
crw-r--r-- 1 root root 254, 118 Sep 8 14:00 vpn.cfg
crw-r--r-- 1 root root 254, 115 Sep 8 14:00 wlan.cfg

hat jemand nen tipp woran das liegen könnte?

# nvi debug.cfg
scheitert ebenfalls mit der gleichen meldung

# nvi ar7.cfg
geht übrigens problemlos

hat jemand ne idee woran das liegen könnte oder wie ich das umgehn kann?


dann noch ne anmerkung: da meine fritzbox nicht direkt am netz hängt sondern an einem router musste ich vorher noch nen gateway und DSN server eintragen .. villeicht sollte man das noch erwähnen.
 
evtl noch keine debug.cfg auf der box. mit echo > /var/flash/debug.cfg die datei erzeugen.
dann sollte es gehen.

micha
 
Ich weiß gar nicht, ob eine SL die debug.cfg unterstützt.
Falls deine /etc/inid.d/rc.S so endet, sind wir schon mal einen Schritt weiter:
Code:
#########################################################################
# user rc file
#########################################################################
mknod /var/flash/debug.cfg           c $tffs_major $((0x62))
if cat /var/flash/debug.cfg >/var/rc.user 2>/dev/null ; then
    chmod +x /var/rc.user
    . /var/rc.user
else
    rm -f rc.user
fi
Falls das nicht so aussieht, hast du leider Pech gehabt. :-(
Ansonsten kannst du mal probieren eine leere debug.cfg zu erstellen.
"echo > /var/flash/debug.cfg"

MfG Oliver
 
jop meine rc.S endet genau so

und ja die debug.cfg war tatsächlich noch nicht da, nachdem ich sie angelegt hab lief das script ganz durch AUSSER das er den reboot befehl nicht kannte, aber nach eingabe von /sbin/reboot ging das.

jetzt bleibt nur noch ein kleines problem: meine box ist hinter nem router .. also muss da DNS und gateway eingetragen werden ...
ich habs einfach ma so gemacht das ich mit wieder per telnet reingeloggt hab dann dns manuell in der /etc/resolv.conf eingetragen und gateway manuell mit
/sbin/route add default gw 192.168.0.1
eingetragen und dann einfach nur noch(mal) manuell
. /var/rc.user
gestartet und es lief durch und ich komm nu per SSH dran *freu*

--edit--
so problem gelöst, ich hab die input.cfg einfach um folgendes erweitert:
Code:
# Default Gateway
	defgw="192.168.0.1"

echo nameserver $defgw > /etc/resolv.conf
/sbin/route add default gw $defgw
und nu hab ich auch SSH *freu*
 
Hallo,

ich habe noch ein Problem mit der Erstellung der Schlüssel.
Bei mir funktioniert ./dropbear -t rsa -f key_file nicht.
wenn ich ./dropbear -h eingebe wird das Kommando auch nicht angezeigt.


Martin
 
die keys werden mit dropbearkey erzeugt, nicht mit dropbear.

micha
 
Hallo,

Mist das habe ich in install.sh überlesen.
Soweit funktionier es bei mir. Wie kann ich jetzt die Anmeldeversuche begrenzen und wie erzeuge ich selbst das Passwort? fritzbox ist mir doch etwas zu einfach :)


Martin
 
ich hab das passwort so geändert:
/var/tmp/busybox passwd
dann eben das neue passwort eingeben
dann gehst du in die shadow datei und liest es dort einfach aus (copy)
dann gehst du in deine input.cfg oder eben direkt in die debug.cfg und trägst es dort an die richtige stelle ein (paste) und fertig ists.
das passwort ist das zwischen den 2 doppelpunkten, ... also da steht sowas wie: root:<passwort-hash>:bla_bla_was_anderes:

ist keine bequeme möglichkeit für häufige änderungen aber ne schnelle.

wie man die versuche begrenzt weiß ich nicht
wenn man das nicht kann könnte man dann nen wait zwischen den versuchen einbauen? also das nach ner falschen anmeldung die box erstma 20 sec wartet .. das macht bruteforcen unmöglich.
 
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.