-
Apache ITK czyli sposób na osobnego użytkownika dla każdego vhosta bez cgi
Wszyscy wiemy jak ważne jest bezpieczeństwo. Wiele o tym się mówi, ale nie każdy zdaje sobie sprawę jak to osiągnąć w środowiskach z dużą ilością „nieznanych” użytkowników. Mam tu na myśli hosting współdzielony. Dotąd chyba najlepszą metodą w moim mniemaniu było skorzystanie fcgi/fpm, co umożliwiało pewną separację uprawnień dla usług webowych. Ostatnio natrafiłem na dodatkowy moduł do Apache o nazwie „itk”. Umożliwia on tylko, albo aż na ustawienia użytkownika i grupy z uprawnieniami których będzie chodził Apache dla zapytań odnoszących się do danego vhosta.
Tutaj w porównaniu do suExeca, oddzielny użytkownik będzie „tyczył” się wszystkich plików, nie tylko php. Dosyć słów wstępu, czas zacząć zabawę 🙂 Niezbędne okaże się repozytorium EPEL (CentOS 6) lub Webtatic (CentOS 5), a potem ….
yum install httpd-itk
Następnie musimy zmienić tryb w którym będzie działać Apache (domyślny to prefork)
vim /etc/sysconfig/httpd
zamieniamy
#HTTPD=/usr/sbin/httpd.worker
na
HTTPD=/usr/sbin/httpd.itk
Dodajemy plik konfiguracyjny modułu itk dla Apache jeśli go nie ma.vim /etc/httpd/conf.d/itk.conf
<IfModule itk.c>
StartServers 2
MinSpareServers 2
MaxSpareServers 10
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
Ostatnim krokiem jest edycja pliku zawierającego vhosty np. virtual.conf:/etc/httpd/conf.d/virtual.conf
przykładowy vhost z dopisaną konfguracją użytkownika (AssignUserId):
<VirtualHost *:80>
ServerName nazwastrony.com
DocumentRoot /www/nazwastrony.com/html
AssignUserId test test
TransferLog /var/log/httpd/nazwastrony.com-access_log
ErrorLog /var/log/httpd/nazwastrony.com-error_log
</VirtualHost>
Po zapisaniu restartujemy serwer Apacheservice httpd restart
Najprostszym sposobem na sprawdzenie, czy nowa konfiguracja działa jest wejście na odpowiednio napisaną "stronę" o następującej treści:
<code>
<?php
print shell_exec( 'whoami' );
?>
W naszym przypadku, w oknie przeglądarki powinno pojawić się słowo „test”. Oznacza to, że się udało. P.S. Procesy serwera www „httpd.itk” chodzą z root-a, ale mają obniżone uprawnienia. Dzieje się tak, ponieważ muszą mieć możliwość do zrobienie setuida na wskazanego użytkownika. PHP może być używany jako moduł (mod_php).
Wszystko niby działa fajnie pięknie, ale jak pójdziemy dalej to coś złego dzieje się z aplikacjami php. phpmyadmin nie ładuje się, joomla przy instalacji wyskakuje tylko ekran startowy i dalej nic nie chce się załadować.
Robiłem wszystko zgodnie z tutorialem, może jeszcze coś trzeba doinstalować?
A co na to logi?