[Php] Zelf hosten > Beveiligen

Pagina: 1
Acties:

  • FolkertR
  • Registratie: Juni 2001
  • Laatst online: 07-11-2024
Eej!

ik draai mijn eigen webserver en host ook een paar websites. De users kunnen via ftp uploaden naar hun eigen directory, maar daar zit ik met een probleem. Ze kunnen in hun (php) scripts gewoon naar bovenliggende directories gaan en daar de boel veranderen!
code:
1
2
3
4
5
6
7
8
HTDOCS
|-index.htm
|-image.gif
|-MEMBERS
  |-USER1
  | |-script.php
  |-USER2
    |-script.php

Ik wil dus dat als ze scripts in hun map (bv user1) zetten dat ze dan NIET de bestanden in de map members kunnen opvragen!
Dit heb ik geprobeert met open_basedir, maar dat gaf 2 problemen. Ten eerste, als ik instelde dat de open_basedir HTDOCS/MEMBERS was dan kon bijv USER1 de bestanden van USER2 veranderen met ../USER2/script.php
En ten tweede kon ik door open_basedir niet meer in mijn eigen php files komen in de map htdocs!

weet dus iemand hoe ik ervoor kan zorgen dat users met hun scripts niet bestanden in andere dirs in de map MEMBERS kunnen editen of uitlezen ?

PS: de functie fopen() oid beveiligen is geen optie. Mijn eigen scripts (in htdocs) gebruiken deze functie ook.

Verwijderd

waarom stel je je rwx permissies niet gewoon goed in?


Zodat iedereen niet in andermans map kan...
Zorg wel apache er wel in mag!

drwx------ 45 sander sander 4096 feb 7 13:19 sander

Verwijderd

Op donderdag 07 februari 2002 14:25 schreef freebie het volgende:
waarom stel je je rwx permissies niet gewoon goed in?


Zodat iedereen niet in andermans map kan...
Zorg wel apache er wel in mag!

drwx------ 45 sander sander 4096 feb 7 13:19 sander
PHP draait toch als user apache, dus als die aan de files van user A kan, kan die toch ook aan die van user B ?

Verwijderd

Op donderdag 07 februari 2002 14:27 schreef Melvin het volgende:

[..]

PHP draait toch als user apache, dus als die aan de files van user A kan, kan die toch ook aan die van user B ?
Klopt, maar dan kun je er toch alleen maar bij vanuit het web en niet via ftp als gebruiker.

Verwijderd

Op donderdag 07 februari 2002 14:30 schreef freebie het volgende:

[..]

Klopt, maar dan kun je er toch alleen maar bij vanuit het web en niet via ftp als gebruiker.
Da's nog nie echt secure dan he :)

Je ftp secure instellen moet niet via die permissies, je geeft beter aan dat je je user locked in zijn homerdir. Dat gaat met elke degelijke ftp server.

  • FolkertR
  • Registratie: Juni 2001
  • Laatst online: 07-11-2024
code:
1
2
3
4
5
When safe_mode is on, PHP checks to see if the owner
of the current script matches the owner of the file to be
operated on by a file function. For example:
-rw-rw-r--    1 rasmus   rasmus  33 Jul  1 19:20 script.php
-rw-r--r--    1 root     root    1116 May 26 18:01 /etc/passwd

Dit stond in de docs van php. Maar hoe stel je deze rights in ? en hoe geef je aan wie welke user is enzo ?

  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Ja, maar php biedt dan ook weer voldoende file functions en een command passthru() waarmee je dan wel weer een hoop kunt.

Het is gewoon erg lastig om dat met apache / linux goed dicht te krijgen, hier hebben zowat alle grote hostingproviders ook last van.

Everyone complains of his memory, no one of his judgement.


  • FolkertR
  • Registratie: Juni 2001
  • Laatst online: 07-11-2024
Op donderdag 07 februari 2002 14:33 schreef Melvin het volgende:

[..]

Da's nog nie echt secure dan he :)

Je ftp secure instellen moet niet via die permissies, je geeft beter aan dat je je user locked in zijn homerdir. Dat gaat met elke degelijke ftp server.
ftp zit wel dicht... het gaat me erom dat users niet met scripts aan mijn bestanden kunnen zitten door middel van file functions!

Verwijderd

Op donderdag 07 februari 2002 14:36 schreef FolkertR het volgende:

[..]

ftp zit wel dicht... het gaat me erom dat users niet met scripts aan mijn bestanden kunnen zitten door middel van file functions!
Ja dat weet ik, maar als jij je dir op 700 zet dan kan niemand er aan, ook apache niet en krijg je dus geen site te zien.

edit:

En safe_mode in PHP moet je gewoon altijd en overal aanzetten !

  • EgoH
  • Registratie: Oktober 2001
  • Laatst online: 01-04 08:11
Ik denk niet dat dit erg makkelijk goed op te lossen is.
Zowel met perl en php (misschien asp ook?) heb je dit probleem.
Verschillende grot hosting bedrijven bijv hypermart hebben dit probleem ook.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 03-05 20:49

Creepy

Tactical Espionage Splatterer

directorys zet je allee voor jezelf op rwx, group en other alleen op x! (dus rwx--x--x). X (het execute recht) is zodat je de dir in kan.. maar omdat je op die dir geen leesrechten hebt, kan je dus geen directory listing opvragen. Dus browsen wordt onmogelijk

Files zet je dan op rw-r--r-- (en de execute rechten er eventueel ook nog bij.

Nu kan alleen iemand files lezen als hij de precies naam van de file weet

nog een betere oplossing: maak een group apache (waaronder dus apache, en dus ook PHP gaat draaien)

en zet de rechten dan zo dat alleen de user van wie de files zijn kan lezen/schrijven, iedereen in de group apache alleen kan lezen (of alleen x'en op een dir) en de rest niks.
Je moet dan ook de files zo zetten dat ze aan de correcte user behoren, en aan de group apache.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

safemode van PHP lost dit (gedeeltelijk op) maar er zitten ook al weer lekken in geloof ik...

  • igmar
  • Registratie: April 2000
  • Laatst online: 20-04 22:06

igmar

ISO20022

Ik denk niet dat dit erg makkelijk goed op te lossen is.
Zowel met perl en php (misschien asp ook?) heb je dit probleem.
Verschillende grot hosting bedrijven bijv hypermart hebben dit probleem ook.
In Apache 2.0 is dit opgelost, en hier onder Apache 1.3.x lopen alle scripts onder hun eigen userID :)
Pagina: 1