С демона по ниткеAndrushockXakep, номер #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, а также не только для персональных каталогов пользователей, но и для виртуальных хостов. |


















































































































