Как защитить сайт на WordPress от взлома? 17 способов защиты

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

Как защитить сайт на WordPress от взлома? 17 способов защиты

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

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

WordPress – это бесплатная система управления сайтом (CMS).

Данная CMS ориентирована на блоги, и является самой популярной платформой для создания этих блогов, больше половины сайтов в Интернете реализовано именно на WordPress (посмотреть процесс установки WordPress можете в материале – «Как установить WordPress?»).

За счет того, что эта платформа так популярна, ее, соответственно, чаще всего и взламывают, точнее, под ее взлом создано огромное количество вредоносных скриптов.

Поэтому давайте рассмотрим основные способы защиты сайта на WordPress от взлома, которые, как я уже сказал, усложнят злоумышленникам процесс взлома.

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

Содержание
  1. Для чего взламывают обычные сайты?
  2. Ради забавы
  3. Встраивание вредоносного кода для построения сети ботов и рассылки спама
  4. Встраивание вредоносного кода для заражения компьютеров пользователей
  5. Черное SEO. Встраивание ссылок, размещение дополнительных страниц
  6. Получить доступ к серверу на хостинге
  7. Способы защиты сайта на WordPress от взлома
  8. 1. Сложные пароли
  9. 2. Актуальная версия WordPress, безопасный шаблон и минимум плагинов
  10. 3. Изменение логина администратора
  11. 4. Запрет просмотра директорий сайта и запрет доступа к файлу htaccess
  12. 5. Запрет доступа к файлу wp-config.php
  13. 6. Защищаем каталог wp-includes
  14. 7. Запрет доступа к каталогу wp-content
  15. 8. Запрет доступа к XML-RPC
  16. 9. Блокируем вредоносные запросы, защищаем сайт от SQL-инъекций и запрещаем выполнение произвольных команд
  17. 10. Защищаем скрипт timthumb.php
  18. 11. Дополнительная HTTP аутентификация
  19. 12. Скрываем версию CMS
  20. 13. Убираем комментарии из кода
  21. 14. Изменение стандартного префикса таблиц в базе данных
  22. 15. Используйте протокол HTTPS – защищенное соединение
  23. 16. Проводите постоянный мониторинг нагрузки на хостинг
  24. 17. Обеспечьте безопасность своего компьютера

Для чего взламывают обычные сайты?

Ради забавы

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

Все остальные причины взломов сайтов более практичны.

Встраивание вредоносного кода для построения сети ботов и рассылки спама

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

Встраивание вредоносного кода для заражения компьютеров пользователей

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

Черное SEO. Встраивание ссылок, размещение дополнительных страниц

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

Получить доступ к серверу на хостинге

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

Способы защиты сайта на WordPress от взлома

1. Сложные пароли

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

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

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

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

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

2. Актуальная версия WordPress, безопасный шаблон и минимум плагинов

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

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

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

Используйте минимум плагинов, если плагин у Вас не задействован, то удалите его, т.е. сначала деактивируйте его, а потом удалите (файлы плагинов, которые просто деактивированы, остаются на сервере).

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

3. Изменение логина администратора

Многие для входа в консоль управления сайтом WordPress устанавливают логин администратора, например, «Admin» или что-то подобное и этот факт упрощает взлом, так как злоумышленнику даже не нужно искать учетную запись с правами администратора. Он может просто запустить подбор паролей к учётной записи Admin. Если логин администратора изменить (а лучше изначально его так не называть), хакеру уже будет немного сложней, так в его задачи добавляется новый пункт – узнать логин пользователя с административными правами. Также многие автоматические скрипты по взлому настроены именно на такие логины.

На мой взгляд, самым простым способом изменения логина администратора является его изменение в базе данных с помощью phpMyAdmin, тем самым Вам не придется его удалять и создавать заново.

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

   
   UPDATE wp_users SET user_login = 'NewLoginAdmin', user_nicename = 'newadminname'
   WHERE user_login = 'Admin'

Где:

  • wp_users – таблица, в которой хранятся учетные данные пользователей сайта;
  • Admin — это текущий логин администратора;
  • NewLoginAdmin – это новый логин администратора сайта (Вы, соответственно, придумываете и подставляете свой);
  • newadminname – это новое имя пользователя с административными правами (Вы придумываете и подставляете свое значение для данного поля).

Заметка! Установка MySQL 8 на Windows 10.

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

Кроме того, также необходимо настроить отображаемое имя, которое будет у Вас выводиться в материалах и в комментариях, для этого зайдите в консоль управления сайтом (после смены логина вордпресс попросит Вас заново авторизоваться). В настройках «Пользователи» откройте на редактирование учетную запись администратора и заполните поля «Ник» и выберите из выпадающего списка это значение для поля «Отображать как». Поля «Имя» и «Фамилия» Вы можете также заполнить и выбрать их в качестве отображаемого имени.

Скриншот 1

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

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

   
   #Скрываем имя пользователя
   RedirectMatch Permanent ^/author/newadminname http://Ваш_сайт.ru

Вместо newadminname подставляете то значение, которое Вы указали для user_nicename, а вместо http://Ваш_сайт.ru главную страницу сайта (т.е. адрес сайта).

4. Запрет просмотра директорий сайта и запрет доступа к файлу htaccess

Рекомендую также сразу добавить в файл htaccess запрет на просмотр директорий сайта, и запрет доступа к самому файлу htaccess.

   
   # Запрет на просмотр директорий сайта
   Options All -Indexes
        
   # Запрет доступа к .htaccess
   <Files .htaccess> 
        order allow,deny 
        deny from all 
   </Files>

5. Запрет доступа к файлу wp-config.php

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

   
   # Запрещаем доступ к wp-config.php
   <Files wp-config.php>
    order allow,deny
    deny from all
   </Files>

6. Защищаем каталог wp-includes

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

   
   # Ограничиваем доступ к wp-includes
   <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteBase / 
        RewriteRule ^wp-admin/includes/ - [F,L] 
        RewriteRule !^wp-includes/ - [S=3] 
        RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] 
        RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] 
        RewriteRule ^wp-includes/theme-compat/ - [F,L] 
   </IfModule>

7. Запрет доступа к каталогу wp-content

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

Чтобы это реализовать в каталоге wp-content, необходимо создать файл .htaccess со следующим содержимым.

   
   # Блокируем любые запросы к каталогу 
   Order deny,allow 
   Deny from all 
   # Разрешаем запрашивать файлы с определенными расширениями 
   <Files ~ ".(svg|ttf|woff|eot|xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$"> 
   Allow from all 
   </Files>

Где, svg|ttf|woff|eot|xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar? – это все типы файлов, к которым можно обращаться, ко всем остальным нельзя.

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

8. Запрет доступа к XML-RPC

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

Заблокировать XML-RPC можно в файле htaccess, для этого блокируем доступ к файлу xmlrpc.php.

   
   # Запрещаем доступ к xmlrpc.php
   <Files xmlrpc.php> 
        Satisfy any 
        Order allow,deny 
        Deny from all 
   </Files>

9. Блокируем вредоносные запросы, защищаем сайт от SQL-инъекций и запрещаем выполнение произвольных команд

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

Таким способом мы можем защититься от SQL-инъекций, PHP-инъекций и других вредоносных запросов.

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

Для отслеживания и блокировки вредоносных запросов в файл htaccess добавьте следующий код.

   
   # Определяем и блокируем вредоносные запросы к сайту
   <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC] 
        RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR] 
        RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR] 
        RewriteCond %{THE_REQUEST} etc/passwd [NC,OR] 
        RewriteCond %{THE_REQUEST} cgi-bin [NC,OR] 
        RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR] 
        RewriteRule ^(.*)$ - [F,L] 
   </IfModule>

   # Определяем и блокируем исполнение вредоносных команд
   <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR] 
        RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR] 
        RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR] 
        RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR] 
        RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR] 
        RewriteCond %{QUERY_STRING} ftp\: [NC,OR] 
        RewriteCond %{QUERY_STRING} http\: [NC,OR] 
        RewriteCond %{QUERY_STRING} https\: [NC,OR] 
        RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR] 
        RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR] 
        RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR] 
        RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] 
        RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR] 
        RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR] 
        RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR] 
        RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR] 
        RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR] 
        RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] 
        RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR] 
        RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR] 
        RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR] 
        RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR] 
        RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR] 
        RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR] 
        RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR] 
        RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR] 
        RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR] 
        RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).* 
  (/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR] 
        RewriteCond %{QUERY_STRING} (sp_executesql) [NC]        
        RewriteRule ^(.*)$ - [F,L] 
   </IfModule>

10. Защищаем скрипт timthumb.php

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

Для этого в htaccess добавляем еще одну секцию.

  
   # Ограничиваем использование эксплоита timthumb
   <IfModule mod_rewrite.c> 
        Options +FollowSymLinks 
        RewriteEngine On 
        RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC] 
        RewriteRule . - [S=1] 
   </IfModule>

11. Дополнительная HTTP аутентификация

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

Это реализуется с помощью HTTP аутентификации, т.е. аутентификации на уровне протокола http. Данный способ защиты, наверное, один из самых важных, так как он не просто защищает Ваш сайт от взлома, он еще, в случае брутфорс атаки на сайт, т.е. подбора пароля к админской учетной записи, снижает нагрузку на сервер, так как все запросы по подбору пароля просто не дойдут до соответствующих скриптов (wp-login.php), они будут прерваны еще на уровне работы протокола http.

Для включения HTTP аутентификации необходимо в файле htaccess добавить следующую секцию.

   
   # Аутентификация
   <Files wp-login.php> 
        AuthType basic 
        AuthName 'Access Denied' 
        AuthUserFile /абсолютный_путь_к_файлу/.htpasswd
        Require valid-user 
   </Files>

Где «wp-login.php» — это скрипт, отвечающий за авторизацию, к которому мы запрещаем доступ всем пользователям, которые не прошли аутентификацию, а «/абсолютный_путь_к_файлу/.htpasswd» — это абсолютный путь к файлу .htpasswd, в котором хранится в зашифрованном виде соответствующий логин и пароль. Данный логин и пароль должны отличаться от логина и пароля администратора сайта.

Чтобы сгенерировать содержимое файла htpasswd можно воспользоваться специальными сервисами, например, — http://www.htaccesstools.com/htpasswd-generator/

Вам нужно будет ввести придуманный логин и пароль, а сервис вернет Вам строку в формате «Логин:Пароль», только пароль будет в зашифрованном виде.

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

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

Если у Вас блог личный, то данный способ используйте обязательно!

В остальных случаях защитить админ-панель можно, например, следующим образом:

  • Отключить вывод ошибок авторизации. При неправильном вводе логина или пароля не будет выходиться ошибка, что именно было введено неправильно, например, для этого в файл function.php своего шаблона добавьте следующий код (в принципе никто Вам не запрещает отключить вывод данной информации совместно с HTTP аутентификацией);
   
   //Отключаем ошибки авторизации
   add_filter('login_errors',create_function('$a', "return null;"));

  • Установите плагин, который будет фиксировать попытки входа в консоль управления сайтом, и, в случае если неудачных попыток будет много, и они произведены с одного IP адреса, данный адрес будет автоматически блокироваться. Иными словами, таким способом мы блокируем атаки по подбору пароля. Для таких целей подойдет плагин — Login LockDown;
  • Изменить адрес входа в админку, например, плагином «rename wp-login.php», но я им не пользовался и, насколько мне известно, он уже не поддерживается, может быть существуют какие-нибудь альтернативы.

12. Скрываем версию CMS

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

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

Для этого в файл function.php своего шаблона вставляем следующий код.

   
   // Скрываем версию WordPress
   remove_action('wp_head', 'wp_generator');

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

13. Убираем комментарии из кода

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

Поэтому комментарии в коде наружу лучше не выводить, для этого можно в тот же файл function.php внести следующий код.

   
   //Убираем лишние комментарии из кода
   function callback($buffer) { $buffer = preg_replace('/<!--(.|\s)*?-->/', '', $buffer); return $buffer; } 
   function buffer_start() { ob_start("callback"); } 
   function buffer_end() { ob_end_flush(); } 
   add_action('get_header', 'buffer_start'); 
   add_action('wp_footer', 'buffer_end');

14. Изменение стандартного префикса таблиц в базе данных

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

Для этого нужно зайти в phpMyAdmin, предварительно, на всякий случай, сделать архив БД, затем выделить все таблицы и выбрать действие «Заменить префикс таблицы».

Скриншот 2

Далее, в поле «От» написать прежний префикс, в поле «До» новый префикс.

Скриншот 3

В данном случае mp12_ — это новый префикс таблиц, желательно новый префикс должен содержать 4 символа (буквы и цифры).

Затем также необходимо выполнить SQL запрос для внесения изменений в названия некоторых параметров (иначе Вы не сможете авторизоваться в админ панели).

   
   UPDATE mp12_options SET option_name = 'mp12_user_roles' 
   WHERE option_name = 'wp_user_roles';
   UPDATE mp12_usermeta SET meta_key = 'mp12_capabilities' 
   WHERE meta_key = 'wp_capabilities';

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

   
   $table_prefix = 'mp12_';

15. Используйте протокол HTTPS – защищенное соединение

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

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

Заметка! Как перевести сайт на HTTPS бесплатно на хостинге REG.RU.

16. Проводите постоянный мониторинг нагрузки на хостинг

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

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

Заблокировать доступ к сайту с определённого IP адреса можно с помощью файла htaccess. Для этого добавьте в него следующую директиву, где вместо 1.1.1.1 напишите IP адрес злоумышленника.

   
   <Limit GET POST PUT>
   order allow,deny
   allow from all
   deny from 1.1.1.1
   </LIMIT>

17. Обеспечьте безопасность своего компьютера

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

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

Заметка! ТОП 5 бесплатных антивирусов для Windows 10.

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

Вот мы с Вами и рассмотрели 17 способов защиты сайта на WordPress от взлома, которые необходимо обязательно использовать, если Вы хотите защитить свой сайт, у меня на этом все.

Может быть, я перечислил не все способы защиты, а что бы Вы добавили в данный перечень?

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 2
  1. aleksey

    Привет!Подскажите как скрыть код адсенс от обнаружения? ( у меня сетка сайтов хочу скрыть ее)

  2. StaS

    # Определяем и блокируем исполнение вредоносных команд
    # Ограничиваем использование эксплоита timthumb

    Эти коды не работают, получаю блокировку сайта и сообщение «500 Internal Server Error»

Добавить комментарий для aleksey Отменить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.