Резкое увеличение нагрузки CPU на хостинг. Причины и способы решения.
Привет. После попыток взломать один из моих сайтов, об этом я писал в статье Как защитить WordPress от взлома? Подбор пароля к админке. Настройка Login Lock, все было как-то спокойно, нагрузка на хостинг стала нормальной и проблем не было. Но в один прекрасный момент, захожу я в панель ihc.ru и открыл вкладку «Нагрузка» что бы посмотреть как там обстоят дела, и честно говоря офигел немного. Нагрузка на CPU уже превысила допустимую, и это было только утро.
Я сразу начал анализировать, что я такого делал на сайте в последнее время, но как оказалось, ничего не менял. Глянул на посещаемость, она была нормальной, то есть не выросла и никак не могла привести к увеличению нагрузки, причем к такому резкому.
Я сразу подумал, что сейчас хостинг отключит мои сайты. У меня в этой панеле, только один посещаемый сайт, примерно 10000 просмотров страниц в сутки, это не мало, для виртуального хостинга за 400 рублей в месяц. Но всегда нагрузка была примерно на середине, если допустимо на CPU 120, то у меня было 70.
Сел я писать в поддержку ihc письмо, объяснил ситуацию. Ответ пришел очень быстро, впрочем как и всегда. Написали, что за разовое увеличение нагрузки никто сайт отключать не будет, хууу, успокоили. Так же указали на сайт, который создает большую нагрузку и указали один IP адрес, который ведет себя очень странно и делает очень много запросов к сайту. Так же посоветовали проанализировать файл логов домен_access.log.
Тот IP адрес, который они указали, я сразу же заблокировал в файле .htaccess в корне сайта. Просто добавив строчку deny from **.***.***.**. И стал ждать, что на этом все закончиться и нагрузка на хостинг упадет.
Тут как раз выходные, я уехал типа отдыхать. Но как оказалось, на следующий день нагрузка еще больше увеличилась. Снова написал в поддержку, мне ответили, что нужно анализировать логи. Я работал через такой интернет, что мне было сложно их выкачать. Тем более, в эти логи я уже заглядывал и ничего там не понял.
На следующий день, вчера, нагрузка CPU на хостинг увеличилась еще больше при допустимых 120 было 300. И я решил, что нужно все таки разбираться в этих логах, и начал просматривать файл домен_access.log, который выкачал по FTP с хостинга. Большой такой файл, открыв его блокнотом, что-то там понять было сложно. Тут мне пригодился мой любимый Notepad++, там все отображалось с новой строчки, короче все как положено.
Долго я смотрел этот файл, там отображается IP адрес, время запроса, тип запроса и т. д. Посмотрел и закрыл. Сегодня утром проснулся, пошел смотреть что там с нагрузкой, она уже превышала допустимую. Решил, что нужно разбираться. Снова открыл лог сервера и начал внимательно его смотреть. Заметил несколько IP, с которых даже ночью очень активно шли запросы на сайт. Причем, за секунду могло быть более 10 запросов, к одной и той же странице сайта. И таких запросов было очень много. Все IP, которые мне показались странными я заблокировал в .htaccess.
Тут еще с утра пришло письмо, что уже несколько дней подряд увеличена нагрузка на хостинг. Я им ответил, описал ситуацию, что заблокировал IP и буду ждать результата. В ответ поддержка прислала список из пяти IP адресов, которые по их мнению создают большую нагрузку, наши результаты поиска почти совпали :).
После блокировки тех IP нагрузка вроде устаканилась. Ночью, когда IP еще не были заблокированы, нагрузка была заметна, а вот уже сегодня днем вроде все нормально.
Ну завтра уже можно будет сделать выводы, помогла блокировка этих IP адресов, или нет. Менять тариф сейчас не очень хочется, там дальше идет премиум за 1000 рублей в месяц. Но с такой нагрузкой и такого тарифа может не хватить. Впрочем подожду до завтра и буду что-то решать.
Что касается самого хостига ihc.ru в этом деле, то мне кажется, что они молодцы. Во первых, сайт с десятью тысячами просмотров в сутки на виртуальном хостиге за 400 рублей в месяц, мне кажется, что это круто. За помощь в решении проблем с нагрузкой и поиском этих IP, так же большое спасибо.
В таких случаях просто блокировка по IP не всегда помогает, да и постоянно мониторить нагрузку что бы потом вручную блокировать не лучший способ. У меня на паре сайтов было нечто похожее, и там работала какая то автокачалка через прокси с постоянными сменами IP. Нашёл в интернете небольшой скрипт который ограничивает количество запросов с одного IP за определённое время. Например не более 5 запросов за 1 секунду и не чаще чем раз в 5 секунд. Для обычных прользователей и роботов поисковых систем этого вполне достаточно, а вот автокачалки и прочие нехорошие скрипты будут блокироваться. Правда я уже не помню откуда его скачал, скрипт называется antiddos наверно поиском можно найти.
А насчёт серверных логов — посмотри есть ли на хостинге возможность включить статистику Awstat, она как раз работает с серверными логами, по ней вычислить злоумышленника раз плюнуть.
Ну а если нет такой возможности, то где то видел декстопную версию анализатора логов. Скачиваешь логи на комп и запускаешь прогу. Очень много чего интересного увидишь.
Спасибо, обязательно посмотрю, особенно интересна программа для ПК, для анализа логов.
А что скажете насчет плагина Better WP Security?
Не пользовался этим плагином. Поэтому, как он в работе сказать не могу.
Попробуйте. Про его функционал много хорошего пишут. Буду признателен если поделитесь результатами работы. Сам хочу испытать, потому что в такую же ситуацию попал. На том же самом хостинге.
НУ я установил Login Lock и доволен. Попробуйте.
Спасибо за подробную статью.