WordPress – заботимся о безопасности сайта

От автора: система управления контентом WordPress была, остается и, полагаю, будет одной из наиболее популярных CMS. По различным статистическим данным WordPress является наиболее популярной CMS в рунете. Полагаю, буржунет также любит эту CMS.

Этот факт вкупе с тем, что WordPress имеет открытый исходный код, безусловно, привлекает к ней внимание хакеров. Именно поэтому совсем не лишним будет дополнительно позаботится о безопасности Вашей любимой CMS.

По различным данным WP удерживает 1 или 2 место по популярности в рунете. Так, по данным (за сентябрь 2011 года) блога команды Безопасного Поиска Яндекса доля WP на рынке рунета составила 64%. Второе место заняла Joomla с долей 23%

По данным (за декабрь 2012 года) Российского рынка доменов WP досталось 2-е место, и его доля составила 35,4%. Первое место по этим данным взяла Joomla с долей 40,9%

Как видим, WP чрезвычайно популярен, на нем работает множество сайтов. Это обстоятельство, очевидно, делает WP наиболее вероятной целью хакеров. Ну а если к этому добавить и тот факт, что WP имеет открытый исходный код, то становится понятным, что у хакеров, что называется, — все козыри на руках.

Именно поэтому отнюдь не лишними будут любые советы, помогающие обезопасить Ваш сайт под управлением WP. Сразу стоит сказать, что применение этих и любых других советов на практике отнюдь не даст Вам гарантию 100% защиты Вашего сайта от взлома. Но все же сделает Ваш сайт гораздо более устойчивым ко взлому и не даст совершить возможных простейших ошибок.

В сети можно встретить множество статей по типу «10 советов…», «10 приемов…», «N-ое количество уловок», «Какое-то количество правил…» и т.д. и т.п. «… для защиты/безопасности WP». Статей очень много и порой кажется, что они просто перепечатываются с незначительными дополнениями и изменениями. Также порой кажется, что некоторые советы их авторы попросту не проверяют или не обращают внимания не некоторые нестыковки. Отдельные советы могут быть попросту бессмысленны, некоторые — противоречивы и неоднозначны.

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

1. Безопасность системы

Практически все советы начинаются с обновления CMS и ее компонентов. Но ведь на самом деле безопасность должна начинаться с рабочего места. Большая доля заражения сайтов случается именно по вине пользователя, управляющего сайтом.

Именно поэтому важно соблюдать следующие простые правила:

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

Не стоит хранить пароли в текстовых файлах или документах на жестком диске. Для хранения паролей используйте специально предназначенный для этого софт — менеджеры паролей. Их множество и Вы можете выбрать любой понравившийся.

Используйте сложные пароли, состоящие не менее чем из 6 символов. При этом данный пароль не должен быть из словаря, т.е. это не должно быть значимое слово, это должен быть набор символов. В идеале пароль должен содержать буквы верхнего и нижнего регистров, цифры и прочие символы.

Для работы с хостингом, на котором расположен сайт, Вы часто используете FTP-менеджер. Каждый выбирает FTP-менеджер согласно собственным предпочтениям, но и здесь можно дать пару советов. Во-первых, старайтесь не хранить пароли в данных программах, опять же — старайтесь хранить пароли в менеджерах паролей. По собственным наблюдениям я могу сделать вывод, что в качестве FTP-клиента чаще всего используется Total Commander или FileZilla, и здесь возьму на себя смелость озвучить совет «во-вторых» — используйте клиент FileZilla. Total Commander хорош в качестве файлового менеджера, но в качестве FTP-клиента все же рекомендую использовать именно FileZilla. На одном из сайтов встречал вот такую вот таблицу сравнения

2. Обновление

Это стандартный совет, которым, тем не менее, пренебрегать не стоит. Разработчики любой поддерживаемой CMS стараются оперативно закрывать найденные уязвимости, выпуская новые версии. Поэтому с выходом обновления WP старайтесь не временить с ее обновлением у Вас. Также не стоит забывать об обновлении плагинов, которые Вы используете.

Здесь нелишним будет также сказать о том, что сам дистрибутив WP стоит брать только с официального сайта. Плагины также, по возможности, стоит качать с официального сайта. Уместным будет процитировать рекомендацию блога Безопасного Поиска Яндекса: используйте «минимум сторонних скриптов, модулей, расширений. В самих пакетах CMS уязвимостей обычно немного, в основном они приходятся на дополнения, причём как сторонней разработки, так и официальные». Если можно решить простую задачу без применения плагина, то однозначно плагин не нужен.

3. Установка WP

При установке WP стоит уделить внимание конфигурационному файлу wp-config.php. Некоторые ограничиваются лишь установкой значений констант, использующихся для соединения с базой данных. Но в этом же файле находятся еще 8 констант, в которых хранятся ключи и соли, используемые для аутентификации. Очень желательно заполнить значения этих констант. Чтобы не выдумывать эти значения, разработчики предлагают сервис для их генерации. Достаточно перейти по ссылке https://api.wordpress.org/secret-key/1.1/salt/ , скопировать уже сгенерированный ключи и заменить ими соответствующий блок кода в конфигурационном файле:

Также можно побеспокоиться о безопасности самого конфигурационного файла. Сделать это можно несколькими способами. Для начала можно попробовать самый простой — просто переместите конфигурационный файл в каталог уровнем выше. WP изначально ищет файл wp-config.php в корне Вашего сайта и, если его там нет, то пытается найти файл в каталоге уровнем выше. Если после перемещения конфигурационного файла сайт перестал работать, тогда попробуйте второй способ. В корне сайта (там, где и конфигурационный файл) уже может находиться файл .htaccess — откройте его в редакторе. Если этого файла еще нет, то создайте его. При создании файла обратите внимание на то, что в качестве типа файла должно быть выбрано «Все типы» («All types»)

В файл .htaccess добавим следующие строки:

<files wp-config.php>
order deny,allow
deny from all
</files>

Этими строками мы закрываем доступ к конфигурационному файлу и теперь при обращении к нему сервер будет отдавать 403 ошибку — доступ запрещен.

4. Ошибки авторизации

Данный совет встречается во многих статьях и это как раз тот самый совет с половинчатым решением, о которых я упоминал выше.

Авторы WP поступили несколько странно и очень неправильно в вопросе авторизации пользователей. Одним из способов взлома сайтов является банальный подбор пароля администратора. При этом нужно подобрать не только пароль, но еще и знать логин аккаунта, к которому подбирается пароль. Поэтому при неверном вводе логина и/или пароля правильно будет сообщать, что были неверно введены логин или пароль, но ни в коем разе не информировать что именно было введено неверно.

Если при попытке авторизации в WP вы ошибетесь с логином или паролем, то WP Вам подскажет, с чем же конкретно Вы ошиблись… это, конечно же, вежливо, но очень неправильно

Текущий совет как раз и призван «научить» WP правильно поступать при ошибках авторизации. Откройте файл функций активной темы — functions.php — и добавьте в него следующие строки кода:

add_filter("login_errors", create_function("$my_login_errors", "return 'Неверный логин или пароль';"));

Теперь при неверно введенных данных мы получим один и тот же ответ — «Неверный логин или пароль»

Вроде бы все замечательно и злоумышленник теперь не знает, что же именно было им введено неверно… но на самом деле это и есть несколько половинчатое решение. Дело в том, что сейчас, когда мы вводим логин и пароль, то в случае если логин введен неверно — форма очищается. Если же логин будет введен верно, то он останется в форме

Этот факт для злоумышленника является четким знаком того, что логин он подобрал. Именно поэтому стоит позаботиться об очистке полей формы в том случае, если логин был введен верно. Как это сделать Вы узнаете в следующих материалах, как я и говорил выше.

5. Скрываем версию WP

Еще один совет из разряда половинчатых — это сокрытие версии WP. По умолчанию WP показывает в исходном коде установленную версию. В метатегах Вы можете найти строку вроде такой:

<meta name="generator" content="WordPress 3.5.1" />

При этом данная строка может встречаться даже дважды, в зависимости от используемой темы. Конечно же, хотелось бы скрыть версию WP, тем самым несколько затруднив задачу злоумышленника, ведь, как Вы помните, каждой версии присущи определенные уязвимости, которые устранены в следующей версии.

Классический совет по удалению строки с версией из метаданных сайта состоит в написании специального хука. Открываем файл functions.php и добавляем в него следующий код:

remove_action('wp_head', 'wp_generator');

Также в шаблоне header.php Вашей темы может быть следующая строка кода:

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats please -->

Если такая есть, то также удалите ее. Теперь если мы посмотрим исходный код, то действительно в коде больше не будет метатега с версией WP. Вроде бы отлично… но все не так просто. На самом деле если мы присмотримся внимательнее к исходному коду, например, будучи авторизованными, то среди прочего увидим там вот такую вот строку кода

<link rel='stylesheet' id='admin-bar-css'  href='http://wp.loc/wp-includes/css/admin-bar.min.css?ver=3.5.1' type='text/css' media='all' />

Как видно, к подключаемому файлу стилей добавляется GET-параметр с версией установленного движка. Аналогичный GET-параметр может добавляться к подключаемым файлам скриптов и стилей различных плагинов. Получается, что все наши старания по сокрытию версии WP были фактически впустую? На самом деле нет. Есть способы убрать ненужный GET-параметр, о которых мы узнаем позже.

Ну и, коль Вы решили скрыть версию установленной CMS, то не забудьте также удалить из корня сайта файл readme.html, в котором указана версия WP… ну или можете изменить ее на другую, тем самым несколько сбив с толку потенциального хакера.

Этим советом мы будем заканчивать текущий урок. Конечно же, здесь можно было дать еще много советов, помогающих значительно обезопасить Ваш сайт под управлением WP, но я старался указать именно на советы, которые недостаточно раскрыты в аналогичных статьях или попросту не упоминаются.

webformyself.com

Добавить комментарий

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.