Google

Безопасность в WordPress: как защитить свой блог от хакеров (часть 1)

Дата публикации:Август 25, 2011

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

Возведение защиты для своего блога, работающего на WordPress — обязанность любого уважающего себя пользователя. В этой статье мы подробно рассмотрим методы построения продуманной защиты, которая окажется непреодолимой преградой на пути хакеров.

Проверка критических компонентов: закрываем основные ходы

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

  • Своевременное обновление системы WordPress и установленных в ней плагинов. Поскольку WordPress обладает открытым исходным кодом, все уязвимости, существующие в различных версиях этой CMS, досконально известны. Хакерам достаточно узнать номер версии, после чего они уже смогут отыскать верный путь ко взлому сайта.
  • Защита файла wp-config.php. Защитить файл wp-config.php от посторонних глаз можно следующими способами: поставить для него права доступа 440 или 400 (зависит от вашего сервера); переместить wp-config.php выше файла public_html. Чтобы переместить wp-config.php, необходимо создать новый PHP файл с произвольным именем, в котором будет содержаться вся информация, закрытая от редактирования, а в старом файле wp-config прописать следующие строки:

    <?php
     require_once('/home/USERNAME/NEWCONFIGNAME.php');
     if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/');
     require_once(ABSPATH . 'wp-settings.php');
    

    Не забудьте указать свои собственные USERNAME и NEWCONFIGNAME.

  • Установка корректных прав доступа к файлам WordPress. Если говорить кратко, то это означает, что для всех папок должен стоять chmod 755, а для всех файлов — chmod 644.

Помимо всего прочего, важно:

  • Не устанавливать плагины, которые используют base64_urlencode. Это легко можно определить, взглянув на исходный код плагина.
  • Если ваша тема использует скрипт timthumb.php, проверьте его версию: она должна быть не ниже 2.0. Не так давно в этом скрипте была обнаружена серьезная ошибка безопасности, которая позволяла хакерам получить доступ к информации. Скачать актуальную версию скрипта можно по следующей ссылке: timthumb.

Использование файла .htaccess: настройка защиты

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

Несмотря на то что в природе есть множество WordPress плагинов, позволяющих проводить редактирование .htaccess, я настоятельно рекомендую выполнять все действия вручную. Почему? Если хакер получит доступ к консоли WordPress, он сможет нанести критический урон сайту через редактор .htaccess, который обеспечивается плагинами. Не стоит упрощать жизнь взломщикам.

Ниже я привел обязательный минимум, который должен присутствовать в файле .htaccess.

Отключение просмотра директорий:

# disable directory browsing
 Options All -Indexes 

Отключение сигнатуры сервера:

# disable the server signature
 ServerSignature Off

Блокировка нежелательных юзер-агентов:

Заблокировать доступ различным ботам, спамерам и вредоносным программам можно с помощью следующих инструкций:

RewriteEngine On
 RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
 RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
 RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
 RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
 RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
 RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
 RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
 RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
 RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
 RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
 RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
 RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
 RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
 RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
 RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
 RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
 RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
 RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
 RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
 RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
 RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
 RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
 RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
 RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
 RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
 RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
 RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
 RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
 RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
 RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
 RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
 RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
 RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
 RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
 RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
 RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
 RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
 RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
 RewriteCond %{HTTP_USER_AGENT} ^Zeus
 RewriteRule ^.* - [F,L]

Блокировка доступа к WP-Config

# protect wpconfig.php

 order allow,deny
 deny from all

Блокировка доступа к .htaccess

order allow,deny
 deny from all
 satisfy all

Если вы не имеете достаточного опыта или хотите сэкономить свое время, вы можете воспользоваться уже готовыми плагинами, которые возьмут всю работу на себя. Список плагинов будет рассмотрен далее.

Плагины, заботящиеся о безопасности блога

Здесь мы рассмотрим полезные плагины, которые позволят вам надежно защитить свой блог от хакерских атак.

  • BulletProof Security. Позволяет защитить блог от кросс-серверных скриптов, SQL-инъекций, base64, CSRF, а также надежно сохранить жизненно важные файлы вашего сервера, такие как .htaccess и php.ini.
  • Login Lock Down — Записывает IP-адреса при неудачных попытках входа в систему. Если число попыток входа было превышено, IP-адрес блокируется на заданный промежуток времени. Прекрасное средство для предотвращения брутфорса.
  • Block Bad Queries (BBQ) — Плагин препятствует выполнению злонамеренных запросов eval и base64. Обязательная необходимость в том случае, если не установлена защита BulletProof Security.

http://jmwebdev.com/wordpress-articles/secure-wordpress-blog-hackers.php

Связанные материалы:

  1. Избавляемся от спама в WordPress с помощью простого скрипта
  2. 8 лучших способов уберечь свой блог от плагиата
  3. Как установить WordPress в произвольную директорию
  4. Перенос базы данных WordPress на новый хостинг
  5. Пустая страница при загрузке WordPress: что делать?

4 комментариев

  1. HotIce says:

    Отключение просмотра категорий: — не совсем понятно, почему «категорий»? Директива выключает просмотр директорий. Очепятка?

    Простынь с юзерагентами зачетная. Интересно бы узнать, насколько такое правило тормозит обработку запроса. У меня простынь поменьше, но блокирует нескольких поисковых ботов.

    • Architect Of Ruin says:

      Хотел написать каталогов, а написал категорий. Да, пора больше спать и меньше работать)

  2. А есть ли какие-то сложности в настройке плагина BulletProof Security? И есть ли плагин на русском? Спасибо

    • Architect Of Ruin says:

      Сложностей не должно возникнуть. Если появятся, то пишите, поставлю его тоже у себя и проверю. По крайней мере, на сайте хранилища плагинов WordPress сказано, что он полностью совместим с текущей версией 3.3.1. Плагинов на русском не знаю, но вообще плагинов для защиты блога очень много, обычно у самых популярных есть переводы.

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.