Typo3 - атака на сервер, слишком много php-запросов заканчиваются ошибками 500 и 503
У меня есть старый сайт Typo3 (v4.5.x), и с тех пор мой сервер подвергся атаке сценария. Он посылает довольно много PHP-запросов URL-адресов, которых нет на моем сервере. Я получил столько ошибок PHP 500 назад, и через некоторое время число параллельных php-процессов превысило лимит, и мой сайт на некоторое время недоступен.
Есть идеи, что я могу сделать? Как я могу избежать обработки таких несуществующих URL-адресов?
Если я смотрю на эти запросы и гугл вокруг, то все о некоторых уязвимостях WordPress или Joomla. Кто-нибудь знает, существуют ли какие-либо списки таких запросов, которые можно добавить в списки фильтров / блокировок на уровне apache? т.е.
- шаблоны / атомный / system.php
- WP-содержание / языки / system.php
- WP-администратора / изображения / system.php
- плагины / CAPTCHA, /jproicaptcha.php
- Модули / cgi.php
- Модули /mod_articless/func.php
- TMP / install.css.php
- ...
1 ответ
У вас есть несколько вариантов:
- Если запросы поступают с одного IP, просто заблокируйте этот IP в брандмауэре.
- Верните код ответа 403 или 404 для этих запросов. Вы можете сделать это в файле.htaccess или непосредственно в конфигурационных файлах Apache (см. Директиву LocationMatch http://httpd.apache.org/docs/2.4/mod/core.html).
- Используйте брандмауэр уровня приложения. mod_security был бы мудрым выбором.
Это не совсем конкретный вопрос для TYPO3. Вопрос в том, как избежать / заблокировать атаки DOS (отказ в обслуживании) или, скорее, в этом случае попытки взлома.
Чем раньше вы сможете заблокировать / перенаправить злоумышленника, тем лучше, потому что вы не хотите, чтобы он занимал ваши ресурсы и создавал ненужный трафик. Поэтому, если вы можете заблокировать IP-адреса, возможно, вы захотите это сделать (имейте в виду, что IP-адреса могут динамически назначаться провайдером, так что это немного жестоко и не должно выполняться постоянно).
Как только злоумышленник достигнет вашего веб-сервера и сгенерирует HTTP-запросы, вы хотите, чтобы он выделил как можно меньше ресурсов. Поэтому вместо того, чтобы показывать страницу с ошибкой в TYPO3 (или перенаправлять на начальную страницу), убедитесь, что вы полностью блокируете страницу или обслуживаете минимальную страницу 404 для этих известных URL-адресов (например, статическую HTML-страницу, где нет доступа к БД или запуск PHP скриптов необходим).
Пример: веб-сервер Apache
RewriteRule ^/?(wordpress/wp-admin/|wp-login|wp-admin|test/wp-admin/|wp-admins|phpmyadmin|test.php|cacti|hack.php|tomcat.php|db.init.php|db_session.init.php|shell.php|mysql/|admin/index.php|dbadmin/|xampp|myadmin/|typo3/phpmyadmin|templates|wp-content|plugins|modules|tmp) - [L,F,NC]
- F означает "запрещено", см. http://httpd.apache.org/docs/2.4/rewrite/flags.html
- RewriteRule требует директивы
RewriteEngine on
один раз и требует модуль mod_rewrite (который у вас должен быть в любом случае, для правил перезаписи TYPO3)