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

Typo3 - атака на сервер, слишком много запросов php заканчивается ошибками 500 и 503

У меня есть более старый сайт Typo3 (v4.5.x), и с тех пор мой сервер подвергается атаке со стороны скриптового малыша. Он отправляет довольно много PHP-запросов URL-адресов, которых нет на моем сервере. Я получил так много ошибок PHP 500, и через некоторое время количество параллельных процессов php превышает лимит, и мой сайт не работает и какое-то время недоступен.

Есть идеи, что я могу сделать? Как я могу избежать того, чтобы такие несуществующие URL-адреса не обрабатывались?

Если я посмотрю на эти запросы и погуглию, все будет видно о некоторых уязвимостях WordPress или Joomla. Кто-нибудь знает, существуют ли списки таких запросов, которые можно добавить в списки фильтров / блокировок на уровне apache? т.е.

Это не совсем конкретный вопрос для 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#flag_f
  • RewriteRule требует директивы RewriteEngine on один раз и требует модуля mod_rewrite (который у вас должен быть в любом случае для правил перезаписи TYPO3)

У вас есть несколько вариантов:

  • Если запросы поступают с одного IP-адреса, просто заблокируйте этот IP-адрес в брандмауэре.
  • Для этих запросов верните код ответа 403 или 404. Вы можете сделать это в вашем файле .htaccess или непосредственно в файлах конфигурации Apache (см. Директива LocationMatch http://httpd.apache.org/docs/2.4/mod/core.html#locationmatch)
  • Используйте брандмауэр на уровне приложения. mod_security было бы мудрым выбором.