"Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему"
Dec 042012
 

Недавно столкнулся с тем, что хостер стал писать мне о превышении выделенного мне лимита процессорного времени – проще говоря High CPU Load. При том на активных сайтах прироста посещаемости не было – все так же в пределах 50-100 уников в сутки.

Естественно первой мыслью было, что что-то не в порядке с самим WordPress, но добавление плагина для кеширования запросов к базе (DB Cache reloaded Fix) и проверка функционирования WP Super Cache не дала никаких результатов. Точнее DB Cache снизил нагрузку на полпроцента, что было мало.

Пришлось включать логи доступа, которые и показали, что нагрузку создает три файла на lifelongjourney.ru: wp-cron.php, wp-login.php, wp-admin.php и один файл на expeditionlife.ru: administrator/index.php.

Начнем по порядку

wp-cron.php

Это реализация выполнения запланированных задач движком WordPress. Был скопирован в файл с совершенно другим названием и его запуск был отдан системному cron раз в 4 часа. В самом же wp-cron.php была прописан команда die() сразу при запуске. Т.о. больше этот файл не делает ничего.

wp-login.php

В теории этот файл вызывается только при попытке логина. Прямых ссылок на него у нас ни где нету, поисковикам запрещено к нему ходить в robots.txt, но почему-то он стал вызывался очень часто, особенно после манипуляций с wp-cron.php

wp-admin.php

Панель администрирования WordPress – мы ей постоянно пользуемся для написания постов и управления сайтом. Но вот странность – 2 дня мы специально не заходили в админку. А дергали ее все это время с завидной регулярность.

administrator/index.php

Это панель администрирования Joomla, в нее я вообще не заходил уже месяца 2, а тут она просто в топе обращений.

Судя по всему кто-то сильно хотел попасть в админку моих сайтов, что естественно не очень понравится любому здравомыслящему человеку.

Закрываем доступ к панели администратора и другим важным файлам

Чтобы отсечь всех нежелательных посетителей от важных файлов проще всего использовать .htaccess – тогда хостинг не будет тратить процессорное время и траффик на генерацию каких-либо страниц, а просто покажет 403 ошибку.

Добавляем следующие строчки в .htaccess

<Files wp-logion.php>

order deny,allow
deny from all
Allow from YOUR_IP

</Files>

Теперь никто не сможет обратиться к файлу wp-login.php не с вашего адреса. Естественно, что лучше указать список адресов с которых Вы обычно выходите в сеть. Тоже прописывается для каждого нужного файла.

Для Joomla запрещаем выполнять все три Index.php

<FilesMatch “(index|index2|index3)\.php$”>

order deny,allow
deny from all
Allow from YOUR_IP

</FilesMatch>

Ну вот мы и отсекли “посетителей” от страницы админки и логина, что сразу уменьшило нагрузку на хостинг в два раз.

Поделиться в соц.сетях

  3 Responses to “Как снизить нагрузку на хостинг WordPress и Joomla или немного про защиту системных файлов”

  1. Здравствуйте, а подскажите пожалуйста как прописать что заходить в админку вордпресс могут только с 2-ух IP адресов?
    Прям кусочек кода который мне нужно вставить в файл haccess , вместо адресов просто цыферки 123456 для примера.
    А то я не совсем сильна в этом, а нужно сделать(((

  2. Вот прямо кусочки кода:
    #Security begin

    order deny,allow
    deny from all
    Allow from IP1+подсеть/16 #home net
    Allow from IP2 #office


    order deny,allow
    deny from all
    Allow from IP1+подсеть/16 #home net
    Allow from IP2 #office

    • Упс .. теги порезало….

      #Security begin
      <Files wp-admin.php>
      order deny,allow
      deny from all
      Allow from IP+subnet/16 #home net
      Allow from IP #office
      </Files>

      <Files wp-login.php>
      order deny,allow
      deny from all
      Allow from IP+subnet/16 #home net
      Allow from IP #office
      Allow from 128.73.0.0/16 #Smolensk
      </Files>
      только пробелы уберите возде символов < и >

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)