pld na hosting PHP - jak rozdzielacie klientów?
    Wojciech Błaszkowski 
    wojciech w blaszkowski.com
       
    Pią, 12 Gru 2008, 10:37:40 CET
    
    
  
Dnia piątek 12 grudzień 2008, Jacek Osiecki napisał:
> Witam,
Hej,
> Czy ktoś przerabiał temat zrobienia bezpiecznego hostingu php?
> Chodzi o to, by uniemożliwić klientom zaglądanie do katalogów sąsiadów...
> Na razie mam to rozwiązane tak:
>   - vsftpd, klient po zalogowaniu ma HOME jako /
>   - każdy klient ma HOME w katalogu:
>     /home/clients/4c4712a4141d261ec0ca8f9037950685/nazwaklienta,
>     przy czym /home/clients ma usera root.root i 711
Uzywam pure-ftpd. Loginy zakładane są przez interfejs php i trzymane w bazie 
danych. pure-ftpd pobiera sobie te dane i umozliwia logowanie. 
Flaga "ChrootEveryone" ustawiona na "yes".
Mamy:
/home/vhosts/$login/$domena
Zatem login ma możliwość wglądu wyłącznie do własnych $domena. Config dla 
apache generowany również z bazy danych, co załatwia sprawę m.in. 
DocumentRoot.
> Niby nie zabezpiecza to fizycznie przed wejściem do sąsiada, teoretycznie
> "wystarczy" się wstrzelić w nazwę katalogu (oczywiście katalog w
> /home/clients
> jest generowany dla każdego klienta) ale biorąc pod uwagę ilość możliwych
> kombinacji to jest to mało prawdopodobne.
Bardziej martwiłbym się tym, że jeśli klient będzie marudził o safe_mode=off w 
php.ini bo nie może zainstalować sobie osCommerce (lub inny powód) to mu się 
to da. Jeśli już mu się da, to może sobie zrobić skrypt myszkujący 
po /home/vhosts/ który to skrypt będzie szukał config.php i zapisywał/wysyłał 
gdzieś jego zawartość.
Rozwiązanie AppArmor.
> Pierwszy problem to to że samo rozwiązanie nie jest zbyt eleganckie, jak
> ktoś chce sobie podawać ścieżki bezwzględne to będzie miał problem
> (oczywiście klienci nie dostają shella).
> Drugi problem to mała wygoda dla mnie - co prawda jak jestem zalogowany na
> serwerze to wystarczy wejść cd ~nazwaklienta, ale jak np. mam uniwersalnego
> usera ftp do wuwy to nijak nie dotrę do katalogu klienta - muszę najpierw
> sprawdzić jego $HOME w /etc/passwd...
> Najfajniej by było zrobić tak, żeby php widziało $HOME jako / - tak jak to
> jest rozwiązane bodajże w home.pl... tylko że oni mają własnoręcznie
> napisany serwer www :)
>
> Jak Wy to robicie?
j.w.
> Wiem że można np. zrobić wszędzie uruchamianie PHP jako 
> CGI i ustawienie takich uprawnień żeby jeden user nie miał szans zajrzeć do
> innego, ale to się wiąże ze znacznym spowolnieniem działania PHPa na co
> raczej nie mogę sobie pozwolić.
>
> Jakieś inne pomysły?
>
> Pozdrawiam,
-- 
Pozdrawiam, Best regards, Mit freundlichen Grüßen,
Wojciech "Wojtosz" Błaszkowski
    
    
Więcej informacji o liście dyskusyjnej pld-users-pl