Счетчик

Поисковый анализ сайта
яндекс.ћетрика
Cервер и сайт запущен 2011.02.01 на Debian

Строим оборону для Apache2, PHP, MySQL

Скрываем информацию об операционной системе, версии apache, php на страницах 404, 500, 403 и т.д.
/etc/apache2/conf.d/security

ServerSignature Off
ServerTokens Off (Отвечает за отображение информации о сервере в http заголовках)
ServerTokens Prod
Редактирем файл php.ini:
expose_php = Off (Отвечает за показ версии интерпретатора php. Может принимать значения Off/On. Его тоже убираем с глаз долой)

Защита через ограничение ряда функций в PHP.
В конфигурационном файле /etc/php5/apache2/php.ini, и редактируем следующие переменные:
safe_mode_exec_dir=/home/http — разрешаем запуск программ только из специального каталога.
disable_functions=system — отключаем unix функции (killall, chown, rm и т.д.)
safe_mode on — запретить выполнять команды на сервере с помощью php, но мы все равно сможем просматривать и редактировать шеллом файлы на которые у нас есть доступ. А доступ у нас есть на все файлы на которые есть доступ у Apache. В Ubuntu и в Debian Apache работает от имени пользователя www-data и группы www-data.Так что мы имеем доступ на чтение на все файлы c правами 644, даже если они пренадлежат другим пользователям и полный доступ на файлы и директории, принадлежащие www-data.

Защита через ограничение ряда функций в Apache.
Hахожу файл конфигурации виртуального хоста, и внутри директивы VirtualHost добавляю разрешение обработки скриптов PHP php_admin_flag engine on. Осталось задать значения переменных PHP-машины open_basedir, include_path, upload_tmp_dir, safe_mode_include_dir для ограничения области работы с файлами моим домашним каталогом.
php_admin_flag engine on
php_admin_value open_basedir /srv/~
php_admin_value include_path .:/srv/~
php_admin_value upload_tmp_dir /srv/~/www/tmp
php_admin_value safe_mode_include_dir /srv/~/www/tmp

Запуск виртуальных хостов от разных учетных записей
Необходимо разграничить доступ на уровне apache. По сути, нужно, что бы Apache запускался для каждого пользователя под своим логино, для чего это нужно? Ситуация: У нас есть сервер, где много разных хостов и нужно разграничить доступ.

Установка apache2-mpm-itk может удалить apache2 и apache2-mpm-prefork

Устанавливаем:
$ sudo apt-get install apache2-mpm-itk

Далее, прописываем к каждому виртуальному хосту следующее:

<IfModule mpm_itk_module>
AssignUserId USER GROUP
</IfModule>

Создаем новую группу:
$sudo groupadd friend

Создаем пользователя vasya в группе friend:
$sudo useradd -s /bin/false -d /home/vasya -m -g friend vasya

Далее, необходимо установить права владения файлов у виртуальных хостов:
$sudo chown MYUSER:MYGROUP /var/www/my-virtualhost/ -R

Активировать этот модуль через a2enmod НЕ нужно.

Перезапускаем Apache2:
$ sudo /etc/init.d/apache2 reload
Вот и все! По крайней мере от дурака мы с вами защитились =)

Добавить комментарий


Защитный код
Обновить