PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheitsproblem



crivi
08.05.04, 19:42
Hallo zusammen

Ich habe ein FTP Server laufen.

Jetzt kann der User mit einem Filemanager im php geschrieben, bis aufs root verzeichnis zugreifen.

Wie kann ich das unterbinden?

Und auch wenn ich mit WinSCP drauf gehe, dann kann ich bis ins rootverzeichnis wechseln.

Das ist ja ein riesen Sicherheitsloch.

Wie kann ich das unterbinden?

Danke

RipClaw
08.05.04, 20:01
Hallo zusammen

Ich habe ein FTP Server laufen.

Jetzt kann der User mit einem Filemanager im php geschrieben, bis aufs root verzeichnis zugreifen.

Wie kann ich das unterbinden?


Kannst du in der php.ini unter dem open_basedir einstellen bzw. im Apache mit der Option "php_admin_value open_basedir" im entsprechenden Virtuellen Hosteintrag im Apache PHP einsperren.



Und auch wenn ich mit WinSCP drauf gehe, dann kann ich bis ins rootverzeichnis wechseln.


WinSCP kannst du unterbinden indem du dem FTP Benutzer die Shell entziehst.

usermod -s /bin/false [FTP Benutzer]

Wenn SCP aber weiterhin möglich sein sollte kann man scponly (http://www.sublimation.org/scponly/) als Shell einsetzen und mit Jail (http://www.jmcresearch.com/projects/jail/) den Benutzer einsperren.



Das ist ja ein riesen Sicherheitsloch.


Na so groß nun auch wieder nicht. Schonmal versucht dir den Inhalt der /etc/shadow anzusehen ? Die kannst du nicht öffnen ohne die nötigen Rechte.

crivi
08.05.04, 20:06
naja ich finde es doch ein riesen Sicherheitsloch, wenn man die config Files anschauen kann, wo z.B Passwörter drin sind und so.

Aber Danke für deine Hilfe. Ich werde es gerade versuchen umzusetzen.

Gruss Raffi

crivi
08.05.04, 20:10
also nochmal. was muss ich genau in der php.ini für ein Eintrag hinzufügen?

Danke

RipClaw
08.05.04, 20:20
also nochmal. was muss ich genau in der php.ini für ein Eintrag hinzufügen?

Danke

open_basedir=[Pfad zum Heinmatverzeichnis des Benutzers]

z.B.

open_basedir=/home/crivi

Danach Apache neustarten.

crivi
08.05.04, 20:22
aber ich habe ja verschiedene websites laufen.

Kann ich das in den VirtualHost tun? oder wie kann ich das sonst machen?

bsp:

Kunde 1: /opt/lampp/htdocs/Kunde1
Kunde 2: /opt/lampp/htdocs/Kunde2
Kunde 3: /opt/lampp/htdocs/Kunde3

Danke

crivi
08.05.04, 20:35
und wie siehts aus?

RipClaw
09.05.04, 08:29
aber ich habe ja verschiedene websites laufen.

Kann ich das in den VirtualHost tun? oder wie kann ich das sonst machen?

bsp:

Kunde 1: /opt/lampp/htdocs/Kunde1
Kunde 2: /opt/lampp/htdocs/Kunde2
Kunde 3: /opt/lampp/htdocs/Kunde3

Danke

Ja das geht mit der Anweisung "php_admin_value open_basedir /opt/lampp/htdocs/Kunde1" unter dem entsprechenden VirtualHost.

crivi
09.05.04, 08:37
Also da hab ich noch ein problem:

Ich habe so eine Art Dateimanager für jedem Benutzer.

Diese Dateien liegen in /opt/lampp/htdocs/portfolio/Benutzer/

Wie kann ich jetzt machen, dass die Benutzer nicht nach /opt/lampp/htdocs/crivi/portfolio/ wechseln können?

Denn wenn ich php_admin_value open_basedir /opt/lampp/htdocs/crivi/portfolio/Benutzer1/ rein tue, dann funktioniert danach meine ganze Webseite nicht mehr :-(

Haste für das Problem auch eine Idee?

Danke

crivi
09.05.04, 14:50
und hat jemand eine idee?

RipClaw
09.05.04, 23:18
Also da hab ich noch ein problem:

Ich habe so eine Art Dateimanager für jedem Benutzer.

Diese Dateien liegen in /opt/lampp/htdocs/portfolio/Benutzer/

Wie kann ich jetzt machen, dass die Benutzer nicht nach /opt/lampp/htdocs/crivi/portfolio/ wechseln können?

Denn wenn ich php_admin_value open_basedir /opt/lampp/htdocs/crivi/portfolio/Benutzer1/ rein tue, dann funktioniert danach meine ganze Webseite nicht mehr :-(

Haste für das Problem auch eine Idee?

Danke

Kommt drauf an wie die Webseite beschaffen ist. Es dürfen keine Zugriffe unter das Basedir führen. Auch keine include Kommandos. Ansonsten greift die open_basedir Regel und der Zugriff wird verwehrt. Dafür ist diese Regel ja da.

Man könnte höchstens in den Dateimanagern selbst dafür sorgen, daß die Benutzer nicht tiefer gehen können und das open_basedir so tief ansetzen, daß die Seite funktioniert.

Wenn allerdings in einem tieferen Verzeichnis nur die Konfigurationsdateien liegt und kein weiterer PHP Code könnte man die Konfigurationsdateien so anordnen, daß für jeden Benutzer eine getrennte Datei in einem separaten Verzeichnis vorliegt. Diese könnte man dann z.B. so einbinden:



php_admin_value open_basedir /opt/lampp/htdocs/crivi/portfolio/Benutzer1/:/opt/lampp/htdocs/crivi/config/Benutzer1/