Archiwum dla kategorii “Administracja”

Dzisiaj w nocy aplikacja freshclam pobrała aktualizację definicji wirusowych do ClamAV. Od tej pory, ClamAV w każdym mailu napisanym w HTML’u, wykrywa „Exploit.PDF-9669„. Obecnie trwają pracę nad naprawą tego błędu.

Jako rozwiązanie doraźne, polecam Przeczytaj resztę wpisu »

Comments Komentarze są wyłączone

Postanowiłem na własne potrzeby stworzyć pewien szablon konfiguracji PHP opartej o Apache. Podstawowym celem było bezpieczeństwo rozwiązania, a jak udało mi się to zrealizować – życie pokaże. W prezentowanych przykładach pominąłem większość parametrów konfiguracyjnych, a więc podczas tworzenia własnego środowiska na bazie niniejszego artykuły zalecam dostosowanie ich do własnych potrzeb.

Na potrzeby niniejszej konfiguracji użyłem:

  • Linux Slackware w wersji 12. Starałem się nie używać ustawień i pakietów pochodzących z dystrybucji, żeby rozwiązanie było jak najbardziej uniwersalne
  • Apache w wersji 2.2.6
  • FastCGI w wersji 2.4.6
  • PHP w wersji 4.4.7 i 5.2.5

Przyjąłem również kilka założeń:

  • Skrypty PHP powinny być uruchamiane w zamkniętym środowisku (np: chroot() albo open_basedir())
  • Skrypty PHP powinny być uruchamiane z uprawnieniami właściciela pliku/virtualhosta
  • Każdy użytkownik powinien mieć indywidualny folder tmp i folder przechowywania plików sesji
  • Każdy użytkownik sam może wybrać wersji PHP
  • Dla każdego virtualhosta powinien istnieć oddzielny plik php.ini
  • Tworzone rozwiązanie powinno być jak najbardziej uniwersalne. Jednocześnie powinno oferować administratorowi wygodę zarządzania

Przeczytaj resztę wpisu »

Comments 16 komentarzy »

W PHP 5 wprowadzono pewne uproszczenie w tworzeniu plików php.ini np.: dla każdego virtualhosta oddzielnie. Zakładając, że mamy swój ulubiony plik php.ini, umieszczamy w nim na początku coś takiego:

main_domain = "host1.example.com"
main_root_dir = "/var/www/"${main_domain}

Poniżej opisanych dyrektyw, możemy posługiwać się zmiennymi ${main_domain} i ${main_root_dir} np.: w taki sposób:

open_basedir = ${main_root_dir}":/usr/local/php5"
error_log = ${main_root_dir}"/error_log"
upload_tmp_dir = ${main_root_dir}"/tmp"
sendmail_path = "/usr/sbin/sendmail -t -i -f info@"${main_domain}
session.save_path = ${main_root_dir]"/tmp"

Niestety opcja ta nie jest dostępna w PHP 4 i w związku z zamknięciem rozwoju tej wersji, nie zostanie już dodana.

Comments Komentarze są wyłączone

Chciałem sprawdzić czy można użyć kilku plików php.ini zakładając, że każdy kolejny plik nadpisuje ustawienia z plików poprzednich. Testowałem PHP w wersji 4.4.7 i 5.2.5 skompilowane jako CGI ze wsparciem dla FastCGI. Podczas konfiguracji użyłem między innymi parametrów:

--sysconfdir=/etc/php5/cgi
--prefix=/usr/local/php5
--enable-fastcgi

Po krótkim debugowaniu aplikacji okazało się w jakiej kolejności PHP poszukuje plików ini:

./php-cgi-fcgi.ini
/usr/local/php5/bin/php-cgi-fcgi.ini
/etc/php5/cgi/php-cgi-fcgi.ini
./php.ini
/usr/local/php5/bin/php.ini
/etc/php5/cgi/php.ini

Wyżej wymieniona kolejność jest taka sama dla PHP uruchamianego z poziomu FastCGI/CGI. W przypadku pominięcia parametru --enable-fastcgi zmianie ulega nazwa pliku php-cgi-fcgi.ini na php-cgi.ini.

W przypadku PHP uruchomionego jako moduł Apache sprawa ma się trochę inaczej:

./php-apache.ini
/etc/php5/apache/php-apache.ini
./php.ini
/etc/php5/apache/php.ini

(PHP było skompilowane z opcją --sysconfdir=/etc/php5/apache.)

Niestety testy które przeprowadziłem wykazały, że PHP po znalezieniu pierwszego pliku ini pomija dalsze lokalizacje. Planowałem na podstawie tego mechanizmu dać użytkownikom możliwość posiadania własnego pliku php.ini z gwarancją, iż niektóre parametry były by zawsze globalnie nadpisywane (np: open_basedir, czy disable_functions).

Comments Komentarze są wyłączone