Итак, имеем:
- Виртуальные хосты располагаются в директории /virtualhosts
- В каждой папке виртуального хоста созданы директории:
- Установлен модуль mod_security2 (http://www.modsecurity.org/)
public_html
logs
tmp
ServerSignature Off
ServerTokens Prod
До применения настроек видим примерно следующую картину:
# HEAD localhost | grep Serverпосле:
Server: Apache/2.2.20 (Ubuntu)
# HEAD localhost | grep Server
Server: Apache
Отключим глобально .htaccess и все опции:
AllowOverride NoneЗапретим apache работать с файлами вне разрешенных каталогов:
Options None
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
Выключаем лишние модули, включенные при установке. Посмотреть можно в текущей директории с конфигурацией apache:
grep -i -r LoadModule *
Для уменьшения влияния небольших DoS атак снизим значение Timeout до 45-60 секунд:
Значение по умолчанию 300 секунд. Как правило, это слишком много.Timeout 45
Можно также отключить глобально php и включить только для виртуальных хостов, где это требуется. Для этого убираем глобально и включаем в рамках виртуального хоста следующие опции:
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
Сделаем запуск виртуальных хостов от различных пользователей. Для этого нам потребуется mpm_itk_module. В Ubuntu для этого ставил пакет: apache2-mpm-itk.
Рассмотрим на примере некоторого myhost.ru, работающего от системного пользователя myhost.ru.
<VirtualHost *>В конфигурации virtualhost мы разрешили доступ к каталогу с файлами сайта и ограничили доступные для php каталоги. Некоторые сайты не дружат с safe_mode on - для них можно отключить и поставить off.
DocumentRoot /virtualhosts/myhost.ru/public_html/
ServerName myhost.ru
ServerAlias www.myhost.ru
<Directory "/virtualhosts/myhost.ru/public_html">
php_admin_value open_basedir /virtualhosts/myhost.ru/public_html:/virtualhosts/myhost.ru/tmp
php_admin_value doc_root /virtualhosts/myhost.ru/public_html
php_admin_value session.save_path "/virtualhosts/myhost.ru/tmp"
php_admin_value upload_tmp_dir "/virtualhosts/myhost.ru/tmp"
php_admin_flag safe_mode on
Order allow,deny
Allow from All
</Directory>
ErrorLog /virtualhosts/myhost.ru/logs/myhost.ru_error.log
CustomLog /virtualhosts/myhost.ru/logs/myhost.ru.log combined
<IfModule mpm_itk_module>
AssignUserId myhost.ru myhost.ru
</IfModule>
</VirtualHost>
Далее выставим права для директорий:
cd /virtualhosts/myhost.ruДля дополнительной защиты можно также использовать amon. Код и инструкция тут: http://www.lucaercoli.it/amon.html
chown root:root logs
chmod 755 logs
chown -R myhost.ru:myhost.ru ./public_html/
chown -R myhost.ru:myhost.ru ./tmp/
find ./public_html/ -type f -exec chmod 660 "{}" \;
find ./public_html/ -type d -exec chmod 770 "{}" \;
find ./tmp/ -type f -exec chmod 660 "{}" \;
find ./tmp/ -type d -exec chmod 770 "{}" \;
Комментариев нет:
Отправить комментарий