Я никогда не активировал до 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>
Если нет конфигурации VirtualHost, вы можете попробовать добавить директиву: <Directory>..</Directory>
для phpmyadmin и wp-admin в файле конфигурации mod_security: '/etc/apache2/mods-available/security2.conf'
Проверьте синтаксис с помощью apachectl -t
перед перезагрузкой.