howTo: Linkstation: Webserver für Intranetzugriff anpassen

Network Attached Storage
sunnysun
Interessierter
Interessierter
Beiträge: 38
Registriert: Freitag 14. Januar 2005, 08:12

howTo: Linkstation: Webserver für Intranetzugriff anpassen

Beitrag von sunnysun »

Ich habe mich mal hingesetzt und den webserver der Linkstation als Intranetserver missbraucht. Somit kann ich nun zusätzlich per Webbrowser auf sämtliche Shares und Dateien zugreifen.

Ihr braucht lediglich bereits Root Zugang zur Linkstation. Alles weitere erledigt Ihr per Telnet Client. Das ganze ist in wenigen Minuten erledigt und per einzeiler wieder rückgängig zu machen. Natürlich übernehme ich keine Gewähr für irgendwas...


1)
Als erstes verbinden wir uns per telnet mit dem Root User (also denjenigen, den Ihr zum Root user gemacht habt) zur Linkstation. Ich benutze dafür gern den client "putty".


2)
Anschliessend kopieren wir das derzeitige Webverzeichnis nach /mnt, damit wir neben unseren Shares nach wie vor per Webinterface die Linkstation konfigurieren können.

Code: Alles auswählen

cd /
cp /www/* /mnt -r
Nun sollten die Verzeichnisse cgi-bin usw. im root von /mnt/ sein.



3)
Nun noch eine Kopie der aktuellen thttpd.conf machen (das ist die Konfigurationsdatei des webservers thttp).

Code: Alles auswählen

cp /etc/thttpd.conf /mnt/thttpd_conf.bak
Solltet Ihr irgendwann also mal alles rückgängig machen wollen, genügt ein:

Code: Alles auswählen

cp /mnt/thttpd_conf.bak /etc/thttpd.conf
...und ein anschliessender Neustart der Linkstation.


4)
Nun bearbeiten wir die Datei /etc/thttpd.conf mit dem Befehl:

Code: Alles auswählen

cd /etc
vi thttpd.conf

Wir ändern im Prinzip nur das Root Dir des webservers. Diese Einstellung steht in der ersten Zeile nach "dir=". So sollte die Datei thttpd.conf anschliessend aussehen:

Code: Alles auswählen

dir=/mnt
user=root
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
port=80
charset=
cgipat=/cgi*/*

5)
Damit wir auch in unseren Shares browsen können, müssen wir nun noch die index.htm in /mnt umbennnen. Ansonsten würde ein Aufruf von "http://IP-Der-Linkstation" immer automatisch die index.htm aufrufen - und das wollen wir ja nicht.

Code: Alles auswählen

mv /mnt/index.htm /mnt/index2.htm
In Zukunft könnt Ihr das Linkstation Web über http://<linkstation-ip>/index2.htm aufrufen. Der Aufruf "http://IP-Der-Linkstation" listet Euch ab sofort nur die Verzeichnisstruktur auf und man kann wunderbar in seinen shares browsen.


6)
Leider sind wir noch nicht ganz fertig. Viele Dateien und Ordner haben executable Berechtigungen. Der thttp Webserver erlaubt den Aufruf von executables aber nur bei cgi-scripten. Entsprechend ändern wir nun dieses Flag. Das ändert allerdings nichts an den Gruppen oder User Berechtigungen, die Ihr per webinterface eingestellt habt (zumindest soweit ich feststellen konnte).

Code: Alles auswählen

cd /mnt
cd <eure-share>>
chmod 666 -v -R *
cd ..
Das solltet Ihr nun mit jeder von Euch angelegten share in /mnt/ machen, aber NICHT (!!!) mit den anderen Ordnern und Dateien wie /mnt/cgi-bin/. Andernfalls funktioniert das Linkstation Web nicht mehr!


7)
Grundsätzlich wars das schon. Nun fehlt nur noch ein Neustart der Linkstation:

Code: Alles auswählen

shutdown -r now



8)
Nun teste wir das ganze mal. Benutzt einen webbrowser und ruft die Adresse http://IP-Der-Linkstation auf. Ihr solltet nun die Dateien und Verzeichnisse von /mnt/ sehen können. Alle Dateien und Verzeichnisse in Euren Shares könnt Ihr nun durchforsten und dowloaden/ausführen/anzeigen lassen. Ein klick auf /mnt/index2.htm leitet euch weiter zum Adminweb der Linkstation.

Bis auf das Admin Web der Linkstation ist das aber nun offen wie ein Scheunentor!!! Dementsprechend empfehle ich nun dringend den Schritt (9).



9)
Nun sollte natürlich noch die Security angepasst werden. Dabei benutzen wir die Dateien .htaccess und .htpasswd. Die erste Datei existiert noch nicht und wird nun erstellt und mit Inhalt gefüllt:

Code: Alles auswählen

cd /mnt
vi .htaccess
Der Inhalt sollte wie folgt aussehen:

Code: Alles auswählen

AuthType Basic
AuthName "Access for Linkstation"
require user root

Nun kopieren wir noch das passwortfile des alten Linkstation Webs in das neue webroot Verzeichnis:

Code: Alles auswählen

cp /www/.htpasswd /mnt

10)
Per Browser rufen wir wieder die Adresse "http://IP-Der-Linkstation" auf. Dieses Mal werden wir nach Benutzername / Passwort gefragt. Der Benutzername ist "root" und das Passwort das im Linkstation Adminweb eingstellte Passwort.


..fertich!!!




Anmerkungen:
Wenn Ihr im LS Admin Web dieses Passwort mal geändert habt (oder ändern wollt), müsst Ihr entsprechend den Befehl "cp /www/.htpasswd /mnt" erneut ausführen. Wer möchte, kann prinzipiell jedes Unterverzeichnis von /mnt mit einer eigenen .htaccess und .htpasswd schützen. Den entsprechenden Wert des User Passworts könnt Ihr mit "cat /etc/passwd" auslesen und in die jeweilige .htpasswd übernehmen.

Das Passwort kann aber auch völlig unterschiedlich zum jeweiligen Userpasswort sein, wenn Ihr wollt. Es wird bei der Passwortabfrage nicht die /etc/passwd verglichen, sondern das password im jeweiligen .htpasswd! Selbst der User muss imho nicht existieren... Ihr könnt also in der .htaccess und .htpasswd den user "fridolin" eintragen und dat lüppt auch. Um ein Passwort für einen Fantasieuser einzurichten könnt Ihr im web nach Cleartext >> htaccess passwort konverter suchen (z.b. http://ihre-webhosting-domain.de/php/md5enc.php). Interessant ist auch der Artikel unter: http://faq.1und1.com/hosting/technik/htaccess/1.html ! hier wird auch erklärt wie Ihr mehere User für den zugriff einrichten könnt.

Wenn Ihr den alten Zustand wieder herstellen wollt genügt ein "cp /mnt/thttp_conf.bak /etc/thttpd.conf" und ein anschliessender Neustart.

Natürlich steht es euch frei, per Router Einstellung und optional per dynamic DNS diesen Server nun für das Internet verfügbar zu machen. Wer das vor hat, sollte sich aber wirklich mit seinen Router und der Firewall auskennen. Ich habe vor, dafür einen Draytek 2500 vigor zu benutzen. Der hat einen echten VPN Server (nicht passtrough) eingebaut. Somit kann ich eine VPN Verbindung herstellen und dann auf meine Shares zugreifen. Natürlich geht das auch ohne VPN Server, jedoch sollte dann jeden klar sein, das die Daten unverschlüsselt übers net gehen...

Ach ja, mir ist klar das die LS auch nen FTP Server hat... aber von der Firma aus ist halt nur Port 80 offen... das Problem habe ich also damit gelöst..

bis denne
Markus[/code]
Zuletzt geändert von sunnysun am Freitag 8. April 2005, 08:04, insgesamt 3-mal geändert.
sunnysun
Interessierter
Interessierter
Beiträge: 38
Registriert: Freitag 14. Januar 2005, 08:12

Beitrag von sunnysun »

WICHTIGER NACHTRAG!!!!!!!!

...zum Thema Security. In der Standardeinstellung ist nur der Ordner durch die .htaccess/.htpasswd geschützt, indem diese Dateien liegen. Das heisst:

htaccess liegt in mnt/install >> http://linkstation/install ist geschützt.
Alle Unterordner von /mnt/install sind aber ohne besonderen Schutz!!! Um die Unterverzeichnisse ebenfalls abzusichern hat man zwei Möglichkeiten:


Möglichkeit 1:
Jedes Unterverzeichnis enthält ebenfalls eine .htaccess/.htpasswd. Keine Angst, Ihr müsst Euch nicht jedes Mal neu authenfizieren. Das dient nur dazu, das ein derartiger eroberungsversuch dann abgefangen wird.

Möglichkeit 2 (meiner Meinung nach Sinnvoller)
Der Webserver thttpd bietet die Option "global password". Das bedeutet, nur EINE EINZIGE .htaccess/.htpasswd im obersten Webrootverzeichnis (in diesen HowTo also /mnt/) reicht aus, um alle weiter verschachtelten Unterverzeichnisse zu schützen. Nachteil: Alle in den Unterordnern befindlichen .htaccess/.htpasswd Dateien werden dann ignoriert.


thttpd Server auf Global passwords umstellen:
Wieder als root per telnet zur Linkstation connecten. Wir müssen nun das Startscript des thttpd-servers anpassen:

Code: Alles auswählen

cd /etc/init.d
vi thttpd
Nun sollte das Startscript des webservers geöffnet sein. Der Aufruf erfolgt nach CASE im Block START. Hier muss der Parameter "-g" nach "/usr/sbin/thttpd -C /etc/thttpd.conf" angefügt werden.

Start Block VORHER

Code: Alles auswählen

case "$1" in

    start)
        if [ -x /usr/sbin/thttpd ] ; then
          echo  "Start services: thttpd"
          /usr/sbin/thttpd -C /etc/thttpd.conf
          logger -t ${tag} -p ${facility} -i 'Started thttpd'
        fi
        ;;
Start Block NACHHER

Code: Alles auswählen

case "$1" in

    start)
        if [ -x /usr/sbin/thttpd ] ; then
          echo  "Start services: thttpd"
          /usr/sbin/thttpd -C /etc/thttpd.conf -g
          logger -t ${tag} -p ${facility} -i 'Started thttpd'
        fi
        ;;
Nun nopch abspeichern und die Linkstation mit "shutdown -r now" neustarten.

Anschliessend sollte - obwohl nur im Verzeichnis /mnt/ eine .htaccess/htpasswd liegt - jedes Verzeichnis vor direkten Zugriff geschützt sein. Bevor man also nach http://linkstation/install/dbox/installCD1/tools/ kommt ;-), muss man erstmal am Torwächter im Root vorbei, grins...

...so, das wars erstmal zum Thema Security Einstellungen.
sunnysun
Interessierter
Interessierter
Beiträge: 38
Registriert: Freitag 14. Januar 2005, 08:12

Beitrag von sunnysun »

...ich find das zwar blöd mir selbst zu antworten, aber ich hoffe mal wenigstens einigen interessiert das Geschwaller... es geht wieder um Security Tipps:


Grundsätzliche Tipps zur htaccess Security Methode: Die Methode gilt als sehr sehr sicher! Aber nur, solange der Webmaster einige Hinweise beachtet:Für den Angreifer bleiben in der Regel drei Möglichkeiten den Webserver zu "erobern" (gilt für jeden Webserver weltweit!).



1)
Der Linkstation Webmaster ist so dumm und legt die .htpasswd Datei in ein anderes/ungeschütztes Verzeichnis als die dazugehörige .htaccess ab. Zur Erklärung: In der .htaccess kann man optional einen Pfad angeben, WO die .htpasswd auf dem Server liegt (habe ich in diesen howto mit absicht nicht gemacht). Sobald der Angreifer rausfindet, wo sich diese Datei befindet, könnte dieser - sofern dieser Pfad nicht auch durch eine .htaccess geschützt ist - zunächst einmal auf den Pfad zugreifen. Sicher, das ist noch schwierig genug jetzt an die Datei .htpasswd heranzukommen, aber es geht.

Damit hat der Angreifer NICHTS weiter in den Händen als den USERNAMEN, der erwartet wird. Das Passwort ist natürlich mit md5 verschlüsselt, aber schlimm genug!!! Ab sofort sind Brute Force Angriffe möglich (Das md5 gecryptete Passwort in der .htaccess ist eigentlich unknackbar...).



2)
Es geht also weiter für den Angreifer, der nun durch Methode (1) erlangte Username wird für einen Brute Force Angriff genutzt. Brute Force heisst Frei übersetzt soviel "mit aller Gewalt > Brachialmethode" und bedeutet, das nun versucht wird mit entweder einer vordefinierten Passwortliste oder aber mit allen erdenklichen Zeichenkombinnationen auf den webroot zu kommen.




3)
Grundsätzlich besteht immer die Möglichkeit, das Webserver durch Servereigene Sicherheitslücken erobert werden können. Ist bei der vorliegenden Version imo aber nicht zu befürchten, sofern man global passwords eingeschaltet hat (siehe vorheriges post).




Folgende Grundregeln, wenn Ihr die LS als Server ins Internet stellt:


Ich habe gestern also mal meine LS ins Web gestellt und versucht die LS anzugreifen. Dafür war die LS zunächst ungeschützt in der DMZ, anschliessend per Portblocking wieder im der LAN Zone. In der DMZ ist die LS Angriffen aus den Web schutzlos ausgeliefert und mir ist es auf verschiedenen Wegen gelungen, systemkritische Ports zu nutzen und anzusprechen. Sobald alle Ports per Firewall (ausser Port 80) geblockt sind, ist es aber schon viel sicherer. Wer seine LS ohne Hardwarefirewall ins Web stellt, ist selber schuld und gehört übers Knie gelegt! Wer wie ich trotzdem seine LS ins Netz stellen will, sollte folgende Tipps zur hand nehmen:


1)
Bei der Hardwarefirewall muss NAT aktiviert sein.

2)
Im Router sollte ein Account zu einen Dynamic DNS Provider hinterlegt sein. Damit erreicht Ihr, das Ihr trotz wechselnder IP Adresse Eures Routers (bei erneuter Einwahl) im Web immer über ein und dieselbe URL erreichbar sein. Empfehlenswert ist hier http://www.dyndns.org/ ! Der Service ist kostenlos und zuverlässig!


3)
Global Access Method im thttpd Server aktivieren! (siehe vorherigens Post)


4)
Der Username der in der .-htaccess angegeben ist, ist KEIN User auf dem lokalen System!!!!!!!!!!!! Wer hier "root" einträgt (wie im HowTo beschrieben) und die LS dann ins Web stellt, der macht es den Angreifer zu leicht (da Root und Admin als erstes bei Brute Force probiert wird).

Wir lernen also, das für den Angreifer das schwierigste Problem das herausfinden des Usernamens ist! Dementsprechend sollte man auch von seinen eigenen Nicknamen/Realnamen absehen. Benutzt bitte hier einen Fantasybegriff, case-sensitve, 8 Zeichen, mit Ziffern. Zum Beispiel "xFT6TTdds" oder wie auch immer.



5)
Das Passwort... Leute, Ihr glaubt ja nicht wieviele User das Passwort leer lassen (ja, das geht hier auch) oder es "admin", "geheim", "passwort" oder sonstwie nennen. Bei einer Brute Force Attacke sind diese Wörter unter den Top 10 bei der Passwort Try&Error Liste.

Also, wählt ein Passwort welches Ihr NUR dafür benutzt. Benutzt kein Passwort, welches Ihr in irgendwelchen anderen Communities, Usersystemen oder sonstwas benutzt. Nicht das ich deren Admins nicht trauen würde, nur würde dann ein erobern der anderen System ausreichen um evt. mit den eroberten Passwort weiter zu Euch zu marschieren. Daher: Benutzt ein unique und sicheres (!!!) passwort. Also wieder ein Fantasybegriff, mindestens 8 Zeichen, case-sensitive und bestehend aus mindestens 2 Ziffern.



..so, das wars erstmal fürs grobe...was noch fehlt ist nun die SSL-Verschlüsselung...darüber mache ich mir mal Gedanken... wenn einer helfen kann, bitte melden... :-)


Ach ja, Interessiert das überhaupt einen? Ansonsten hör ich nun auf und wusel alleine weiter... kein fishing for compliments, ich möchte nur wissen ob das auch einen interessiert ist, was ich hier poste.. :-)

Gru0
Markus

/Nachtrag/

Thema SSL:
SSL Verschlüsselung ist nicht in der aktuellen Version 2.25b implementiert. Es gibt zwar eine Version 1.9MX die das können soll, aber die wird nicht supported. Bedenkt also, das sämtliche Daten unverschlüsselt übers Netz gehen. Ein Man-in-the-Middle Angriff ist also grundsätzlich möglich (gilt allerdings wieder für alle websites ohne SSL, also auch hier in dieser Community!!!). So ein Angriff ist aber immer theoretischer Natur... ich will nur nicht verschweigen, das diese Möglichkeit besteht.


Thema Error Pages:
Im Pfad /mnt/errors gibt es mehrere indivudelle "Fehlerseiten". Diese heissen err401.html (für Access Denied Meldungen) und err404.html (für file not found Meldungen). Dummerweise sind die auf die Linkstation zugeschnitten. Ich empfehle also dringend, entsprechend eigene Error Pages anzulegen oder die bestehenden zu entfernen. Letzteres geht ganz einfach mit:

Code: Alles auswählen

rm /mnt/errors/err401.html
rm /mnt/errors/err404.html
rm /mnt/errors/index.htm
Danach wird die build-in Fehlermeldung des thttpd Servers angezeigt, wenn jemand erfolglos versucht hat sich bei Euren webserver anzumelden. Ist imho besser als die momentanen Error Pages...

[/code][/u][/b]
petgun
Tuxboxer
Tuxboxer
Beiträge: 5001
Registriert: Montag 11. November 2002, 15:26

Beitrag von petgun »

hi,
Ach ja, Interessiert das überhaupt einen?
ja, mich interessiert es, obwohl ich keine Linkstation mehr habe. Das ist in etwa allgemein gueltig und vielleicht komme ich ja auch mal auf die Idee, den Webserver der WL-HDD weltweit verfuegbar zu machen...dann ziehe ich mir Deine Skripte und Ausfuehrungen nochmal genauer rein.
Feedback bekommst Du garantiert...und sei es in der Form 'das geht bei mir nicht' ;-)

cu,
peter

PS:Weiterhin viel Spass beim exploren der Linkstation
Xonk
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Montag 29. Oktober 2001, 00:00

Beitrag von Xonk »

Hi sunnysun,

vielen Dank für deine ausführliche Anleitung.
Genau soetwas hatte ich gesucht, damit ich auch vom Arbeitsplatz auf die Files komme.

Ich werde die Konfiguration gleich mal einrichten.

Grüße,

Sven
Xonk
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Montag 29. Oktober 2001, 00:00

Beitrag von Xonk »

Klappt soweit alles sehr gut.
Aber gibt es eine Möglichkeit, den http-Server so zu konfigurieren, dass er auch alle executables-Files im "/mnt" Verzeichnis automatisch erlaubt?
Ansonsten müsste man ja bei jedem neuen Ordner/File das chmod-Kommando ausführen.

Grüße,

Sven
sunnysun
Interessierter
Interessierter
Beiträge: 38
Registriert: Freitag 14. Januar 2005, 08:12

Beitrag von sunnysun »

Ich glaube, da gibt es ein Missverständnis. It's not a bug, it's a feature.;-)

Alle von dir neu angelegten files erhalten das Flag Executable. Der LS Webserver erkennt dieses flag und sobald ein user zugreifen möchte, versucht er dieses file serverseitig auszuführen (wie bei *.pl oder *.php dateien ja auch durchaus beabsichtigt und notwendig). Ein Zugriff auf files mit executable-flag versteht der webserver also nicht als download-request. Ich kann jetzt unsinn erzählen, aber so verstehe ich das Verhalten...

Als Lösung würde ich dir einen CRON Job ans herz legen, der meinewetwegen 4x täglich über deine shares wandert und die executable flags per chmod entfernt. Alternativ dazu könntest du das gleiche auch manuell erledigen: Im root des /MNT ein PHP oder PERL script ablegen, welches das chmod dann per mausklick (bzw. aufruf im Browser von der Arbeit aus) erledigt... genauso hast du ja auch den root zugang erhalten. ;-)


Ich hoffe, das hilft dir erstmal weiter... ansonsten bastel ich mal son script, kann eigentlich nur ein 2zeiler sein...

Gruß
Markus
Xonk
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Montag 29. Oktober 2001, 00:00

Beitrag von Xonk »

Hi Markus,

besten Dank für die schnelle Antwort.
Ist mir jetzt soweit klar. Das Script zu schreiben, bekomme ich wohl auch noch hin (auch wenn meine Linux-Kenntnisse sehr dürftig sind).
Jetzt habe ich aber ein ganz anders Problem: Wenn die Files auf 666 stehen, werden die im Windows-Share nicht mehr angezeigt :cry:. Musste daher erstmal alles wieder zurück auf 777 setzen.
Ich werde heute Abend noch mal ein wenig mit der Berechtigung rumspielen (so viele Möglichkeiten gibts ja nicht mehr).

Grüße,

Sven
sunnysun
Interessierter
Interessierter
Beiträge: 38
Registriert: Freitag 14. Januar 2005, 08:12

Beitrag von sunnysun »

Watt?:-) Das kann ich nicht bestätigen...

Wenn ich unter >> START >> Ausführen >> "\\LINKSTATION" eingebe, erscheinen alle shares.... Netzlaufwerk verbinden geht auch problemlos, Zugriff auf die Files auch kein problem...
Xonk
Neugieriger
Neugieriger
Beiträge: 6
Registriert: Montag 29. Oktober 2001, 00:00

Beitrag von Xonk »

Das Problem sind anscheinend die Ordner. Wenn diese auf 666 stehen, werden die bei mir im Windows-Share nicht angezeigt. Lasse ich die Ordner auf 777 stehen und setze nur die Files auf 666, dann klappt alles.

Hat jemand Ahnung, wie und ob man die Linkstation-Software soweit modifizieren kann, dass die Files beim Speichern nicht auf executeable gesetzt werden?

Grüße,

Sven