Опубликовано 7 комментариев

Безопасность WordPress

Защита wordpress

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

Шаг 0 — Выбор хостинг провайдера

Если Вы читаете эту статью — значит хостинг у Вас есть. И что либо рекомендовать поздно:) Запомните на будущее хостинг выбирают НЕ по цене. Но все же порекомендую нескольких хостинг провайдеров в этом обзоре https://dieg.info/vps-hosting/

Шаг 1 — Удалите все лишнее плагины, темы, файлы

Смело удаляйте все неиспользуемые плагины, темы и файлы. Хакеры часто используют отключенные и устаревшие шаблоны и плагины (даже официальные плагины WordPress) для получения доступа к вашей панели управления, или загрузки вредоносного содержимого на ваш сервер. Удаляя плагины и шаблоны, которые вы перестали использовать, вы снижаете риски и делаете ваш сайт на WordPress более безопасным.

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

  1. Удалите неиспользуемые плагины.
  2. Удалите неиспользуемые темы. У вас должно быть максимум 3 темы: первая которую используете на сайте, ее дочерняя тема и тема Twenty One (последняя на 2021 год официальная тема Вордпресс). Twenty One нужно оставить, чтобы в случае поломки (белый экран часто появляется из-за ошибок PHP, тем более если у Вас кастомная тема или плагины ) вашей основной темы Вы могли переключиться на Twenty One и устранить проблемы.
  3. Файлы readme.html и license.txt расположены в корневой папке любой установки WordPress. Это просто текстовые файлы никак не влияющие на работу WordPress, рекомендую удалить их сразу же после установки. Вам эти файлы ни к чему, но они помогают хакерам выяснить текущую версию вашего WordPress и много чего другого полезного для взлома веб-сайта.

Шаг 2 — Включить автообновление движка, плагинов, тем

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

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

Начиная с версии 5.5 в WordPress появилась встроенная функция автоматического обновления тем и плагинов.

  1. Включение автообновления тем: Зайдите в раздел «Внешний вид» —> «Темы», наведите мышку на нужную тему, щелкните «Информация о теме» -> Включите автоматическое обновление.
  2. Включение автообновления плагинов: Перейдите в раздел «Плагины» и на против нужного — включите автообновление.

Если у Вас на сайте есть софт, не совместимый с новыми версиями WordPress, плагина или темы, Вы можете включить выборочное автоматическое обновление плагинов или темы.

Шаг 3 — Удалите админа или использование нестандартных учетных данных для входа

Не используйте такие логин как admin. Строго рекомендуется изменить имя пользователя администратора на что-нибудь другое.

Проще всего задать логин при установке WordPress. Но если он у вас уже установлен — создайте новую учетную запись администратора с другими данными.

  1. Войдите в панель управления WordPress
  2. Найдите раздел Пользователи и нажмите кнопку Добавить нового.
  3. Создайте нового пользователя и назначьте ему права Администратора
  4. Перезайдите в WordPress с вашими новыми данными.
  5. Вернитесь в раздел Пользователи и удалите стандартную учетную запись Admin.
Совет
Хороший пароль играет ключевую роль в безопасности WordPress. Гораздо сложнее взломать пароль состоящий из цифр, букв нижнего и верхнего регистра и специальных знаков.

Рекомендую использовать специализированные инструменты для создания и безопасного хранения паролей, например бесплатную программу KeePass Password Safe.

Дополнительно существует возможность убрать отображение сообщения о том, что введенный логин и пароль неверен. Ведь это тоже информация, которая может помочь злоумышленнику. Чтобы убрать вывод этого сообщения, необходимо открыть файл functions.php, расположенный в папке текущей темы вашего веб-сайта (wp-content/themes/текущая_тема_WordPress) и добавить такой код:

add_filter(‘login_errors’,create_function(‘$a’, “return null;”));

Я использую для отключения информации о неправильном вводе пароля плагин Clearfy Pro.

Шаг 4 — Делайте резервное копирование данных настолько часто, насколько это возможно

Даже самые большие сайты взламываются каждый день, несмотря на тот факт, что их владельцы тратят тысячи на улучшение безопасности WordPress.

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

Внимание
Многие хостинговые компании предоставляют опцию серверных резервных копий БЕСПЛАТНО и казалось бы все хорошо! Но, в настоящий момент я не знаю ни одного хостинг провайдера у которого бы услуга резервирования работала корректно, тем более БЕСПЛАТНО! Возможно я чересчур требователен, но если у Вас был опыт реального восстановления сайта из бекапов провайдера — напишите мне в комментариях. СОВЕТ: не верьте маркетологам выбранного вами хостинга, а проведите тест по восстановлению сайта самостоятельно!

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

  • VaultPress
  • BackUpWordPress
  • BulletProof Security — очень интересный плагин как для защиты сайта, так и для бекапов.
  • BackupGuard
  • UpdraftPlus
  • или найдите плагин по ссылке https://wordpress.org/plugins/tags/backup/
  • WordPress Database Backup — настройки плагина позволяют установить опцию ежедневной отправки резервной копии базы данных на ваш контактный почтовый ящик.
Мой опыт для VPS / VDS/ Dedicated
Если мне приходится администрировать сервер, я обычную настраиваю связку AutoMySQLBackup и BackupPC. Подробная статья Все что нужно знать о резервировании данных.

Шаг 5 — Отключите WP JSON и всякие фичи

WP JSON — этo coкpaщeниe oт WordPress JSON REST API. WP JSON используется для написания пpилoжeния нa paзных плaтфopмaх и нa paзныx языкaх, которые могут yпpaвлять вашим сайтом: добавлять, изменять и yдaлять coдepжимoe, нacтpaивaть тeмы, мeню, виджeты и пpoчee. Как Вы уже догадались он позволяет делать небезопасные вещи!

Поисковые системы зачастую /wp-json/ заносят в индeкc кaк пoдpaздeл сaйтa. С точки зрения SEO в индексе должны быть только страницы, которые приносят трафик, а не технические (мусорные) страницы /wp-json/.

Oтключaя фyнкциoнaл WordPress REST API, пoмнитe, чтo eгo используют нeкoтopые пoпyляpные плaгины, нaпpимep Contact Form 7. Пoэтoмy, ecли вдруг y вac пepecтaлa paбoтaть фopмa oбpaтнoй cвязи, пocмoтpитe, a нe oтключeн ли REST API?

У нас есть как минимум две причины чтобы отключить wp-json — это безопасность и SEO. Для отключения wp-json я использую плагин Clearfy Pro или Вы можете использовать нижеприведённый код.

// Отключаем сам REST API
 add_filter('rest_enabled', '__return_false');
 // Отключаем фильтры REST API
 remove_action( 'xmlrpc_rsd_apis', 'rest_output_rsd' );
 remove_action( 'wp_head', 'rest_output_link_wp_head', 10, 0 );
 remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );
 remove_action( 'auth_cookie_malformed', 'rest_cookie_collect_status' );
 remove_action( 'auth_cookie_expired', 'rest_cookie_collect_status' );
 remove_action( 'auth_cookie_bad_username', 'rest_cookie_collect_status' );
 remove_action( 'auth_cookie_bad_hash', 'rest_cookie_collect_status' );
 remove_action( 'auth_cookie_valid', 'rest_cookie_collect_status' );
 remove_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
 // Отключаем события REST API
 remove_action( 'init', 'rest_api_init' );
 remove_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
 remove_action( 'parse_request', 'rest_api_loaded' );
 // Отключаем Embeds связанные с REST API
 remove_action( 'rest_api_init', 'wp_oembed_register_route');
 remove_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
 remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );

Вставить данный код нужно в functions.php вашей темы, если последней строкой идет ?>, то вставлять код нужно перед ним.

Шаг 6 — Использование .htaccess для улучшения защиты WordPress

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

.htaccess это файл необходимый для корректной работы ссылок WordPress. Без правильных записей в файле .htaccess, вы будете получать много ошибок 404.

Важно
Сразу после инсталляции WordPress все настройки .htaccess правильные! Вам может потребоваться настроить только переадресации с www и http на https. Классический способ настройки этих редиректов действительно через правку файла .htaccess, но прежде чем править — изучите документацию вашего хостинг провайдера, очень часто хостинги предлагают свое собственное решение для настройки редиректов.

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

Код, который не даст просмотреть папки на вашем сервере, набрав их полный путь. Для проверки, наберите в браузере http://yourdomain.com/wp-includes и если вы увидите всё содержимое папки «wp-includes» — это проблема безопасности вашего веб-сервера. Простое решение — это создать пустой индексный файл index.html в каждом каталоге. Более правильное и быстрое решение, настроить ответ сервера – 403 Forbidden через .htaccess. Для этого в .htaccess добавьте строку:

Options –Indexes

Защита файла wp-config.php

Самый важный файл в WordPress это wp-config.php, который содержит основные настройки WordPress, в том числе пароль и логин к подключению базы данных MySQL. Поэтому он чаще всего становится главной целью хакеров. Чтобы обезопасить wp-config.php используя следующие правила в .htaccess:

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

Запрет доступа к админке WordPress

При помощи .htaccess можно запретить доступ к админской панели WordPress по IP адресу. Не рекомендуется использовать этот способ, если у вас динамический IP адрес.

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

<LIMIT GET>
Order deny,allow
Deny from all
Allow from xx.xx.xx.xxx
Allow from xx.xx.xx.xxx
</LIMIT>

Обязательно измените XX.XX.XX.XXX на ваш IP адрес. Вы можете использовать наш сервис для проверки вашего нынешнего IP. Если вы используете больше чем одно подключение для управления сайтом на WordPress, то удостоверьтесь, что написали другие IP адреса (добавляйте столько адресов, сколько вам понадобится).

Шаг 7 — Плагины защиты WordPress от вредоносных программ

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

  1. Wordfence Security — антивирус, брандмауэр и сканер вредоносных программ. Wordfence предлагает руководство по применению и возможность автоматической проверки, вместе с кучей других разных настроек.
  2. Sucuri Security плагин защищает от DDOS атак, содержит черный список, сканирует ваш сайт на наличие вредоносных программ и управляет вашим фаерволом. Google, Norton, McAfee – в этот плагин включены все черные списки из этих программ. При обнаружении проблема вы будете оповещены через электронную почту.
  3. WP Cerber Security — очень не плох и удобен. Пользуюсь им. Кстати вы не найдете его в официальных плагинах Worpdress, потому что он считается не надежным:)
  4. BulletProof Security (СЛОЖНЫЙ в понимании его работы и соответственно в настройке) — сканер вредоносного кода, файрвол, защита формы авторизации, создание резервных копий базы данных, анти-спам. Функция сравнения в базе данных. Резервные копии БД: полные, частичные резервные копии БД, создание резервных копий вручную, по расписанию, отправка резервных копий в архиве на email, автоматическое удаление устаревших резервных копий по расписанию.
  5. All-In-One Security (AIOS) – Security and Firewall
  6. Defender Security – Malware Scanner, Login Security & Firewall

Существует большое количество специальных плагинов безопасности, разработанных для WordPress. Вы можете найти их здесь: https://wordpress.org/plugins/tags/security/.

Шаг 8 — Не используйте nulled шаблоны для WordPress

Nulled-продукты – это пиратские копии платных тем и плагинов, распространяемых в Интернете незаконно.

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

Шаг 9 — Включение двухэтапной аутентификации

Двухэтапная аутентификация — это метод защиты учетной записи, основанный на применении следующих двух факторов: известная только вам информация (пароль) для входа в систему и ваше физическое устройство (мобильное устройство или ключ).

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

Популярные плагины двухфакторной верификации для WordPress:

  • Keyy Two Factor Authentication позволяет не запоминать пароль, а использовать для входа сканирование QR кода.
  • Google Authenticator предоставляет двухфакторную аутентификацию с помощью приложения Google Authenticator для Android / iPhone / Blackberry.

Шаг 10 — Изменение стандартных префиксов базы данных WordPress для предотвращения SQL injection

Внедрение SQL-кода (англ. SQL injection) — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода. Внедрение SQL, в зависимости от типа используемой СУБД и условий внедрения, может дать возможность атакующему выполнить произвольный запрос к базе данных (например, прочитать содержимое любых таблиц, удалить, изменить или добавить данные), получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере.

Ключевой момент: Атака типа внедрения SQL может быть возможна из-за некорректной обработки входных данных, используемых в SQL-запросах. Говоря простым языком, в каком-то из плагинов или теме не корректно (не безопасно) обрабатываются вводимые посетителем вашего сайта данные.

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

Изменение префикса базы данных WordPress.

Если вы профессиональный экспериментатор — найдите руководство по смене префикса на любом другом сайте. Удачи!

Шаг 11 — Скрывайте версию WordPress, скриптов и стилей

WordPress по умолчанию добавляет номер текущей версии в исходный код своих файлов и страниц.

<meta name="generator" content="WordPress 5.7.1" />
<meta name="generator" content="WooCommerce 5.2.2" />

Довольно часто не всегда удается вовремя обновлять версию WordPress, это может стать слабым местом вашего веб-сайта. Зная, какая у вас версия WordPress, хакер может принести много вреда. Для запрета вывода информации о версии вашей платформы, добавьте в файл functions.php строку:

remove_action(‘wp_head’, ‘wp_generator’);

Я использую плагин Clearfy Pro, который имеет настройки для:

  1. Удаляет meta тег из секции head. Позволяет злоумышленникам узнать версию WP, установленную на сайте. Этот meta тег никакой полезной функции не несет.
  2. Удаляет версии у стилей. WP, темы и плагины часто подключают стили с указанием версии файла, плагина или движка, выглядит это так: ?ver=4.7.5. Такое подключение позволяет злоумышленникам узнать версию плагина, движка. Также не все прокси — сервера и CDN сервисы умеют кешировать файлы, в конце адреса которых указан параметр ver, что увеличивает время загрузки страницы вашего сайта.
  3. Удаляет версии у скриптов. Как и со стилями, скрипты подключаются с указанием версии файла, плагина или движка, выглядит это так: ?ver=4.7.5.

Заключение

В интернете существуют два противоположных мнения:

  • Мнение 1: Несмотря на то, что WordPress самая взламываемая CMS в мире, улучшить ее защиту не так тяжело.
  • Мнение 2: Как бы грустно это ни звучало, но защита WordPress – вещь сложная, и любые действия не гарантируют на 100%, что ваш сайт будет полностью защищен от каких-либо действий мошенников.

Уважаемые Вебмастера, делайте бэкапы и спите спокойно! Но в основах защиты WordPress разберитесь самостоятельно, не делегируйте. Для понимания основных методов защиты WordPress достаточно разобраться с рекомендациями этой статьи.

P.S. Если у вас возникли трудности, Вы можете заказать установку или перенос сайта, выбор и настройку хостинга под ваши задачи на странице контактов.

darkfire

7 комментариев к “Безопасность WordPress

  1. Запугали конкретно. Даже не думал раньше, что WP самая слабая в плане безопасности площадка.
    Ладно. Будем жить и работать дальше.
    А что делать!

    1. К сожалению WordPress является лидером среди CMS по разработке сайтов, магазинов. Поэтому хакеры часто нацелены на взлом защиты сайтов на WordPress. Но к счастью 🙂 из-за такой популярности цена на программиста Вердпресс существенно ниже, чем например на Битрикс или тот же Друпал.

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

  3. Рекомендуют ограничивать количество попыток входа. Это один из простых способов остановить атаки грубой силы на странице входа в систему.
    Что вы посоветуете?

    1. Атака грубой силы работает, пытаясь получить ваше имя пользователя и пароль, повторяя несколько комбинаций для входа снова и снова. Если определенный IP-адрес, который совершает атаку, отслеживается, вы можете заблокировать повторные попытки и обеспечить безопасность своего сайта. При глобальных DDOS аттаках с несколькими IP-адресов такая блокировка тоже может помочь, хотя бы частично. В случае DDos вашего сайта нужно обращаться к хостинг провайдеру за помощью.

      Используйте плагин WordPress Login LockDown

  4. Спасибо не знал на счет версии скриптов, что они отменяют кеширование.

  5. Очень информативная и полезная статья для тех, у кого сайт на Вордпрессе. О безопасности нужно думать постоянно.

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

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