пройти авторизацию: 

Защита WordPress от DDos атаки
UPD
59 15

Защита WordPress от DDos атаки

21 августа сего года блог Ай Пи Мани был временно не доступен. Точнее он был заблокирован почти на сутки.

Приношу всем свои извинения. Одновременно хочу поблагодарить суппорт своего хостера за оперативную помощь.

Причина блокировки сервера для меня очень необычная — DDos-атака. Раньше я с такой напастью еще не сталкивался.

Что это такое? Как я сам понял от добрых людей DDoS-атака — распределенная атака типа отказ в обслуживании (DDoS — Distributed Denial of Service). Смысл такой атаки в том, что хакеры одновременно (и довольно продолжительное время) обращаются к серверу с огромного количества разных ip-адресов. Сервер не справляется с такой нагрузкой и блокируется.

В общем, как мне сказали, защититься от DDos-атаки практически не возможно, потому что сервер не может определить какие ip-запросы нужно отсеять.

Атака производилась на файл WordPress wp-cron.php, который лежит в корне блога.

Этот файл нужен для публикации постов с отсрочкой. Например: вы написали пару статей, поставили дату публикации на будущее число и отправились в отпуск, а посты будут автоматически публиковаться по расписанию. Очень удобно.

Так вот. Оказывается, если не пользоваться отсроченной публикацией, то специальное обращение к этому файлу (типа //ваш_блог/wp-cron.php?check=46cbe1674da1d2888104482d6ed4f87f) активирует на сервере неиспользуемые скрипты, которые сами не завершаются и только накапливаются в памяти потребляя все больше системных ресурсов сервера.

Однако, чтобы скрипт запустился нужно знать значение хэша после параметра check. Оно зависит от числа, которое стоит в строке

if ( $_GET['check'] != wp_hash('187425') )

файла wp-cron.php

Вот тут и скрывается жестокий подвох. 🙁 По-умолчанию, во всех вордпрессах это число 187425! Таким образом, организовать атаку любой блог с движком WordPress не так уж и сложно.

Защититься легко — измените число по-умолчанию на любое другое свое.

На мой сервер было произведено более 25 запросов в секунду. Как долго продолжалась атака не знаю, т.к. сервер «встал» и статистику не записывал. После перезагрузки сервера атака повторялась снова и снова...

Честно говоря, я и не догадался бы, что сервер перегружался спланировано, если бы не получил письмо на почту с обоснованием этой операции (после восстановления работоспособности сервера естественно). О чем просили писать не стану. Скажу только, что обещали повторить атаку, если не соглашусь с их условиями. Чем именно заинтересовал их мой блог мне мало понятно. В любом случае — посмотрим.

На сколько мне известно, DDos-атака довольно дорогостоящее удовольствие. Поэтому, вряд ли стоит ждать повтора. Да и приняты уже некоторые меры по защите (не только описанные в этой статье).

Рекомендую всем блоггерам позаботиться о защите своих проектов.

Опубликовано:
Обсуждение

Чтобы оставить своё мнение, необходимо

пройти авторизацию: 

Комментарии и Отзывы: 15

У меня были проблемы с кроном, до тех пор пока в саппорт хостинга не накатал претензию, сейчас работает как часы.

Хм… А в какой версии WP присутствует эта строка в коде? Что-то я у себя её не нашел.

0

Вот в чем оказывается проблема-то… А я уже все переделал и в хостинг писал и у друзей спросил… У меня три дня подряд все место на хостинге съедали какие-то cron файлы в папке WWW, потом вобще Ip заблокировали…

0

Странно, у меня в этом файле нет такой строки, возможно у вас стояла не слишком свежая версия WordPress, а вообще, это не защитит вас от DDos, можно найти много способов положить сервер, можно тупо забить канал большим ботнетом.

0

В новых версиях вордпресса эта дыра уже закрыта. Но её используют некоторые плагины. Например SuperCache, посему пользуемся иными плагинами кеширования!

0
dikiiwulf

Ddos атаки относят к кибертерроризму и я не думаю, что если кто-то заразит 1000 компов, то они обязательно будут атаковать вас. Если у вас не коммерческий проект, то не будут КОМУ ЭТО НАДО? Еще в тюрьму можно сесть.
А UCOZ-ХАВНО, поскольку не дает работать с Mysql & PHP, да еще и конструктор? Нубов только плодит…
Из двигов лучше всех JOOMLA! Предпочитаю выделенку, это дает больше возможностей и 100% на выделенке стоит защита. 1000 деревянных в месяц и 50000 ГБ плюс можешь сам создавать выделенный сервер.

0

Честно говоря 25 запросов в секунду это мало. 🙂
Сейчас на моем сервере находится сайт который работает в обычном режиме и запросов у него 48 в секунду и таких сайтов несколько. Вообще Apache очень медленный веб-сервер, лучше использовать другие.

0

Дос атаки производятся с помощью «зомбосетей». ЗОМБОСЕТЬ — у вас стоит антивирус? Он обнаруживал у вас на ПК троянов? Так вот если у вас хотя бы некоторое время на ПК находился троян 99% что вы были участником зомбосетки. И по определенному сигналу все ПК состоящие в зомбосети начинают посылать запросы на «сайт-жертву». Все просто. Самое частое распространение троянов — кейгены. Думаете ребятки бесплатно создают кряки? Давайте, расскажите мне сказку про «сетевого альтруиста». 😉
Дорого стоят базы зомбосетей на 1000+ ПК, простейшая атака возможна и со 100 компов, на самом деле 25 запросов в секунду это очень мало.

На самом деле защита от дос атак — хороший хостер. Например всеми нелюбимый Ucoz не позволяет издеваться над подопечными ему сайтами.

0

После прочтения Вашей статьи сразу в поисковики. 🙂 У многих встречается проблема с кроном. У меня были случаи, когда он отказывал и статья не публиковалась в отведенное время. Будем принимать меры с хешем.

0

Во, разжевали, а то никак понять не мог, что же это за штука такая. 🙂 Особенно фриланс часто атаковали таким методом.

0

Мой хостинг в настоящее время страдает от DDoS течение 3 дней. Все мои сайты не работают и это не смешно. Мне удалось перекинуть сайты на другой хостинг.

0

Число 187425 нужно поменять только в wp-cron.php? Оно больше нигде не используется?

Оно должно быть только 6-значным целым?

0

Закройте у себя в файле .htaccess доступ к файлу cron.php через web и всё тут. 🙂
А если нужно, то запускайте скрипт подобным образом через крон:
/usr/bin/php /var/www/sait.ru/cron.php

0

Чтобы оставить своё мнение, необходимо

пройти авторизацию: