
Оптимизация хостинга под битрикс, Требования сканера безопасности
Сканер безопасности 1С-Битрикс достаточно требовательная к хостингу штука. Замечу, требования адекватные по большей части. Не все из них могут быть выполнены без вашего участия, в связи с относительностью путей к некоторым директивам и т. д. И не на все их них существует достаточное описание к устранению. А главное у вас должен быть достаточно широкий перечень доступов к серверу и понимание, что и куда следует писать. Давайте разберем некоторые из них:
- Стартовая конфигурация сервера nginx(прокси)+apache сервер
- Панель управления ispconfig3 дописанный под nginx
- php 5.4.14 актуальная на данный момент в стабильном репозитории.
- Представление php FastCGI/apache
Убрать все предупреждения по безопасности сайта, сдать все тесты полностью на 100%
Предварительно сервер уже подстроен под 1С-Битрикс и достаточно существенно, поскольку на нем уже не первый год лежат данные сайты. Однако нет места совершенству и мы задались мыслью отработать все предупреждения систем безопасности 1С-Битрикс. Вот некоторые из них:
Используется опасная/устаревшая версия php

Первое на что мы обратим внимание, как на критическое замечание «php опасная устаревшая версия». Тут после переписки со службой поддержки и просьбы понизить требуемый уровень php до реально существующих в стабильных ветках репозиториев ни к чему не привели;(
В общем в этом вопросе кина не будет. для устранения данного требования придется обновлять php с нестабильной ветки репозиториев или собирать ручками. В дальнейшем разумеется таким же способом. В моем случае я доставил дополнительную версию php 4.5 дабы менять их можно будет с админки хостинга, а к 5 версии претензий битрикс не имеет.
Разрешено чтение файлов по URL (URL wrappers)

allow_url_fopen = Off прописываем сразу в php.ini, поскольку ispconfig3 работает по умолчанию с представлением php FastCGI, и мы не сможем php_value прописать в .htaccess.
В случае php.ini, вид представления php не имеет значения. Если же вы используете другую панель управления, обратите внимание что в deb семействе 3 конфига php.ini, вписывайте директивы в соответствующей или можно сделать проще:
find /etc/php5 -name 'php.ini' -exec sed -i 's/allow_url_fopen = On/allow_url_fopen = Off/g' "{}" \; /etc/init.d/apache2 restart
Включить веб-антивирус

Включение веб-антивируса в 1С-Битрикс auto_prepend_file. Поскольку мы редактируем php.ini то недурно будет сразу кинуть в него и веб-антивирус. В моем случае это:
auto_prepend_file = /var/www/medver.ru/web/bitrix/modules/security/tools/start.php
Путь требуется изменить на ваш. Сами понимаете хостер за вас этого не сделает. Поскольку он не знает какой вы используете движок. В моем же случае, мы допишем в генератор php.ini
Разрешено отображение сайта во фрейме с произвольного домена

add_header X-Frame-Options SAMEORIGIN; — добавляем данную строчку в nginx, так как nginx стоит на выходе (для битрикса принципиален front-end). Если мы поставим его на apache толку не будет. По-хорошему, строку нужно закинуть в оба конфига. В админке ispconfig3, если вы ставили по моему мануалу, просто саму директиву. Если вы создавали конфиги руками (читай, сами), то вписываем строку в server, а не location.
server { add_header X-Frame-Options SAMEORIGIN; }
Включен Automatic MME Type Detection

Аналогичная ситуация, поскольку директива Header set X-Content-Type-Options nosniff. C того же модуля можно вписать их вместе.
Для apache2:
<IfModule headers_module> Header set X-Content-Type-Options nosniff Header set X-Frame-Options SAMEORIGIN </IfModule>
В Nginx просто вписываем рядом.
Server { add_header X-Content-Type-Options nosniff; add_header X-Frame-Options SAMEORIGIN; }
htaccess файлы не должны обрабатываться Apache в директории хранения загружаемых файлов

Теперь чуть посложней. Исключив .htaccess в папке upload, мы автоматически получим дополнительную ошибку, исполняются php файлы, по сему нам придется перенести весь .htaccess из папки upload в apache, а для этого нам придется явно указать папку в которой будет работать это правило, поскольку в .htaccess этого не требовалось. В противном случае мы запретим исполнение php файлов на всем сайте.
<Directory /var/www/medver.ru/web/upload> AllowOverride none <IfModule mod_mime.c> <Files ~ \.(php|php3|php4|php5|php6|phtml|pl|asp|aspx|cgi|dll|exe|shtm|shtml|fcg|fcgi|fpl|asmx|pht|py|psp|rb|var)> SetHandler text/plain ForceType text/plain </Files> </IfModule> </Directory>
PHP скрипты выполняются в директории хранения загружаемых файлов

Собственно, ошибка появляется когда вы отключили .htaccess в папке upload решение смотрим выше, поскольку оно решает две проблемы сразу. В результате у меня получилось следующее:

Теперь рассмотрим как это сделать для всех сайтов одновременно.
Добавим настройки для nginx
vim /usr/local/ispconfig/server/conf/nginx_reverse_proxy_plugin.vhost.conf.master
находим строчку include /etc/nginx/locations.d/*.conf; и вставляем перед ней код. Должно получиться так:
#для битрикс монитора add_header X-Content-Type-Options nosniff; add_header X-Frame-Options SAMEORIGIN; include /etc/nginx/locations.d/*.conf;
Далее добавляем apache2в генератор хостов
vim /usr/local/ispconfig/server/conf/vhost.conf.master
По той же схеме вставляем внизу конфига дополнительный кусок. Но уже с переменными, поскольку нам требуется путь до сайта.
<IfModule headers_module> Header set X-Content-Type-Options nosniff Header set X-Frame-Options SAMEORIGIN </IfModule> <Directory {tmpl_var name='web_basedir'}/{tmpl_var name='domain'}/web/upload> AllowOverride none <IfModule mod_mime.c> <Files ~ \.(php|php3|php4|php5|php6|phtml|pl|asp|aspx|cgi|dll|exe|shtm|shtml|fcg|fcgi|fpl|asmx|pht|py|psp|rb|var)> SetHandler text/plain ForceType text/plain ;</Files> </IfModule> <IfModule mod_php5.c> php_flag engine off </IfModule> </Directory>
Дополнительно, по ходу дела, тестируя работоспособность скриптов на разных сайтах, пришлось докинуть директиву во все php.ini
session.entropy_file = /dev/urandom session.entropy_length = 128
Оставить комментарий