B2BPRO.KZ | Рекламное агентство в Алматы

Как защитить сайт на WordPress от взлома: базовый набор мер

Разработчик за ноутбуком, над монитором стеклянный щит с замком и объёмное слово WordPress

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

Знакомая ситуация: сайт компании годами работает без внимания, а потом в поиске появляется чужой текст про казино, хостинг присылает письмо о блокировке или менеджер замечает, что форма заявок уходит куда-то не туда. К этому моменту уязвимость обычно открыта давно: устаревший плагин, забытый тестовый администратор, один пароль на всё. Ниже порядок действий, который мы применяем на проектах B2BPRO.KZ.

Как чаще всего взламывают сайты на WordPress

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

Типовые пути проникновения выглядят так:

  • уязвимость в плагине или теме, которую давно закрыли в новой версии, но сайт так и не обновили;
  • простой пароль администратора или один и тот же пароль на почту, хостинг и сайт;
  • доступ по FTP, который хранится в клиенте FTP на заражённом компьютере;
  • тема или плагин из непроверенного источника с вшитым чужим кодом;
  • старые копии сайта и тестовые папки на том же сервере, о которых все забыли.

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

Что значит «взлом» и как понять, что он случился

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

В документации WordPress перечислены индикаторы компрометации: сайт попал в чёрный список Google или Bing, хостинг отключил сайт, сайт помечен как распространяющий вредоносное ПО, посетители жалуются на антивирус, появились неавторизованные действия вроде новых пользователей, либо взлом виден прямо на странице. Источник — справка WordPress «Мой сайт взломали».

Скрытые признаки заметить сложнее. Проверьте:

  1. список пользователей в админке: нет ли администраторов, которых вы не создавали;
  2. выдачу Google по запросу site:ваш-домен.kz: нет ли страниц с чужими темами;
  3. письма, которые уходят с вашего сайта: не стало ли их подозрительно много;
  4. скорость сайта и нагрузку на хостинге: резкий рост без причины часто связан с чужими скриптами;
  5. недавно изменённые файлы в папках темы и плагинов.

С чего начать: обновления ядра, плагинов и тем

Первое, что нужно сделать, — привести всё к актуальным версиям. В руководстве по укреплению WordPress прямо рекомендуется всегда держать установку обновлённой и скачивать ядро только с wordpress.org: руководство WordPress по укреплению безопасности.

На практике это значит три привычки:

  • раз в неделю заходить в раздел «Обновления» и ставить доступные версии;
  • перед крупными обновлениями делать резервную копию и проверять сайт на тестовой копии, если он сложный;
  • не откладывать обновления плагинов, у которых в описании упомянуты исправления безопасности.

Если сайт обновляют раз в полгода, то при каждом таком обновлении что-то ломается, потому что накопилось слишком много версий. Ровное и частое обновление безопаснее и проще, чем редкое и большое.

Сколько плагинов и тем нужно сайту

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

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

Короткая проверка, которую стоит провести на любом сайте:

  1. откройте список плагинов и выпишите те, что отключены или не используются;
  2. удалите их, а темы, кроме активной и одной запасной, тоже уберите;
  3. для оставшихся посмотрите дату последнего обновления в каталоге: плагин, который не обновлялся несколько лет, стоит заменить;
  4. никогда не ставьте «взломанные» платные плагины из сомнительных источников: именно в них чаще всего вшивают вредоносный код.

Какие пароли и права доступа нужны

Для каждого сервиса нужен длинный уникальный пароль, а администраторам сайта нужна двухфакторная проверка. Менеджера паролей достаточно для всех задач сразу: он генерирует и хранит пароли, и вам не придётся ничего запоминать.

Что менять и проверять:

  • пароль администратора WordPress, пароль FTP или SFTP, пароль панели хостинга и пароль базы данных;
  • логин администратора: в руководстве WordPress советуют не использовать очевидные имена вроде «admin» и «webmaster»;
  • список пользователей: у каждого сотрудника должна быть своя учётная запись, а не общий логин, и права должны соответствовать роли;
  • учётные записи уволившихся сотрудников и бывших подрядчиков: их нужно удалять в день ухода.

Двухфакторная аутентификация (2FA) — это вход с вторым подтверждением, обычно кодом из приложения на телефоне. В материале WordPress о многофакторной аутентификации подчёркнуто, что слабейшее звено в безопасности любых онлайн-действий — пароль, и перечислены плагины для двухфакторного входа, среди них Two-Factor, Duo и Rublon. Подробности — справка WordPress о многофакторной аутентификации. Для двухфакторного входа понадобится плагин, поэтому выбирайте тот, который регулярно обновляется.

Какие настройки WordPress нужно закрыть

Сначала закройте редактирование файлов из админки, затем настройте права на файлы и защитите файл wp-config.php. Эти меры занимают около получаса и не требуют покупки дополнений.

Запрет редактирования файлов в админке

Если злоумышленник получит доступ в админку, встроенный редактор тем и плагинов позволит ему вставить свой код за секунды. В wp-config.php добавляется строка define( 'DISALLOW_FILE_EDIT', true );, и редактор пропадает из меню. Это рекомендация из того же руководства по укреплению. Минус: править файлы темы придётся через SFTP или систему контроля версий, но для рабочего сайта это нормальная практика.

Права на файлы и папки

В руководстве WordPress приведены безопасные значения: 755 для папок и 644 для файлов. Они дают владельцу нужные права и не позволяют другим пользователям сервера свободно менять содержимое. Проверить и выставить права можно через панель хостинга или по SSH. Права 777 на папки, которые встречаются в старых инструкциях, на рабочем сайте ставить нельзя.

Файл wp-config.php

В wp-config.php лежат данные доступа к базе. По руководству WordPress, его можно вынести на уровень выше корня сайта, а в файле .htaccess запретить к нему доступ директивой Require all denied внутри блока <Files "wp-config.php">. Какой вариант подходит, зависит от хостинга: на части площадок перенос файла работает не так, как ожидается, поэтому после правки обязательно проверьте, что сайт открывается.

Префикс таблиц базы данных

Руководство советует менять стандартный префикс wp_, чтобы затруднить атаки, рассчитанные на типовые имена таблиц. Менять префикс на уже работающем сайте нужно осторожно: он затрагивает названия таблиц и записи в самой базе, поэтому лучше задавать его при установке или поручить специалисту с резервной копией.

Как должны работать резервные копии

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

Правила, которых мы придерживаемся:

  1. копируются и файлы, и база данных, а не что-то одно;
  2. копии хранятся минимум в двух местах, одно из которых не на том же сервере;
  3. частота зависит от того, как часто меняется сайт: для магазина копия нужна каждый день, для сайта-визитки хватит раза в неделю;
  4. раз в квартал проводится пробное восстановление на тестовой копии;
  5. хранится несколько последних версий, а не одна: если заражение обнаружили через две недели, свежая копия уже заражена.

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

Что делать, если сайт уже взломали

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

Расшифруем главное:

  1. Зафиксируйте происходящее. Запишите время, симптомы и последние действия: ставили ли новый плагин, меняли ли тему. Это поможет и вам, и специалистам.
  2. Проверьте свой компьютер. Если на нём вредоносная программа, смена паролей с него бесполезна: новые пароли тоже будут перехвачены.
  3. Сообщите хостингу. На общем хостинге заражение может затрагивать соседние сайты, а блокировка почтовых адресов из-за спама — частое последствие взлома.
  4. Смените доступы. Это FTP/SFTP, админка WordPress, панель хостинга и база данных. Также обновите секретные ключи в wp-config.php: после этого все, кто был авторизован, будут разлогинены.
  5. Сохраните копию заражённого состояния. Она пригодится для разбора, даже если выглядит бесполезно.
  6. Очистите сайт. Папки wp-admin и wp-includes можно безопасно заменить чистыми файлами той же версии через SFTP, а не через кнопку переустановки в админке, потому что она перезаписывает только существующие файлы, а взломщики часто добавляют новые. Отдельно проверьте .htaccess, index.php, header.php, footer.php и файл functions темы.
  7. Обновите всё и смените пароли ещё раз, уже после очистки.
  8. Разберите причину. Пока вы не поняли, как попали в сайт, зараза вернётся.

Очистку самому делать не обязательно. Если нет опыта, это работа для специалиста: ошибка при ручной чистке может уничтожить данные.

Какой хостинг помогает защитить сайт

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

Перед выбором или переездом задайте провайдеру несколько вопросов:

  • изолированы ли аккаунты на одном сервере, чтобы заражение соседнего сайта не перекинулось на ваш;
  • делает ли хостинг собственные копии, как долго их хранит и можно ли восстановить из них сайт без обращения в поддержку;
  • какие версии PHP доступны и обновляются ли они: сайт на давно снятой с поддержки версии остаётся без исправлений безопасности;
  • включён ли HTTPS для вашего домена и продлевается ли сертификат автоматически;
  • как быстро отвечает поддержка в выходные: взлом редко случается в рабочее время.

Если у вас дешёвый общий хостинг, где на одном сервере сотни сайтов, риск заражения от соседей выше. Для корпоративного сайта, который приводит заявки, разумнее выбрать виртуальный сервер или хостинг с изоляцией аккаунтов.

Типичные ошибки, которые делают сайт лёгкой добычей

Один пароль на всё

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

Общий логин для всей команды

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

Тестовый сайт на том же сервере

Старая копия сайта в соседней папке, которая не обновляется годами, — частая точка входа. Если тестовая копия не нужна, удалите её. Если нужна, закройте паролем и обновляйте так же, как основной сайт.

Обновления без копии

Обновлять нужно, но с резервной копией под рукой. Иначе при конфликте плагинов сайт окажется недоступен, и в панике владелец отключает защиту или откладывает обновления навсегда.

Отсутствие ответственного

Главная причина запущенных сайтов: непонятно, кто за них отвечает. Назначьте человека или подрядчика, определите, что он проверяет и как часто, и зафиксируйте это письменно.

Как проверить сайт самостоятельно за час

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

  1. Сколько обновлений ждёт установки в ядре, плагинах и темах.
  2. Какие плагины и темы не используются.
  3. Какие пользователи есть в админке и у кого права администратора.
  4. Есть ли двухфакторная проверка у всех администраторов.
  5. Когда последний раз делали резервную копию и где она лежит.
  6. Закрыто ли редактирование файлов в админке.
  7. Что показывает внешний сканер на странице вашего сайта.

Если на три и более пункта вы отвечаете «не знаю» или «давно не проверяли», сайт нуждается в аудите. Такой разбор занимает у специалиста небольшое время и обычно сразу показывает, что исправлять в первую очередь.

Нужно ли ставить плагин безопасности

Плагин безопасности полезен как дополнение, но не заменяет остальные меры. Он сканирует файлы на изменения, ограничивает число попыток входа и сообщает о подозрительных действиях. В документации WordPress среди сканеров для проверки сайта упомянуты Wordfence, Sucuri, Quttera и GOTMLS, а среди внешних проверок — VirusTotal и Sitecheck.

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

Как организовать регулярную защиту сайта в компании

Защита сайта — это процесс, а не разовая настройка. В небольшой компании его удобно разбить на три ритма.

  • Каждую неделю. Проверка обновлений, просмотр списка пользователей, быстрый взгляд на работу форм.
  • Каждый месяц. Проверка резервных копий, удаление лишних плагинов, сканирование на вредоносный код, просмотр журнала входов.
  • Раз в квартал. Пробное восстановление из копии, пересмотр прав сотрудников, смена паролей у тех, кто уходил или менял роль.

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

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

Частые вопросы

Почему взламывают сайты на WordPress, если он безопасен?

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

Нужно ли ставить плагин безопасности на сайт?

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

Как понять, что сайт заражён вирусом?

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

Можно ли вылечить взломанный сайт самому?

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

Как часто нужно делать резервные копии сайта?

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

Прокрутить вверх