konfiguracja php - który wariant bezpieczniejszy

Konfiguracja serwerów, usług, itp.
zlywilk
Posty: 2
Rejestracja: 09 maja 2009, 10:31

konfiguracja php - który wariant bezpieczniejszy

Post autor: zlywilk »

Maszyna na której kilkunastu użytkowników uruchamia swoje aplikacje php.

Dwie opcje:
  1. Włą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ść
[*]Zostawiamy domyślną konfiguracje. Skrypty php działają z uprawnieniami użytkownika www-data.
  • + 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 innego
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
Posty: 2
Rejestracja: 09 maja 2009, 10:31

Post autor: zlywilk »

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.
ODPOWIEDZ