Нагрузка на сервер хостинга и POST запрос с "/edit" в конце URL

На днях заметил возросшую нагрузку на сервер. Первыми мыслями было "установил какой-то плагин" и "нагрузка возросла из-за посещаемости", а значит нужно улучшить оптимизацию блога в плане производительности. Отключил наиболее прожорливые плагины, уменьшил количество файловых запросов, количество sql-запросов, вес главной страницы, страницы стали грузиться на полсекунды быстрее, но на следующие сутки, к моему удивлению, нагрузка на сервер наоборот увеличилась.

После анализа логов apache я увидел странную активность: с некоторых ip-адресов на протяжении длительного времени несколько раз в секунду посылался POST-запрос на URL вида "example.com/nazvanie-zapisi/edit",   "example.com/zapis/edit",  "example.com/esche-kakaya-to-zapis/edit". Кроме этого менее активно шли POST-запросы на URL "example.com/wp-login.php" - то есть подбирался пароль к админке блога. Бан этих ip адресов не помогал, через некоторое время появлялись другие ip-адреса с которых слались подобные URL.

Если с "/wp-login.php" все понятно - это подбор паролей, то зачем постоянно посылать данные на "/edit" и получать в ответ ошибку 404 - для меня было загадкой. На странице habrahabr.ru/qa/42608 я прочел о том, что эти запросы посылают браузеры с установленным зараженным плагином. Скорее всего создатель плагина что-то напортачил и бесполезные запросы на  "/edit" результат глюка, . Как я понял, получается что какой-то посетитель зашел к Вам на сайт на какую-то страницу и пока вкладка в его браузере открыта вам посылаются такие запросы.

Логично просто запретить такие запросы в файле .htacces, что я и сделал.

Запрещаем POST-запросы к "/edit":

#Защита от /edit атаки
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*/)?edit$ - [L,F]

Запрещаем "/wp-login.php":

#Защита от подбора пароля
<Files wp-login.php>
Order Deny,Allow
Deny from all
allow from 33.43.36.73
allow from 21.27.15.9
</Files>

Запретить только POST запросы к wp-login:

#Запрет POST запросов к wp-login кроме IP 33.33.33.222
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} !^33\.33\.33\.222$
RewriteCond %{REQUEST_URI} ^/wp-login\.php$
RewriteRule .? - [F]

В строках allow from указаны ip-адреса, с которых можно заходить на страничку "/wp-login.php", если у Вас динамический IP-адрес, то можно узнать какая сеть выделена вашему провайдеру и прописать разрешение для всей сети. wp-login.php, кстати говоря, можно защищать и другими методами, например переименовать его, но я выбрал этот.

Получается даже если у вас пароль сложный и его можно подбирать годами, то все равно лучше закрыть доступ к wp-login.php - это уберет лишнюю нагрузку на сервер. Кстати именно потому я до сих пор не защищал "/wp-login.php" - мои пароли генерируются случайно и нигде не используются дважды.

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Нагрузка на сервер хостинга и POST запрос с "/edit" в конце URL”

  1. Княгиня (greatbattle.ru) says:

    Хороший запрет. У меня такой давно стоит (для сетки, поскольку айпи динамический). А для тех, на кого запрет не подействует, у меня теперь двойная авторизация. :) И ещё блокировщик неправильных запросов — для надёжности. Чем бы ещё надёжность дополнить — для комплекта?..

  2. Владимир Демянович (elims.org.ua) says:

    Хм.. Да и так отлично защищены. На хостинге можно включить двойную авторизацию, через sms-прикрутить и регулярно делать бекапы. Перед каждым изменением wordpress — резервное копирование файлов и базы данных. После редактирования или публикаций какой-либо записи — резервное копирование базы данных.

    Оптимизировать быстродействие, чтоб быть уверенной, что блог «ляжет» если однажды кто-то опубликует ссылку на Ваш блог где-то на посещаемом ресурсе.

  3. Княгиня (greatbattle.ru) says:

    Да, вот быстродействие не помешало бы. У меня для этого только ГиперКэш стоит, и пока не было возможности убедиться в его действенности: самой-то мне кэш обычно мешает, т.к. я по собственному сайту чаще хожу с тестами обновлений.

  4. Владимир Демянович (elims.org.ua) says:

    Гиперкеш говорят хороший плагин. Я использовал Суперкеш, но потом его отключил после того, как он закешировал мобильную версию сайта и начал ее отображать всем подряд.

    Гиперкеш планирую в последнюю очередь применять =)

Обсудить