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

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

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

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

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

    Разовые настройки защиты сайта от взлома:

      1. Сложные пароли — Даже на этапе тестирования сайта (когда ну никто же о нем не узнает)
        Сложные пароли — это как минимум 8 символов, в которых обязательно будут цифры, большие и маленькие буквы, и, конечно же, спец символы. Пример: (*&%RI&%WK8MYGF^*Ruheqwgf16r8re&%Hvwef
      2. Актуальная версия WordPress, безопасный шаблон и минимум плагинов
        • можно раз в месяц проверять список плагинов, которые установлены на ваших сайтах через поиск, инфу о их взломах
        • Не используйте nulled шаблоны для WordPress
        • не используйте под каждое небольшое решение отдельный плагин, старайтесь использовать мультиплагины которые решают сразу несколько задач, их качественней поддерживают/обновляют и реже взламывают
      3. Меняйте логин админа — затруднит взлом
        • Для этого необходимо запустить phpMyAdmin, выбрать нужную базу данных и выполнить следующий SQL запрос, который изменяет логин администратора и имя пользователя администратора.
        • UPDATE wp_users SET user_login = ‘NewLoginAdmin’, user_nicename = ‘newadminname’ WHERE user_login = ‘Admin’
      4. Запрет просмотра директорий сайта и запрет доступа к файлу htaccess
        # Запрет на просмотр директорий сайта
        Options All -Indexes
        # Запрет доступа к .htaccess
        order allow,deny
        deny from all
      5. Запрет доступа к файлу wp-config.php
        # Запрещаем доступ к wp-config.php
        order allow,deny
        deny from all
      6. Защищаем каталог wp-includes
        # Ограничиваем доступ к wp-includes
        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]
      7. Запрет доступа к каталогу wp-content
        # Блокируем любые запросы к каталогу
        Order deny,allow
        Deny from all
        # Разрешаем запрашивать файлы с определенными расширениями
        Allow from all

        Где, svg|ttf|woff|eot|xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar? – это все типы файлов, к которым можно обращаться, ко всем остальным нельзя.
      8. Запрет доступа к XML-RPC (Есть в Clearfy Pro)
        # Запрещаем доступ к xmlrpc.php
        Satisfy any
        Order allow,deny
        Deny from all
      9. Отключите доступ к REST API вашего WordPress (Есть в Clearfy Pro)
      10. Убедитесь, что ваш сайт имеет SSL-сертификат
      11. Блокируем вредоносные запросы, защищаем сайт от SQL-инъекций и запрещаем выполнение произвольных команд
        # Определяем и блокируем вредоносные запросы к сайту
        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]
        # Определяем и блокируем исполнение вредоносных команд
        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]Если у вас VDS стоит поставить пароль на phpMyAdmin
      12. Защищаем скрипт timthumb.php
        # Ограничиваем использование эксплоита timthumb
        Options +FollowSymLinks
        RewriteEngine On
        RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC]
        RewriteRule . - [S=1]
      13. Дополнительная HTTP аутентификация для логина в Админку
        # Аутентификация
        AuthType basic
        AuthName 'Access Denied'
        AuthUserFile /абсолютный_путь_к_файлу/.htpasswd
        Require valid-user
        Где «wp-login.php» — это скрипт, отвечающий за авторизацию, к которому мы запрещаем доступ всем пользователям, которые не прошли аутентификацию, а «/абсолютный_путь_к_файлу/.htpasswd» — это абсолютный путь к файлу .htpasswd, в котором хранится в зашифрованном виде соответствующий логин и пароль. Данный логин и пароль должны отличаться от логина и пароля администратора сайта.
        Чтобы сгенерировать содержимое файла htpasswd можно воспользоваться специальными сервисами, например, — http://www.htaccesstools.com/htpasswd-generator/
        • Закрыть возможность регистрации новых пользователей
        • Отключите комментарии, если они вам не нужны
      14. Скрываем версию CMS
        // Скрываем версию WordPress
        remove_action('wp_head', 'wp_generator');
      15. Убираем комментарии из кода (к плагинам и т.д.)
        //Убираем лишние комментарии из кода
        function callback($buffer) { $buffer = preg_replace('//', '', $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');
      16. Изменение стандартного префикса таблиц в базе данных
        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';
        $table_prefix = 'mp12_';
      17. Блокируйте выполнение PHP-скриптов в тех WP каталогах, где это не требуется
      18. Настройте создание резервных копий, в идеале каждый день, как минимум раз в 3-4 дня — это поможет быстро восстановить исходные файлы сайта, а если сайт удалят, у вас всегда есть актуальная копия
      19. Disable Emoji
      20. Delete dns-prefetch
      21. Отключите редактирование тем и плагинов на уровне панели администратора WordPress
      22. Нет информации о релокейте wp-config.php
      23. Релокейте панели логина с /wp-login на что-то другое
      24. Ханейпот (логин-панель перекидываем на другой URL, но оставляем живой пустой URL /wp-login
        — Любого клиента, кто будет стучаться на /wp-login , можно банить на Х дней тем же Fail2Ban, потому что он точно бот
      25. На куки нужно установить Cookie Flags and Prefixes
      26. Вбить в гугл wordpress online security scanner и проверить всеми найденными сканерами. Вообще, самое эффективное решение — взять Burp Security suite , но это дорого и профессионально

      Постоянные проверки для защиты сайта от взлома:

      Проводите постоянный мониторинг нагрузки на хостинг — раз в 10-20 дней

      Минимум раз в 10-15 дней проверять и обновлять плагины

      Выглядит сложно и дорого? Ваш сайт — ваш доход, безопасность сайта — ваша ответственность, 95% этих пунктов настраиваются 1-ин раз, и повышают безопасность сайта в 10-тки раз.

      P.S Часть из этих пунктов решается плагином Clearfy Pro

      © PhoenixProject, при полном или частичном копировании материала ссылка на первоисточник обязательна.

      admin
      admin

      Технический SEO-специалист сервиса PhoenixProject

      admin опубликовал статей: 23

      Оставить комментарий к статье

      Комментариев: 0

        Оставьте заявку и
        получите скидку 15%
        на маркетинговый аудит

        -15% на Комплексный аудит вашего сайта и первый месяц работ по вашему проекту

        Окончание через:

        00

        дней

        00

        часов

        00

        минут

        00

        секунд