Как разместить Drupal_Security_Do_Not_Remove_See_SA_ * в httpd.conf вместо .htaccess

Я запускаю несколько установок Drupal 7 на выделенном сервере с CentOS 6.4 и Apache 2 (пакет httpd-2.2.15-29.el6.centos.x86_64).

Интересно, как правильно настроить обработчики Drupal_Security_Do_Not_Remove_ * в моем /etc/httpd/conf/httpd.conf, так как файлы .htaccess отключены на моем сервере AllowOverride None.

В настоящее время у меня есть следующие разделы в httpd.conf для каждого из моих сайтов:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
......
<VirtualHost 123.123.123.123:80>
    DocumentRoot /var/www/html/mysite1.de
    ServerName mysite1.de
    ServerAlias mysite1.de *.mysite1.de

    <IfModule mod_rewrite.c>
        <Directory "/var/www/html/mysite1.de">
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_URI} !=/favicon.ico
            RewriteRule ^ index.php [L]
        </Directory>
    </IfModule>
</VirtualHost>

И рекомендуемые настройки для .htaccess: здесь

Options None
Options +FollowSymLinks

SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>

<IfModule mod_php5.c>
  php_flag engine off
</IfModule>

Должен ли результат в моем случае быть следующим?

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
......
<VirtualHost 123.123.123.123:80>
    DocumentRoot /var/www/html/mysite1.de
    ServerName mysite1.de
    ServerAlias mysite1.de *.mysite1.de

    Options None
    Options +FollowSymLinks
    SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
    <Files /var/www/html/mysite1.de/sites/default/files/*>
        SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
    </Files>

    <IfModule mod_rewrite.c>
        <Directory "/var/www/html/mysite1.de">
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_URI} !=/favicon.ico
            RewriteRule ^ index.php [L]
        </Directory>

        <Directory "/var/www/html/mysite1.de/sites/default/files">
            php_flag engine off
        </Directory>
    </IfModule>
</VirtualHost>
6 голосов | спросил Alexander Farber 21 42013vEurope/Moscow11bEurope/MoscowThu, 21 Nov 2013 13:14:43 +0400 2013, 13:14:43

1 ответ


5

.htaccess - это всего лишь механизмы для настройки конфигурации Apache без необходимости перезапуска Apache (.htaccess проверяется /запускает любой запрос). По соображениям производительности вы можете захотеть поместить любые директивы в файлы .htaccess непосредственно в запись vhost поэтому конфигурация загружается и сохраняется только один раз; при запуске Apache.

Из сообщения безопасности SA-2013-003 :

  

Предупреждение. Для предотвращения предотвращения выполнения кода может потребоваться сервер   конфигурации; пожалуйста, прочтите:

     

Чтобы исправить предотвращение выполнения кода   уязвимости на существующих установках Apache также требует изменений    к файлам .htaccess вашего сайта в каталогах . Пока вы это сделаете   это, страница отчета о статусе вашего сайта в admin /reports /status будет   отображать сообщения об ошибках. Обратите внимание, что если вы   с использованием другого веб-сервера, такого как Nginx. Файлы htaccess не имеют   эффекта, и вам нужно настроить защиту выполнения PHP самостоятельно в   соответствующие файлы конфигурации сервера.

     

Чтобы устранить эту проблему, вы должны отредактировать или заменить старые файлы .htaccess   вручную. Копии файлов .htaccess находятся в общедоступных файлах   каталог и временные файлы, и (только для Drupal 7)   private files directory, если ваш сайт настроен на его использование.

Итак, вы берете все, что находится в файле .htaccess, в каталогах настроенных файлов веб-сайтов (общедоступных, частных и т. д.) и гарантируете, что те же самые правила находятся в записи vhost для одного и того же набора каталогов. Обычно вы делаете это с помощью директивы <Directory>:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
......
<VirtualHost 123.123.123.123:80>
    DocumentRoot /var/www/html/mysite1.de
    ServerName mysite1.de
    ServerAlias mysite1.de *.mysite1.de

    <IfModule mod_rewrite.c>
        <Directory "/var/www/html/mysite1.de">
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_URI} !=/favicon.ico
            RewriteRule ^ index.php [L]
        </Directory>
    </IfModule>

    # Enforce new security rules from SA-CORE-2013-003.
    # repeat this block as needed per known "files" directories.
    <Directory "/var/www/html/mysite1.de/sites/default/files">
      # Turn off all options we don't need.
      Options None
      Options +FollowSymLinks

      # Set the catch-all handler to prevent scripts from being executed.
      SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
      <Files *>
        # Override the handler again if we're run later in the evaluation list.
        SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
      </Files>

      # If we know how to do it safely, disable the PHP engine entirely.
      <IfModule mod_php5.c>
        php_flag engine off
      </IfModule>
    </Directory>
</VirtualHost>

Не имеет значения, имеет ли веб-каталог по умолчанию AllowOverride None; обычно другой файл conf включается в цепочку запуска apache, или настройка загрузки виртуального хоста (например, следующая в Ubuntu) может быть изменена, чтобы разрешить любую комбинацию Overrides:

# Ubuntu apache2.conf last line ...
# Include the virtual host configurations:
Include sites-enabled/

Это просто говорит include *.conf из sites-enabled эти имеют , чтобы быть vhost-элементами, они могут быть любыми файлами с директивами apache (но это самое чистое, чтобы они были записями vhost), и apache загружает файлы конфигурации по шаблону /сортировке имени файла.

ответил tenken 21 42013vEurope/Moscow11bEurope/MoscowThu, 21 Nov 2013 20:06:25 +0400 2013, 20:06:25

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132