• Apache ITK czyli sposób na osobnego użytkownika dla każdego vhosta bez cgi

    dodany przez Przemysław Sikora

    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 Apache

    service 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).

2 komentarze do “Apache ITK czyli sposób na osobnego użytkownika dla każdego vhosta bez cgi”

  1. hix pisze:

    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ć?

  2. centos pisze:

    A co na to logi?

Dodaj komentarz

Warto odwiedzić
Valid XHTML 1.0 Transitional centos.com.pl- mapa strony