Настройка ВП Безопасность сайта на Вордпресс

Тема в разделе "Wordpress", создана пользователем MAzZY, 6 май 2020.

  1. MAzZY

    MAzZY Генератор идей

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

    1) Своевременно обновляйте сам движок и все плагины и шаблоны
    Это самая распространённая проблема, которую я встречаю на сайтах. Владельцы либо забивают на это дело, либо боятся, что что-то пойдёт не так. Бояться здесь нужно только одного - взлома сайта. Самый страшный грех - установка плагинов, блокирующих обновления.
    Здесь очень важно понимать, что нередко к движку выходят обновления безопасности для всех веток и они автоматически устанавливаются. Пропуск пары-тройки таких обновлений подвергает сайт большой опасности.
    Вот, например, список уязвимостей для версии 5.2 и указание, в каких версиях были исправления. Там же не сложно найти свою версию и узнать, какой опасности вы подвергаете свой сайт.
    На всякий случай напомню, что устанавливать плагины следует только с официального сайта и/или через админку (Плагины - Добавить новый) - там поиск ведётся по этой же базе.
    И перед установкой любого плагина убедитесь, что он обновлялся не так давно (в пределах года). Старые плагины устанавливать не следует! Как и держать на сайте. Если какой-то из используемых вами плагинов давно не обновлялся - ищите ему замену.

    2) Не используйте логин admin
    Если у вас есть такой пользователь, то необходимо его удалить. Делать это нужно следующим образом:
    - делаем бэкап базы данных
    - создаём нового пользователя, логин которого никак не похож на имя сайта или его домен. Так же этот логин не должен совпадать с логином от фтп и/или панели хостинга.
    - даём ему админские права и хороший пароль
    - удаляем пользователя admin и при удалении указываем, на какого пользователя передать все записи и страницы.

    3) Закройте доступ в админку
    Для этого есть множество плагинов. Найдите подходящий по словам lockdown admin. Его задача - сменить адрес страницы входа в админку на некий произвольный, который никто не будет знать.

    4) Убедитесь, что в вашем файле wp-config.php есть соли для аутентификации
    Если сайт старый, то у него, скорее всего, никогда не менялся этот файл. Соответственно, в нём могут отсутствовать важные строки.
    Выглядят они вот так.
    upload_2020-5-6_11-22-46.png
    Если их нет, то нужно сгенерировать их по этой ссылке и вставить в файл конфига. Если они есть, никто не мешает их вам обновить, раз уж вы сюда зашли. Внимание - после прописывания этих строк все пользователи будут выброшены из админки и придётся логиниться заново.

    5) Убедитесь, что в файле htaccess нет никаких лишних строк
    Искать его нужно в корне сайта, т.е. там, где находится файл wp-config.php
    По умолчанию он выглядит как-то так.
    upload_2020-5-6_11-23-30.png
    Там ещё могут быть строки от плагинов - они обязательно будут специальным образом отмечены. Всё остальное, если это не вы прописывали, является подозрительным и должно быть внимательно изучено. Если не знаете, что к чему, то в этой теме мы разбираем такие вопросы.
    Отдельно отмечу, что это не превентивная мера. Если вы там увидите явно посторонние строки, то ваш сайт уже взломали, и теперь его надо лечить, а только потом - защищать.

    6) Проверьте свои плагины и шаблоны на наличие файла timthumb.php
    В старых шаблонах и плагинах можно встретить этот файл. Там он использовался для обработки и вывода миниатюр. Про плагины я сказал выше: старые необходимо удалить. С шаблонами сложнее - не все хотят их менять. Поэтому крайне уязвимый скрипт, не обновлявшийся с 2014 года, до сих пор встречается в шаблонах. Да-да, я буквально на днях переделывал один такой шаблон.
    Если вы такое обнаружили у себя, то вариантов у вас мало: срочно сменить шаблон на какой-то более современный или же менять вывод миниатюр на штатный функционал.
    Есть ещё скрипт bfi_thumb. Он тоже не обновлялся уже более пяти лет, но мне не известно о его уязвимостях. Но известно, что он используется в некоторых шаблонах от Гудвина и даже от askaria. Его я рекомендую тоже устранить. Как минимум в целях превентивной защиты. Помните: всё старое - уязвимо.

    7) Запретите правку файлов из админки
    Открываем wp-config.php и добавляем туда строчки

    PHP:
    // Disallow file edit
    define'DISALLOW_FILE_EDIT'true );
    8) Запретите просмотр каталогов на хостинге
    Некоторые хостинги по умолчанию не имеют настройки, запрещающей просмотр каталогов сайтов. Если по адресу вашсайт.ru/wp-content/uploads/ вы видите не белый экран или надпись Forbidden, а список каталогов, то необходимо в файл .htaccess в корне сайта вписать эту строку:

    Код:
    Options -Indexes
    9) Отключите XML-RPC, если не используете его
    Открываем файл functions.php вашего шаблона и в конце добавляем строку

    PHP:
    add_filter('xmlrpc_enabled''__return_false');
    10) Включите REST API
    Пока не закрыли файл functions.php, удалите (или хотя бы закомментируйте) из него вот эти строки:
    PHP:
    add_filter('rest_enabled''__return_false');

    remove_action'xmlrpc_rsd_apis',  'rest_output_rsd' );
    remove_action'wp_head',  'rest_output_link_wp_head'10);
    remove_action'template_redirect',  'rest_output_link_header'11);
    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 );
    remove_action'init',  'rest_api_init' );
    remove_action'rest_api_init''rest_api_default_filters'10);
    remove_action'parse_request''rest_api_loaded' );
    remove_action'rest_api_init',  'wp_oembed_register_route'  );
    remove_filter'rest_pre_serve_request''_oembed_rest_pre_serve_request'10);
    Их может быть меньше, может быть больше. Но вы их узнаете, скорее всего. Добавлением этих строчек грешили многие создатели шаблонов в наших краях (я уже показывал пальцем на них). Времена борьбы со всем новым и незнакомым прошли, а ни в чём не виноватый REST API так и остался заблокирован.
    Это не относится напрямую к безопасности, но относится к корректности и стабильности работы сайта, потому что очень многие плагины сейчас используют REST API в своей работе.

    11) Измените префикс таблиц базы данных
    Это довольно сложная процедура для большинства вебмастеров. Если сайт изначально был установлен со стандартным префиксом, то изменить его бывает проблематично. Так что это рекомендация для опытных пользователей. Остальным я это рекомендовать не буду, потому что велика вероятность поломки сайта.

    12) Удалите неиспользуемые плагины и шаблоны
    Если плагин вам не нужен, то смело удаляйте его. Будет надо - установите заново.
    Тоже самое касается и шаблонов. Необходимо оставить только работающий шаблон (и его родительский) и последний стандартный шаблон самого Вордпресс. На данный момент это TwentyTwenty. Он нужен на тот случай, если в рабочем шаблоне произойдёт сбой, - тогда движок автоматически включит стандартный. Конечно, не лучшая замена, но хоть как-то сайт будет работать, пока не устраните поломку основного.


    И отдельно несколько общих советов:
    1) Для обеспечения безопасности Вордпресс существует множество плагинов. Вы можете выбрать себе любой, наиболее подходящий. Там есть и комплексная защита, и решение отдельных проблем.
    Они помогут вам выполнить большинство из перечисленных выше работ, а так же будут следить за соответствием стандартам безопасности, контролировать неизменность файлов, защищать от посторонних ботов и т.д. Не буду здесь про них рассказывать, потому что это отдельный большой разговор.

    2) В Вордпресс 5+ версии есть встроенный инструмент "Здоровье сайта". Можно его расширить, установив плагин Health Check & Troubleshooting.
    С помощью него можно узнать базовую информацию о сайте, проверить хостинг и настройки на соответствие требованиям движка и т.д.

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

    4) Установите на сайт SSL сертификат, чтобы он был доступен только по протоколу HTTPS. Кроме того, что это теперь уже обязательное требование всех браузеров и поисковиков, это так же позволяет защитить сайт и его посетителей от ряда атак.

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

    Ещё раз напомню, что данный список не является всеобъемлющим и не может считаться панацеей от всех бед. Каждый вебмастер обязан ответственно относиться к своему сайту и его безопасности. Нельзя всё пускать на самотёк и надеяться, что как-то само собой рассосётся и образуется. Всё непонятное, необычное, странное в работе сайта должно сразу же пристально изучаться и устраняться.

    Если вы не можете самостоятельно выполнить все эти меры по организации безопасности своего сайта или просто боитесь это сделать самостоятельно, то можете обратиться ко мне.
     
    MAzZY, 6 май 2020
    #1
    Maribella, Леона, Vera_Karpova и 7 другим нравится это.
  2. Ирэнка

    Ирэнка Well-Known Member

    Спасибо за советы по безопасности сайта, очень полезно!
     
    Ирэнка, 6 май 2020
    #2
    MAzZY нравится это.
  3. MAzZY

    MAzZY Генератор идей

    Забыл добавить важный момент.
    Если у вас на одном аккаунте хостинга/фтп находится несколько сайтов, то они должны быть одинаково защищены.
    Нередко видел ситуации, когда вебмастера просто отмахиваются - "это мой старый сайт, он мне не нужен, я им не занимаюсь, но удалить жаль".
    Тут важно понимать, что если взломают этот старый сайт, то все усилия по обеспечению безопасности остальных сайтов пойдут прахом. Злоумышленник, получивший доступ к одному сайту, получает доступ ко всем остальным в рамках этого аккаунта.
     
    MAzZY, 6 май 2020
    #3
    Леона нравится это.
  4. Laolla

    Laolla Well-Known Member

    Отличный пост! Скину ссыль своей знакомой. Пусть читает. Недавно купила сайт на ВП, теперь сидит с квадратными глазами))
     
    Laolla, 6 май 2020
    #4
    Vera_Karpova и MAzZY нравится это.
  5. MAzZY

    MAzZY Генератор идей

    Приглашайте её сюда, будем ей глаза округлять :D
     
    MAzZY, 6 май 2020
    #5
    Vera_Karpova и Laolla нравится это.
  6. MAzZY

    MAzZY Генератор идей

    Как раз новость о том, как важно вовремя обновлять и плагины, и шаблоны
    https://www.securitylab.ru/news/508077.php

     
    MAzZY, 7 май 2020
    #6
    Maribella нравится это.