Как я перестаю любить WordPress или Делаем WordPress безопаснее
Действительно. Ранее, я писал об одной уязвимости в этой CMS, из-за которой я пострадал. Но с каждым днем, при написании статей в этом блоге я все больше и больше начинаю жалеть о том, что начал использовать эту CMS. Теперь, я Вам расскажу как привести в порядок данную CMS, чтобы не бояться за ее безопасность.
Так, стоп! Что тебе не понравилось?
Все началось с комментариев. Каждый день мне приходили уведомления о новых комментариях, я с радостью кликал по ссылке и уже со злостью удалял эти комментарии. Проблему на тот момент я решил отключением комментариев как таковых и плагином vk api. Все, забыл об этой проблеме.
На днях я решил изучить логи своего блога и был удивлен, на сколько он популярен среди ботов, которые пытались авторизоваться под «админом». Хорошо, что я использую случайно сгенерированные пароли, иначе бы мой блог был бы загажен комментариями.
Немного изучив файлы в корне, я был расстроен тем, что конфигурационный файл был лежит, зачем-то в корне.
Короче, ниже я опишу, что можно предпринять для того, чтобы Ваш WP стал чуточку безопаснее.
Начнем со свода простейших правил безопасности.
Делайте резервное копирование своего сайта на wp.
Да, именно резервное копирование спасло этот сайт после последнего взлома.
Используйте сложный пароль.
А если у вас несколько сайтов на WP используйте разные сложные пароли. Если бы я этого не делал, то ребята из логов рано или поздно попали бы в консоль этого сайта. Так же настоятельно рекомендую менять эти пароль хотя бы каждый месяц (ну это можно делать, если вы реально страдаете паранойей).
Спрячьте wp-login.php от посторонних глаз.
Да, стандартными средствами это сделать нельзя, что меня крайне расстраивает. Способов решения этой проблемы несколько. Например можно поставить какой-нибудь плагин, что не является решением безопасности, ибо ты не знаешь что там внутри. Можно исправить ссылки в теме WP, что продержится до следующего обновления. Но мне порадовал третий вариант посредством файла .htaccess.
Добавив этот кусок кода в свой файл .htaccess при заходе на ссылки yoursite.com/wp-admin или yoursite.com/wp-login.php мы будем видеть 404 ошибку, а попасть в консоль мы сможем только по адресу yoursite.com/custom_admin_url.
# BEGIN Hide console URL <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^custom_admin_url/?$ /wp-login.php?your_secret_key [R,L] RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^custom_admin_url/?$ /wp-login.php?your_secret_key&redirect_to=/wp-admin/ [R,L] RewriteRule ^custom_admin_url/?$ /wp-admin/?your_secret_key [R,L] RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax\.php RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/wp-admin RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/wp-login\.php RewriteCond %{HTTP_REFERER} !^(.*)yoursite.com/custom_admin_url RewriteCond %{QUERY_STRING} !^your_secret_key RewriteCond %{QUERY_STRING} !^action=logout RewriteCond %{QUERY_STRING} !^action=rp RewriteCond %{QUERY_STRING} !^action=postpass RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$ RewriteRule ^.*wp-admin/?|^.*wp-login\.php /not_found [R,L] RewriteCond %{QUERY_STRING} ^loggedout=true RewriteRule ^.*$ /wp-login.php?your_secret_key [R,L] </IfModule> # END Hide console URL
Только не забудьте заменить custom_admin_url на свой url, yoursite.com на адрес своего сайта, а your_secret_key на свой секретный ключ, который лучше сгенерировать генератором паролей.
SSL в контрольной панели
Если ваш хостинг позволяет вам использовать SSL, то можно включить его для защиты контрольной панели. Для этого достаточно файл wp-config.php дополнить строчкой
define('FORCE_SSL_ADMIN', true);
Меняем префикс таблиц WP на что-то свое
Это бывает полезно как минимум в двух случаях. Во-первых вы лечите свою паранойю, обезопасив таблицы от крутых хакеров, а во-вторых вы можете держать в одной базе 10, например, копий wp. Чтобы это сделать, в файле wp-config.php найдите переменную
$table_prefix = 'wp_';
и замените ее на
$table_prefix = 'а465в4аыв56а1_';
Только префикс указывайте свой.
Уникальные ключи аутентификации
Я не буду вдаваться в подробности, но то что я опишу ниже нужно сделать обязательно. Зайдите по этому адресу, скопируйте то, что вы увидите, и в файле wp-config.php замените это
define('AUTH_KEY', 'впишите сюда уникальную фразу'); define('SECURE_AUTH_KEY', 'впишите сюда уникальную фразу'); define('LOGGED_IN_KEY', 'впишите сюда уникальную фразу'); define('NONCE_KEY', 'впишите сюда уникальную фразу'); define('AUTH_SALT', 'впишите сюда уникальную фразу'); define('SECURE_AUTH_SALT', 'впишите сюда уникальную фразу'); define('LOGGED_IN_SALT', 'впишите сюда уникальную фразу'); define('NONCE_SALT', 'впишите сюда уникальную фразу');
на то, что вы скопировали.
Защити свой wp-config.php
Не для кого не секрет, что файл wp-config.php можно перенести на каталог выше, как раз тот каталог, который не афишируется web сервером, но во первых не все хостинг провайдеры разрешают делать подобное, а во вторых, чисто эстетически мне это не по душе. Чтобы это обойти, мы можем спрятать свой wp-config.php от посторонних глаз при помощи .htaccess. Для этого достаточно в файле .htaccess добавить следующие строки:
<files wp-config.php> Order deny,allow deny from all </files>
Учетная запись администратора в WP
Когда вы только что поставили WP, у вас появляется учетная запись администратора, которая добавляется в БД под номером 1, и содержит логин admin. Так вот, я настоятельно рекомендую «пересоздать» администратора, чтобы его id отличался от стандартного, а логин был уникальным. Рассказывать вам, как это сделать я не буду, так как там нет ничего сложного, ведь достаточно создать нового пользователя, наделить его правами администратора и удалить дефолтного администратора. Если блог у вас не старый, то публикации можно связать с новым администратором.
Ну и последнее
Так как этот продукт бесплатный, и его писало много хороших, и не очень, людей, то я настоятельно рекомендую поддерживать актуальную версию как движка, так и плагинов, которые вы можете использовать. Я понимаю, что кого-то могут раздражать нововведения, но это нужно делать, чтобы в один прекрасный день ваш сайт не стал уязвимым.
Спасибо пацанам, которые опубликовали данные материалы, они помогли мне в написании этого шедевра:
- http://www.websphererus.com/others/hide-url-wordpress-console
- http://www.themesland.org/main/76-kak-pomenyat-prefiks-bazy-dannyh-wordpress.html
- http://www.coolwebmasters.com/wordpress/4665-renaming-wordpress-wp-content-folder.html
- http://habrahabr.ru/post/62814/
- http://blogproblog.com/wordpress-security/