Назад | Перейти на главную страницу

Как я могу исключить 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?

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

Похоже, вы не настроили виртуальные хосты. Вместо этого используйте только один основной DocumentRoot, и вы вызываете сайты с http: // IP-адрес / папка сайта URL.

Скажем, его два виртуальных хоста: один в / 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 перед перезагрузкой.