Советы по безопасности блога на wordpress

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

Для этого удаляем файл install.php на хостинге в папке с wordpress.

— Необходимо проверять перед установкой нового шаблона/темы наличие в нем вредоносного кода или закодированных ссылок.

Для этого устанавливаем плагин TAC и используем его для анализа шаблонов.

— Убрать с шаблона ссылку на вход в административную панель.

Необходимо максимально затруднить нахождение страницы для входа в административную часть для злоумышленников.

— Устанавливаем блокировку по IP для входа в административную панель блога.

Для этого необходимо в файл .htaccess вписать следующий код:

<Files wp-login.php>

Order deny,allow

Deny from All

Allow from 123.456.789.0

</Files>

Вместо 123.456.789.0 укажите Ваш статичный IP.

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

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

— Необходимо защищаться от XSS атак.

Для этого в файл .htaccess вставить следующий код:

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

RewriteCond %{QUERY_STRING} GLOBALS (=|\[|\%[0-9A-Z]{0,2}) [OR]

RewriteCond %{QUERY_STRING} _REQUEST (=|\[|\%[0-9A-Z]{0,2})

RewriteRule ^(.*)$ index.php [F,L]

— Необходимо защищать блог от зловредных url-запросов.

Для этого воспользуйтесь инструкцией написанной в этом посте.

— Защищаем блог от хотлинка.

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

RewriteEngine On

#Заменяем ?mysite\.ru/ на адрес вашего сайта

RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.ru/ [NC]

RewriteCond %{HTTP_REFERER} !^$

#Заменяем /images/nohotlink.jpg на название вашей картинки для личера.

RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

— Устраняем возможность просматривать директории на блоге.

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

Options -Indexes

— Для повышения безопасности рекомендую изменить префикс БД.

Наиболее простой способ изменить префикс БД, воспользоваться плагином WP Security Scan. Если у вас возникли проблемы после смены БД, эта статья вам поможет решить проблему.

— Необходимо в блоге на wordpress добавить уникальные ключи для аутентификации.

Для этого воспользуйтесь специальным сайтом для автоматической генерации ключей, а после скопируйте их в файл wp— config.php.

— Удаляем следующие файлы для повышения безопасности блога: readme.html, license.txt и install.php.

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

— Защищаем файл wp-config, который хранит важную информацию от базы данных.

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

<files wp-config.php>

order allow,deny

deny from all

</files>

— Изменяем расположение файла wp-config.php.

Файл wp-config.php можно перенести на один уровень вверх для  повышения безопасности блога.

— Необходимо убрать ошибку о неверно набранном логине/пароле при попытке злоумышленником подобрать пароль к админке блога.

Для этого необходимо в файле functions.php прописать следующий код:

add_filter ('login_errors',create_function ('$a', «return null;»));

Если возникнут проблемы при входе в административную панель уберите этот код.

— Убираем возможность просмотра версии wordpress.

Самый легкий способ убрать версию вордпресса использовать плагин Secure WordPress.

— Необходимо усложнить логин для входа в административную панель.

Для этого можно воспользоваться плагином WPVN — Username Changer или зайти в БД и изменить через базу данных логин.

— Переносим страницу входа в административную панель.

Для этого надо воспользоваться плагином Stealth Login.

— Ограничиваем количество попыток авторизации в административную панель.

Для этого используем плагин Login Lockdown.

— Защищаем передачу данных через SSL протокол.

Если ваш провайдер поддерживает SSL протокол, тогда вы можете настроить принудительную передачу данных при работе с административной частью блога при внесении кода в файл wp-config.php:

define ('FORCE_SSL_ADMIN', true);