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 _______________________________________________ pld-users-pl mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-users-pl
