С демона по нитке

Andrushock

Xakep, номер #051, стр. 051-076-1

(andrushock@real.xakep.ru)

Обзор интересных секьюрных фич

<Страсти по цгайкам>

Исходя из соображений безопасности, web-сервер Apache запускается и работает с правами непривилегированного пользователя nobody из группы nobody. В некоторых случаях на стороне сервера требуется, используя cgi-сценарии, динамически изменять содержимое документов от имени пользователя со специальными привилегиями, а также предотвращать возможность исполнения cgi-программ с неверно заданными правами доступа как к ним самим, так и к каталогам, в которых они находятся. Для решения такого рода задач служит механизм suExec. Проверить, включена ли поддержка cgi-анализатора в web-сервере можно с помощью команды:

$ /usr/local/apache/bin/httpd -l

[skipped]

suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec

По умолчанию, модуль suExec не собирается во время установки индейца. Для его включения необходимо переконфигурировать и перекомпилировать Apache с указанием учетной записи (в данном случае hoster) для выполняемых cgi-сценариев, корневой директории, файла для журналирования событий, подкаталога пользователя, а также минимальных групповых и пользовательских идентификаторов, с которыми будет производиться работа. Но сначала добавим в систему новые группу и учетную запись hoster:

# groupadd -g 1001 hoster

# useradd -c 'suExec user' -d /var/www/users/hoster -g hoster -s /bin/false -u 1001 hoster

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --datadir=/var/www --logfiledir=/var/log/httpd --enable-suexec --suexec-caller=hoster --suexec-docroot=/var/www/htdocs --suexec-logfile=/var/log/httpd/suexec.log --suexec-userdir=cgi-wrap --suexec-uidmin=1000 --suexec-gidmin=1000 --suexec-safepath=/usr/bin

$ make

# make install

$ /usr/local/apache/bin/httpd -l

[skipped]

suexec: enabled; valid wrapper /usr/local/apache/bin/suexec

Все, механизм suExec подключен, осталось добавить следующие строки в главный конфигурационный файл web-сервера:

# vi /etc/httpd/httpd.conf

<IfModule mod_userdir.c>

User hoster

Group hoster

UserDir cgi-wrap

AddHandler cgi-script .cgi .pl

</IfModule>

<Directory ~ /var/www/users/[a-z]+/cgi-wrap>

Options ExecCGI

</Directory>

Запустим демона Apache:

# /usr/local/apache/bin/apachectl start

Теперь создадим в каталоге /var/www/users/hoster/cgi-wrap простенький cgi-сценарий:

# touch test.cgi

# vi test.cgi

#!/usr/bin/perl

print "Content-type: text/html\n\n";

foreach $key (keys %ENV) {

print "$key --> $ENV{$key}<br>";

}

Определим для него права доступа:

# chown hoster:hoster /var/www/users/hoster/cgi-wrap/test.cgi

# chmod 755 /var/www/users/hoster/cgi-wrap/test.cgi

И для проверки правильности всех настроек скормим браузеру следующий URL: http://www.shellbox.ru/~hoster/test.cgi

При успешном выполнении сценария в журнальном файле /var/log/httpd/suexec.log появится запись типа:

[2002-10-11 01:24:22]: info: (target/actual) uid: (hoster/hoster) gid: (hoster/hoster) cmd: test.cgi

Следует отметить, что применять механизм suExec можно и для серверных вставок ssi, а также не только для персональных каталогов пользователей, но и для виртуальных хостов.

Содержание  Вперед на стр. 051-076-2

Выпуски журнала "Xakep"
Журнал Хакер. Содержание номера #001Журнал Хакер. Содержание номера #002Журнал Хакер. Содержание номера #003Журнал Хакер. Содержание номера #004Журнал Хакер. Содержание номера #005Журнал Хакер. Содержание номера #006Журнал Хакер. Содержание номера #007Журнал Хакер. Содержание номера #008Журнал Хакер. Содержание номера #009Журнал Хакер. Содержание номера #010Журнал Хакер. Содержание номера #011Журнал Хакер. Содержание номера #012Журнал Хакер. Содержание номера #013Журнал Хакер. Содержание номера #014Журнал Хакер. Содержание номера #015Журнал Хакер. Содержание номера #016Журнал Хакер. Содержание номера #017Журнал Хакер. Содержание номера #018Журнал Хакер. Содержание номера #019Журнал Хакер. Содержание номера #020Журнал Хакер. Содержание номера #021Журнал Хакер. Содержание номера #022Журнал Хакер. Содержание номера #023Журнал Хакер. Содержание номера #024Журнал Хакер. Содержание номера #025Журнал Хакер. Содержание номера #026Журнал Хакер. Содержание номера #027Журнал Хакер. Содержание номера #028Журнал Хакер. Содержание номера #029Журнал Хакер. Содержание номера #030Журнал Хакер. Содержание номера #031Журнал Хакер. Содержание номера #032Журнал Хакер. Содержание номера #033Журнал Хакер. Содержание номера #034Журнал Хакер. Содержание номера #035Журнал Хакер. Содержание номера #036Журнал Хакер. Содержание номера #037Журнал Хакер. Содержание номера #038Журнал Хакер. Содержание номера #039Журнал Хакер. Содержание номера #040Журнал Хакер. Содержание номера #041Журнал Хакер. Содержание номера #042Журнал Хакер. Содержание номера #043Журнал Хакер. Содержание номера #044Журнал Хакер. Содержание номера #045Журнал Хакер. Содержание номера #046Журнал Хакер. Содержание номера #047Журнал Хакер. Содержание номера #048Журнал Хакер. Содержание номера #049Журнал Хакер. Содержание номера #050Журнал Хакер. Содержание номера #051Журнал Хакер. Содержание номера #052Журнал Хакер. Содержание номера #053Журнал Хакер. Содержание номера #054Журнал Хакер. Содержание номера #055Журнал Хакер. Содержание номера #056Журнал Хакер. Содержание номера #057Журнал Хакер. Содержание номера #058Журнал Хакер. Содержание номера #059Журнал Хакер. Содержание номера #060Журнал Хакер. Содержание номера #061Журнал Хакер. Содержание номера #062Журнал Хакер. Содержание номера #063Журнал Хакер. Содержание номера #064Журнал Хакер. Содержание номера #065Журнал Хакер. Содержание номера #066Журнал Хакер. Содержание номера #067Журнал Хакер. Содержание номера #068Журнал Хакер. Содержание номера #069Журнал Хакер. Содержание номера #070Журнал Хакер. Содержание номера #071Журнал Хакер. Содержание номера #072Журнал Хакер. Содержание номера #073Журнал Хакер. Содержание номера #074Журнал Хакер. Содержание номера #075Журнал Хакер. Содержание номера #076Журнал Хакер. Содержание номера #077Журнал Хакер. Содержание номера #078Журнал Хакер. Содержание номера #079Журнал Хакер. Содержание номера #080Журнал Хакер. Содержание номера #081Журнал Хакер. Содержание номера #082Журнал Хакер. Содержание номера #083Журнал Хакер. Содержание номера #084Журнал Хакер. Содержание номера #085Журнал Хакер. Содержание номера #086Журнал Хакер. Содержание номера #087Журнал Хакер. Содержание номера #088Журнал Хакер. Содержание номера #089Журнал Хакер. Содержание номера #090Журнал Хакер. Содержание номера #091Журнал Хакер. Содержание номера #092Журнал Хакер. Содержание номера #093Журнал Хакер. Содержание номера #094Журнал Хакер. Содержание номера #095Журнал Хакер. Содержание номера #096Журнал Хакер. Содержание номера #097Журнал Хакер. Содержание номера #098Журнал Хакер. Содержание номера #099Журнал Хакер. Содержание номера #100Журнал Хакер. Содержание номера #101Журнал Хакер. Содержание номера #102Журнал Хакер. Содержание номера #103Журнал Хакер. Содержание номера #104Журнал Хакер. Содержание номера #105Журнал Хакер. Содержание номера #106Журнал Хакер. Содержание номера #107Журнал Хакер. Содержание номера #108Журнал Хакер. Содержание номера #109Журнал Хакер. Содержание номера #110Журнал Хакер. Содержание номера #111Журнал Хакер. Содержание номера #112Журнал Хакер. Содержание номера #113Журнал Хакер. Содержание номера #114