[HowTo] Kleiner Webserver mit BusyBox

scrat

Neuer User
Mitglied seit
22 Mrz 2009
Beiträge
65
Punkte für Reaktionen
1
Punkte
8
Ich schreibe dieses Howto, weil ich mit dem im freetz Wiki nicht klar gekommen bin. Ich bin kein großer Linux Experte, daher kann ich nur mein Vorgehen erläutern, aber keine Fragen beantworten.
Wer keinen Platz hat um den Apache ins Image zu packen, der kann auch mit der BusyBox einen kleine Webserver in Betireb nehmen.

Als erstes habe ich mir die webcfg.conf aus dem Verzeichnis /var/mod/etc auf den PC kopiert. Dort hab ich sie in busyhttp.conf umbenannt.
Diese hab ich dann mit notepad++ bearbeitet. Den vorhandenen Inhalt habe ich gelöscht, da dieser für den Zugrif auf die freetz Config Seite ist. Ich will ja für meinen Server einen eigenen Nutzernamen haben.
Der Inhalt der Datei ist bei mir nun: /VERZEICHNIS:USER:pASSWORD
Um die Datei ins das Verzeichnis /var/mod/etc kopieren zu können, muss der Ordner vorher per chmod 777 etc die nötigen Rechte bekommen. Nach dem Kopieren hab ich es wieder auf 755 gesetzt.
Dann hab ich ein Verzeichnis aufm USB Stick erstellt. /var/media/ftp/USBSTICK/apache2/htdocs/VERZEICHNIS
In dem Ordner hab ich zum testen eine index.html abgelegt.
Darin liegt dann die Website die über den USER und PASSWORD erreicht werden kann.
Mit dem Befehl httpd -P /var/run/port90.pid -p 90 -c /mod/etc/busyhttp.conf -h /var/media/ftp/USBSTICK/apache2/htdocs/ -r "Port 90" startet man den Prozess.
Sollte man einen Fehler mit den Ordnern gemacht haben, kann man den Prozess mit ps -w | grep httpd suchen. Die Zahl die ganz vorne der Zeile steht, wird benötigt um den Prozess zu stoppen. Dies geschieht mit kill Prozessnummer.
Danach kann man den Prozess neu starten. Danach erhält er aber eine neue Prozessnummer.
Dies erspart ein dauerndes neustarten der Fritzbox.
Um diesen Prozess automatisch beim Boot starten lassen zu können, muss der Befehel httpd -P /var/run/port90.pid -p 90 -c /mod/etc/busyhttp.conf -h /var/media/ftp/USBSTICK/apache2/htdocs/ -r "Port 90" im Freetz Webmenü unter Freetz rc.custom eingetragen werden.
Jetzt sollte der Webserver unter http://fritz.box:90/VERZEICHNIS/ erreichbar sein.
Um den Server auch aus dem Web erreichbar zu machen, muss man den Port noch auf die Fritzbox weiterleiten.
Dazu muss man beim erstellen des Images noch das Paket AVM-firewall-CGI auswählen. Die CGI erreicht man über die freetz Seite mit einem Klick auf AVM-Forwarding. Dort Protokoll tcp bei den Ports jeweils 90 und zb. http busybox eingeben. Dann die Änderunge übernehmen und sofort rebooten.
Jetzt ist der Server auch von extern erreichbar.
Jetzt kann man sich noch eine Dynamic DNS Adresse registrieren, damit man sich nicht immer neue IP-Adressen vom ISP merken muss.
 

Anhänge

  • busybox.jpg
    busybox.jpg
    202.8 KB · Aufrufe: 29
Zuletzt bearbeitet:
Ich will deine tolle Idee nicht schlecht reden, denn du hast dir anscheinend viel Mühe gemacht, um die von FREETZ, WOL und Co. verwendete Methode nun an die Massen zu bringen. Allerdings würde ich gerne meine Bedenken äußern, die zwar auch jedem bekannt sein sollten, könnten aber von einem oder anderem übersehen werden:
1. Die alte Passwort-Methode vom httpd ist unsicher und sollte im äußeren Netz nicht verwendet werden. Wenn es schon unbedingt sein muss, dann mit https absichern. Dafür kann man stunnel, matrixtunnel, etc. nehmen. Aber bitte bedenken: https-Sachen fressen Ressourcen und arbeiten unter Umständen langsam (matrixtunnel).
2. httpd ist ein rudimentärer WebServer, der auf dem tiefsten Systemniveau läuft. Und zwar als root. Ich gebe es einfach zu bedenken! Man kann zwar damit tolle Sachen machen, die wir in FREETZ auch nutzen und die man nicht so einfach mit PHP und Co. machen kann, man hat aber DEN VOLLEN ZUGRIFF auf ALLE Resourcen der Box.

Jetzt könnt ihr natürlich sagen: Was will er mit seinen paranoidalen Warnungen? Meine Box interessiert doch keinen! Stimmt zwar, allerdings begrenzt. Denkt bitte an die letzte Drama von AVM mit deren https-Server...

MfG
 
Moin

Ob mit oder ohne freetz, den busybox httpd nutz ich schon lange.
Wer veröffentlichen möchte, will auch von Google gefunden werden und nutzt Port 80.
Wer nicht, maskiert ihn, indem er eine hohe Portnummer nimmt, da sucht der Googlebot nicht.
Wie auch immer, wer einen Server ins Internet stellt, setzt sich auch Angriffen aus eben diesen aus.
Nichtsdestotrotz ist der busybox httpd sehr flexibel.
Vorrausgesetzt ihm wurde die entsprechende Funktionalität mit auf dem Weg gegeben.
1. Shellskript CGI, und mit php-cgi wird er auch PHP fähig.
2. Mimetypes Unterstützung, falls es mal mehr sein soll als simples HTTP (z.B. XML, XSL, DTD, SVG, XHTML, SWF).
3. Reverse Proxy Unterstützung, Verzeichnisse leiten auf andere Server um, ohne eine Portfreigabe.
4. Eigene Fehlerseiten, ich steh auf knallroten Hintergrund mit fetter weisser Schrift. :mrgreen:
Dazu brauchts nur die richtigen Einträge in der...
...httpd.conf...
Code:
H:/var/media/NEW_LINK	# document root overriding -h
# startpages (default names)
I:index.html
#I:test.xhtml
# allow/deny order
#A:127.0.0.1	# allow local loopback connections
#A:192.168.178.	# allow from local network
#A:85.183.		# allow from workingplace
#A:93.220.		# allow from ISP
#D:*			# deny from other ip connections
A:*				# allow from any ip
# securing the server with name and password (use "httpd -m PASSWORD" fo encryption)
/cgi-bin/:NAME:PASSWORD
# mime-types
.xhtml:application/xhtml+xml		# xhtml ;-)
.xml:application/xml			# extended markup language (XML)
.xsl:application/xml+xsl		# extended markup language (XML-Transformation)
.dtd:application/xml+dtd		# extended markup language (XML-DocTypeDefinition)
.svg:image/svg+xml			# scalable vector graphic
.swf:application/x-shockwave-flash	# shockwave flash
.oga:audio/ogg
.wav:audio/wav
.ogv:video/ogg
.ogg:video/ogg
.mp4:video/mp4
.txt:text/plain
.cfg:text/plain
.conf:text/plain
.ini:text/plain
.log:text/plain
#.cgi:text/plain
#.sh:text/plain
# externals
*.php:/var/media/NEW_LINK/mips/php.sh 	# run xxx.php through an interpreter
*.cgi:/bin/sh			# :-)
*.sh:/bin/sh			# :-)
# own error pages
E400:/var/media/NEW_LINK/error/e400.html    # 400 (bad request)
E401:/var/media/NEW_LINK/error/e401.html    # 401 (access denied)
E403:/var/media/NEW_LINK/error/e403.html    # 403 (forbidden)
E404:/var/media/NEW_LINK/error/e404.html    # 404 (not found)
E500:/var/media/NEW_LINK/error/e500.html    # 500 (internal server error)
# reverse proxying
P:/home/:fritz.box:4200/cgi-bin/index.cgi
P:/xml/:fritz.box:4200/html/
P:/game/:fritz.box:4200/flash/
P:/svg/:fritz.box:4200/xml/
P:/swf/:fritz.box:4200/game/
P:/darkstat1/:127.0.0.1:8081/
#EOF

Damit lässt sich schon eine Menge machen. ;)
 
Zuletzt bearbeitet:
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.