Как я могу исключить mod_security из подкаталогов на Amazon EC2 с LAMP?

Я никогда не активировал до mod_security или отредактируйте виртуальные хосты, так что это новый вызов для меня, я пытался следовать этому уроку, но кажется, что большинство уроков в Интернете не отражают мою ситуацию. У меня есть экземпляр EC2 под управлением Apache 2 на Ubuntu 14.04, у меня нет файла с именем httpd, однако внутри моего /etc/apache2/sites-available папка у меня есть файл с именем 000-default.conf:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        <IfModule security2_module>
            SecRuleEngine Off
        </IfModule>
        <Directory /var/www >
            AllowOverride All
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

а это мой security2.conf расположенный в /etc/apache2/mods-available

<IfModule security2_module>
        SecDataDir /var/cache/modsecurity
        Include "/usr/share/modsecurity-crs/*.conf"
        Include "/usr/share/modsecurity-crs/activated_rules/*.conf"
        IncludeOptional /etc/modsecurity/*.conf
</IfModule>

Я хочу включить mod_security но сейчас я не могу, потому что внутри ../html папка (папка моего сайта) У меня есть Wordpress и phpMyAdmin (поэтому, если я удаляю SecRuleEngine Off, это дает мне разрешение на ошибку, запрещенное на всех веб-сайтах). Из упомянутого выше руководства я знаю, что мне нужно использовать этот код для исключения определенного каталога:

<Directory "/var/www/wp-admin">
    <IfModule security2_module>
        SecRuleEngine Off
    </IfModule>
</Directory>

Что я не понимаю: мне нужно создать новый файл.conf внутри /sites-available? Например, как он должен выглядеть как файл.conf, чтобы исключить каталог phpMyAdmin, расположенный в /usr/share/phpmyadmin?

1 ответ

Решение

[Это было слишком долго для комментария, поэтому разместил его как ответ. Надеюсь, поможет]

Кажется, вы не настроили виртуальные хосты. Вместо этого есть только один основной DocumentRoot, и вы вызываете сайты с http://ip-address/site-folder.

Скажем, два виртуальных хоста: один в / var / www / html / wordpress, а другой / var / www / html / phpmyadmin.
Если вам нужно отключить phpmyadmin, то под конфигурацией виртуального хоста phpmyadmin добавьте строку, которую вы указали во второй половине:

<VirtualHost *:80>
  ..
  ..
  ..
    <Directory "/var/www/html/phpmyadmin">
      <IfModule security2_module>
          SecRuleEngine Off
      </IfModule>
    </Directory>
  ..
  ..
</VirtualHost>

И чтобы отключить его для администратора WordPress, добавьте то же самое в конфигурацию виртуального хоста сайта WordPress: т.е.

<virtualhost *:80>
  ..
  ..
  ..
     <Directory "/var/www/html/wordpress/wp-admin">
      <IfModule security2_module>
         SecRuleEngine Off
      </IfModule>
    </Directory>
  ..
  ..
</VirtualHost>

Источник: https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_security-with-apache-on-debian-ubuntu

Если конфигурация VirtualHost отсутствует, вы можете попробовать добавить директиву: <Directory>..</Directory> для phpmyadmin и wp-admin в файле конфигурации mod_security: '/etc/apache2/mods-available/security2.conf'

Проверьте синтаксис с apachectl -t перед перезагрузкой.

Другие вопросы по тегам