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