Из логов мы видим на нашем сервере, что на доступ приходит множество запросов. upload.php
(например.: /plugins/editors/tinymce/jscripts/tiny_mce/plugins/tinybrowser/upload.php
), или множество вариантов для setup.php
для phpMyAdmin.
Это 404 ошибки в журнале, потому что у нас нет точных URL-адресов, однако мы чувствовали бы себя в большей безопасности, если бы могли отрицать все потенциальные атаки этого типа.
Поэтому я хотел бы отклонить все запросы, содержащие setup.php
или upload.php
на моем веб-сервере Apache2.
У нас есть несколько (сотен) VirtualHost, и я бы предпочел не писать сотни раз директиву, запрещающую эти имена файлов в каждом VirtualHost.
Вопрос: Как я могу сделать это глобально на сервере?
вы можете установить свои правила перезаписи для upload.php и setup.php в контексте каталога, определенном на уровне serverconfig. Это должно проверять запросы независимо от того, что это за виртуальный хост. каталог должен соответствовать только этим путям приложений, чтобы вы не запрещали доступ другим скриптам с тем же именем, но установленным в других приложениях.
<directory ~ "phpmyadmin_path_global_regex">
rewritengine on
options followsymlinks
rewriterule "setup.php$" - [F]
</directory>
<directory ~ "tiny_mce/plugins/tinybrowser">
rewriteengine on
options followsymlinks
rewriterule "upload.php$" - [F]
</directory>
#vhost defs at the same level
однако это ... глобально. если позже вы захотите установить и настроить phpmyadmin, вам придется отключить указанные выше фильтры или добавить секунды перезаписи для хостов, доступ к которым вы не хотите запрещать. то же самое, если вы хотите иметь крошечный браузер внутри виртуального хоста.
то есть для разрешения запросов setup.php для vhost blah.com вы должны добавить
rewritecond %{HTTP_HOST} "!blah.com"
Я бы сказал, что лучше всего игнорировать 404 записи в журнале и убедиться, что на вашем сервере не установлены уязвимые phpmyadmin или tinybrowser. используйте скрипт cron, чтобы убедиться, что у вас нет файла setup.php, забытого в docroots, если вы это сделаете, то измените их на 0 или удалите. создайте другой cron, чтобы убедиться, что вы не используете какие-либо уязвимые версии phpmyadmin / tinybrowser. то же самое можно применить к более широкому кругу приложений.
с другой стороны, если вас беспокоит регистрация этих поддельных запросов, вы можете сделать несколько настраиваемых журналов. чтобы не регистрировать ложные запросы:
setenvif Request_URI tiny_mce/plugins/tinybrowser/upload\.php$ bogus-ignore
customlog access.log common env=!bogus-ignore
#if you still want to log upload.php requests but in another log file then add:
customlog bogus-ignore.log common env=bogus-ignore