|
konfiguracja php - który wariant bezpieczniejszy
zlywilk - 09-05-2009 11:08
Maszyna na której kilkunastu użytkowników uruchamia swoje aplikacje php.
Dwie opcje:lWłączamy mechanizm pozwalający skryptom php działać z uprawnieniami użytkownika, który jest ich właścicielem (np. suphp).[list:07d057e7cc]+ aplikacja jednego użytkownika nie może grzebać w plikach należących do innego + pliki tworzone przez skrypty php mogą być usuwane/zmieniane przez ftp i vice-versa
- skrypty php mają prawa do modyfikowania samych siebie - znacznie gorsza wydajnośćl
[*]Zostawiamy domyślną konfiguracje. Skrypty php działają z uprawnieniami użytkownika www-data.l+ skrypty php mogą zmieniać tylko utworzone przez siebie pliki + mniej problematyczna konfiguracja
- brak uprawnień do nadpisywania eFTePem plików stworzonych przez aplikacje php - skrypty php jednego użytkownika mogą grzebać w plikach innegol
Ten ostatni minus jest znaczący. Jeżeli aplikacja jednego z użytkowników będzie zawierała lukę to włamywacz prawie automatycznie zyskuje dostęp do wszystkich pozostałych. Czy to zagrożenie da się jakoś ograniczyć? Jak to rozwiązują dostawcy usług hostingowych?[/list:o:07d057e7cc]Który wariant byście wybrali? A może jest jakieś lepsze rozwiązanie? Czy ma sens uruchomienie osobnej instancji apache dla każdego użytkownika?
zlywilk - 30-05-2009 12:48
Trochę poeksperymentowałem i stanęło na czymś takim:
1. Nie bawię się w żadne suphp itp. Php mam uruchomione jako moduł Apache. Zależy mi na wydajności, a ramu maszyna ma więcej niż potrzebuje.
2. Użytkownicy tworzą pliki chmod 640. Użytkownik www-data należy do grup wszystkich użytkowników. Tym sposobem użytkownicy nie mogą grzebać nawzajem w swoich plikach, a mimo to strony mogą być serwowane przez serwer php. Użytkownicy mogą manipulować plikami tworzonymi przez www-data bo są właścicielami katalogów, w których są tworzone te pliki.
3. Problem dostępu do plików innych przez spreparowany skrypt php rozwiązuje dyrektywa open_basedir definiowana dla każdego vhosta oddzielnie. Dodatkowo zastosowałem bardzo restrykcyjne ograniczenia używanych funkcji za pomocą suhosin (function blacklist). Zwykłe disable_function się nie sprawdza bo nie można różnicować uprawnień (per vhost).
Może idea się komuś przyda. Uwagi mile widziane.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|