WordPress является настолько распространенным, что всё больше разработчиков создают для него готовые темы и плагины. В то время как большинство из них облегчают работу с вашим сайтом и расширят его функциональность, некоторые могут скрывать в себе вирусы или открывать двери для хакеров. Эта статья поможет минимизировать риск взлома вашего сайта и научит быть готовым к любым ситуациям.
Выбор хостинга для WordPress
Если Вы читаете эту статью — значит хостинг у Вас есть. И что либо рекомендовать поздно:) Запомните на будущее хостинг выбирают НЕ по цене. Рекомендую обратить внимание на хостинг провайдеров в обзоре https://dieg.info/vps-hosting/.
Сейчас набирает популярность услуга управляемый хостинг WordPress. Если вы приобрели такую услугу это означает, что вам читать дальше не надо. Большинство шагов описанных ниже или уже реализовано технической поддержкой или вам настроят по запросу.
Правило 1: Работать должен Веб-сервер, а не WordPress
В настоящее время я предпочитаю настраивать связку Nginx+PHP-FPM для WordPress, без панели управления хостингом. Поэтому в статье будет приводится код для настройки Nginx, для Apache и LiteSpeed аналогичный код вы можете найти в Интернет. В случае если у вас управляемый хостинг WordPress и вы не имеете доступа к настройкам вашего веб-сервера обратитесь в техническую поддержку вашего хостинг провайдера.
Что я имею ввиду под утверждением: работать должен Веб-сервер, а не движок WordPress? Все пользовательские запросы, которые может обрабатывать веб-сервер он их и должен обрабатывать, а не WordPress. Любой запрос к вашему сайту создает нагрузку на него. Чем больше нагрузка, тем хуже работает ваш сайт. В общем случае моя рекомендация поможет снять нагрузку с плагинов кеширования, плагинов безопасности, то есть не только ускорить ваш сайт, но сделать его более безопасным. Итак, веб-сервер должен быть оптимизирован для работы с WordPress, а не наоборот. WordPress — это мощная платформа, но она может быть требовательной к ресурсам. Если веб-сервер не оптимизирован для работы с WordPress, это может привести к проблемам с производительностью и доступностью.
Рассмотрим мою рекомендацию на самом простом примере, чтобы понять как ваш сайт на WordPress или другой CMS станет более безопасным и быстрым. Итак, файлы readme.html и license.txt расположены в корневой папке любой установки WordPress. Это просто текстовые файлы никак не влияющие на работу WordPress, их рекомендуют удалить их сразу же после установки. Вам эти файлы ни к чему, но они помогают хакерам выяснить текущую версию вашего WordPress и много чего другого полезного для взлома веб-сайта.
Как видим рекомендация правильная и казалось бы простая в реализации. Но те же txt файлы находятся также в директориях плагинов. Значит нужно удалять и там. А после обновления плагина, они появятся снова. Также нагрузка от запросов хакеров на ваш сайт может существенно замедлить его работу. Элегантно эта проблема решается в любом веб-сервере, например в Nginx, код запрещает доступ к файлам с расширением log, txt, sql в любой директории вашего сайта.
location ~ \.(log|txt|sql)$ { deny all; access_log off; log_not_found off;}
Мы этой строчкой кода обезопасили ваш сайт. Следующая строчка кода также ускорит ваш сайт, запретив доступ к файлу xmlrpc.php, который используется для удаленного доступа к вашему сайту:
location = /xmlrpc.php { deny all; access_log off; log_not_found off;}
Правило 2: Включите автообновление движка, плагинов, тем
Если вы не хотите обновлять WordPress, потому что делали изменения в файлах, то лучше создать дочернюю тему, перенести изменения в нее, и все таки включите обновления.
Начиная с версии 5.5 в WordPress появилась встроенная функция автоматического обновления тем и плагинов.
- Включение автообновления тем: Зайдите в раздел «Внешний вид» —> «Темы», наведите мышку на нужную тему, щелкните «Информация о теме» -> Включите автоматическое обновление.
- Включение автообновления плагинов: Перейдите в раздел «Плагины» и на против нужного — включите автообновление.
Если у Вас на сайте есть софт, не совместимый с новыми версиями WordPress, плагина или темы, Вы можете включить выборочное автоматическое обновление.
Правило 3: Не используйте nulled шаблоны для WordPress
Nulled-продукты – это пиратские копии платных тем и плагинов, распространяемых в Интернете незаконно.
Скажу кратко, в конечном итоге Вы больше заплатите разработчику за очистку вашего сайта от вредоносного кода, чем сэкономите на установке обнуленного шаблона или плагина.
Правило 4: Делайте резервное копирование данных настолько часто, насколько это возможно
Даже самые большие сайты взламываются каждый день, несмотря на тот факт, что их владельцы тратят тысячи долларов на улучшение безопасности сайта.
Не все атаки злоумышленников возможно предупредить, но всего лишь одна успешная атака может уничтожить все усилия по работе над вашим сайтом. Советуем делать регулярные резервные копии веб-сайта.
Существует несколько путей для создания бэкапов. Вы можете вручную скачать файлы сайта и экспортировать базу данных, или как я писал выше, воспользоваться инструментами, предлагаемыми вашим хостинг тарифом (я не зря употребил слово тариф — привет маркетологам). Еще один путь, использовать WordPress плагины, например:
- BulletProof Security — очень интересный плагин как для защиты сайта, так и для бекапов.
- WordPress Database Backup — настройки плагина позволяют установить опцию ежедневной отправки резервной копии базы данных на ваш контактный почтовый ящик.
Существует большое количество специальных плагинов безопасности, разработанных для WordPress. Вы можете найти их по ссылке https://wordpress.org/plugins/tags/backup/.
Защита сайта на WordPress, рекомендации
Удалите все лишнее плагины, темы, файлы
Смело удаляйте все неиспользуемые плагины, темы и файлы. Хакеры часто используют отключенные и устаревшие шаблоны и плагины (даже официальные плагины WordPress) для получения доступа к вашей панели управления, или загрузки вредоносного содержимого на ваш сервер. Удаляя плагины и шаблоны, которые вы перестали использовать, вы снижаете риски и делаете ваш сайт на WordPress более безопасным.
Например, вы устанавливали плагины, чтобы протестировать и выбрать тот, который будете использовать. После выбора не забудьте удалить все ненужные.
- Удалите неиспользуемые плагины.
- Удалите неиспользуемые темы. У вас должно быть максимум 3 темы: первая которую используете на сайте, ее дочерняя тема и тема Twenty One (последняя на 2021 год официальная тема Вордпресс). Twenty One нужно оставить, чтобы в случае поломки (белый экран часто появляется из-за ошибок PHP, тем более если у Вас кастомная тема или плагины ) вашей основной темы Вы могли переключиться на Twenty One и устранить проблемы.
Как скрыть версию 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, который имеет настройки для:
- Удаляет meta тег из секции head. Позволяет злоумышленникам узнать версию WP, установленную на сайте. Этот meta тег никакой полезной функции не несет.
- Удаляет версии у стилей. WP, темы и плагины часто подключают стили с указанием версии файла, плагина или движка, выглядит это так: ?ver=4.7.5. Такое подключение позволяет злоумышленникам узнать версию плагина, движка. Также не все прокси — сервера и CDN сервисы умеют кешировать файлы, в конце адреса которых указан параметр ver, что увеличивает время загрузки страницы вашего сайта.
- Удаляет версии у скриптов. Как и со стилями, скрипты подключаются с указанием версии файла, плагина или движка, выглядит это так: ?ver=4.7.5.
Как включить двухэтапную аутентификации в WordPress
Двухэтапная аутентификация — это метод защиты учетной записи, основанный на применении следующих двух факторов: известная только вам информация (пароль) для входа в систему и ваше физическое устройство (мобильное устройство или ключ).
После того, как вы вводите пароль на сайте, вам высылается запрос на новый одноразовый пароль, который вы получаете на контактный номер телефона или электронную почту (возможен переход по определенной ссылке из письма). Поэтому даже если ваш основной пароль был взломан, хакеру не удастся войти в аккаунт без доступа к вашему телефону или электронной почте.
Популярные плагины двухфакторной верификации для WordPress:
- Keyy Two Factor Authentication позволяет не запоминать пароль, а использовать для входа сканирование QR кода.
- Google Authenticator предоставляет двухфакторную аутентификацию с помощью приложения Google Authenticator для Android / iPhone / Blackberry.
Используйте нестандартные учетные данные для входа
Не используйте такие логин как admin. Строго рекомендуется изменить имя пользователя администратора на что-нибудь другое.
Проще всего задать логин при установке WordPress. Но если он у вас уже установлен — создайте новую учетную запись администратора с другими данными.
- Войдите в панель управления WordPress
- Найдите раздел Пользователи и нажмите кнопку Добавить нового.
- Создайте нового пользователя и назначьте ему права Администратора
- Перезайдите в WordPress с вашими новыми данными.
- Вернитесь в раздел Пользователи и удалите стандартную учетную запись Admin.
Рекомендую использовать специализированные инструменты для создания и безопасного хранения паролей, например бесплатную программу KeePass Password Safe.
Дополнительно существует возможность убрать отображение сообщения о том, что введенный логин и пароль неверен в файле functions.php, расположенный в папке текущей темы вашего веб-сайта (wp-content/themes/текущая_тема_WordPress). Но код я удалил, так как он отличается для разных версий WordPress. Используйте для отключения информации о неправильном вводе пароля плагин Clearfy Pro или плагин безопасности WP Cerber Security.
Отключите 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.
Использование .htaccess в Apache для улучшения защиты WordPress
Правильная и безопасная настройка .htaccess очень обширная тема и требует определенных профессиональных компетенций. Настоятельно не рекомендую, без понимания, копировать настройки .htaccess с непонятных сайтов, тем более с форумов и использовать их.
.htaccess это файл необходимый для корректной работы ссылок WordPress при использование веб-сервера Apache, LiteSpeed (в Nginx файл .htaccess не используется). Без правильных записей в файле .htaccess, вы будете получать много ошибок 404.
Сразу после инсталляции WordPress все настройки .htaccess правильные! Вам может потребоваться настроить только переадресации с www и http на https. Классический способ настройки этих редиректов действительно через правку файла .htaccess, но прежде чем править — изучите документацию вашего хостинг провайдера, очень часто хостинги предлагают свое собственное решение для настройки редиректов.
Код ниже используйте для восстановления поврежденного файла .htaccess (например, неправильно работающего плагина). Код скопирован с официальной документации Wordpess.
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Список плагинов безопасности WordPress
Хакеры часто используют дыры в шаблонах или плагинах WordPress. Поэтому, важно почаще проводить проверку вашего блога. Существует множество хорошо написанных плагинов для этих целей, например: WP Cerber Security — очень не плох и удобен, понятные настройки. Пользуюсь им. Кстати вы не найдете его в официальных плагинах Worpdress, потому что он считается не надежным:)
Предостерегаю от необдуманного применения плагинов безопасности! Обязательно их тестируйте для вашего сайта. Они могут испортить вам верстку сайта (и я не путаю здесь с плагинами кеширования) или заблокировать доступ посетителям.
Список других плагинов безопасности для WordPress:
- Wordfence Security — антивирус, брандмауэр и сканер вредоносных программ. Wordfence предлагает руководство по применению и возможность автоматической проверки, вместе с кучей других разных настроек.
- Sucuri Security плагин защищает от DDOS атак, содержит черный список, сканирует ваш сайт на наличие вредоносных программ и управляет вашим фаерволом. Google, Norton, McAfee – в этот плагин включены все черные списки из этих программ. При обнаружении проблема вы будете оповещены через электронную почту.
- BulletProof Security (СЛОЖНЫЙ в понимании его работы и соответственно в настройке) — сканер вредоносного кода, файрвол, защита формы авторизации, создание резервных копий базы данных, анти-спам. Функция сравнения в базе данных. Резервные копии БД: полные, частичные резервные копии БД, создание резервных копий вручную, по расписанию, отправка резервных копий в архиве на email, автоматическое удаление устаревших резервных копий по расписанию.
- All-In-One Security (AIOS) – Security and Firewall
- Defender Security – Malware Scanner, Login Security & Firewall
Существует большое количество специальных плагинов безопасности, разработанных для WordPress. Вы можете найти их здесь: https://wordpress.org/plugins/tags/security/.
Изменение стандартных префиксов базы данных WordPress для предотвращения SQL injection
Внедрение SQL-кода (англ. SQL injection) — один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода. Внедрение SQL, в зависимости от типа используемой СУБД и условий внедрения, может дать возможность атакующему выполнить произвольный запрос к базе данных (например, прочитать содержимое любых таблиц, удалить, изменить или добавить данные), получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере.
Я скептически отношусь к советам по смене префикса базы данных WordPress на работающем сайте. Если вы начинающий вебмастер, меняйте префикс только при первоначальной установке WordPress.
Если вы профессиональный экспериментатор — найдите руководство по смене префикса на любом другом сайте. Удачи!
Заключение
В интернете существуют два противоположных мнения:
- Мнение 1: Несмотря на то, что WordPress самая взламываемая CMS в мире, улучшить ее защиту не так тяжело.
- Мнение 2: Как бы грустно это ни звучало, но защита WordPress – вещь сложная, и любые действия не гарантируют на 100%, что ваш сайт будет полностью защищен от каких-либо действий мошенников.
Уважаемые Вебмастера, делайте бэкапы и спите спокойно! Но в основах защиты WordPress разберитесь самостоятельно, не делегируйте. Для понимания основных методов защиты WordPress достаточно разобраться с рекомендациями этой статьи.
Если у вас возникли трудности, задайте вопрос в комментариях или в нашем Телеграм канале Дежурный сисадмин.
- 4 лучших антидетект браузера для работы - 20.09.2024
- Что такое абузоустойчивый хостинг (bulletproof)? - 06.09.2024
- Обзор инструментов и сервисов для интернет маркетолога - 17.08.2024
Запугали конкретно. Даже не думал раньше, что WP самая слабая в плане безопасности площадка.
Ладно. Будем жить и работать дальше.
А что делать!
К сожалению WordPress является лидером среди CMS по разработке сайтов, магазинов. Поэтому хакеры часто нацелены на взлом защиты сайтов на WordPress. Но к счастью 🙂 из-за такой популярности цена на программиста Вердпресс существенно ниже, чем например на Битрикс или тот же Друпал.
Это настоящий кошмар, когда взламывают сайт. В случае взлома страдает не только зараженный сайт, но и другие сайты на том же IP, все сайты теряют репутацию у поисковиков.
Рекомендуют ограничивать количество попыток входа. Это один из простых способов остановить атаки грубой силы на странице входа в систему.
Что вы посоветуете?
Атака грубой силы работает, пытаясь получить ваше имя пользователя и пароль, повторяя несколько комбинаций для входа снова и снова. Если определенный IP-адрес, который совершает атаку, отслеживается, вы можете заблокировать повторные попытки и обеспечить безопасность своего сайта. При глобальных DDOS аттаках с несколькими IP-адресов такая блокировка тоже может помочь, хотя бы частично. В случае DDos вашего сайта нужно обращаться к хостинг провайдеру за помощью.
Используйте плагин WordPress Login LockDown
Спасибо не знал на счет версии скриптов, что они отменяют кеширование.
Очень информативная и полезная статья для тех, у кого сайт на Вордпрессе. О безопасности нужно думать постоянно.