Приветствую Вас, уважаемые посетители и подписчики блога 4remind.ru. В этой заметке речь пойдет об элементарной, но обязательной для применения вещи, такой как защита блога WordPress, да и любого другого сайта, от злоумышленников, другими словами об усилении безопасности веб-ресурсов. К сожалению некоторые владельцы сайтов, особенно начинающие блогеры, уделяют защите и безопасности собственных веб-ресурсов мало должного внимания, и в результате нередко их детища взламывают или заражают вирусами. Итак, давайте рассмотрим некоторые способы усиления защиты WordPress и других ресурсов.
Для улучшения безопасности блога или сайта на движке WordPress рекомендуется воспользоваться как минимум несколькими небольшими рекомендациями. Это конечно же не все возможные варианты для улучшения защиты сайтов, но тем не менее они на данный момент актуальны и очень эффективны. Итак, приступим к обзору рекомендаций для повышения безопасности WordPress.
Надежные пароли и логины
Старайтесь выбирать сложные пароли для логина на блог или сайт, особенно это касается пароля учетной записи администратора WordPress. Рекомендуется использовать в паролях комбинации буквенно-цифровых символов, знаки пунктуации и других не алфавитных знаков (например «собака» @, символ подчеркивания, различные скобки, знаки плюса, минуса и так далее). Длину пароля рекомендую использовать не менее 12-ти символов. Настоятельно рекомендуется изменить имя администратора блога, которое предлагается по умолчанию (как правило это «admin»), на какое-нибудь другое, более длинное, и лучше, если имя администратора (для логина) будет вообще из рандомного набора символов, например такое: dhw654d82ka7
Вывод ошибок при логине
Если пользователь при логине на сайт или блог ввел неверные данные (иногда админ или другой пользователь ошибается, а чаще это происходит, когда злоумышленники пытаются подобрать пароль с помощью скриптов — Brute-Force атаки), то WordPress выводит на страницу информацию об ошибке. Так вот, чтобы затруднить подбор пароля (чтобы сторонний скрипт не знал, прошел ли логин или нет), нужно отключить вывод информации об ошибочной попытке логина. Сделать это нетрудно, достаточно добавить в файл functions.php
соответствующий фильтр:
add_filter( ‘login_errors’, create_function( ‘$a’, “return null;” ));
Префикс таблиц базы данных
По умолчанию в файле конфигурации WordPress wp-config.php
используется префикс для таблиц базы данных «wp_». Это никуда не годится, так как его знают абсолютно все, особенно скрипты злоумышленников. Поэтому для улучшения защиты WordPress при доступе к базе данных стоит префикс заменить на более сложный и по возможности уникальный, например на такой:
$table_prefix = 'dg994p71z_';
или
$table_prefix = 'wp_gp622azk_';
Только имейте ввиду, что изменять префикс лучше при начальной установке движка WordPress. Если же Вы захотите его изменить на уже действующем блоге, то придется еще кое-что изменять и в базе данных. Для этого рекомендую обратиться к опубликованной ранее статье Аккуратная замена префикса на этом блоге.
Уникальные ключи для аутентификации
В файле wp-config.php
хранятся секретные ключи для аутентификаций пользователей, которые обязательно нужно заменить на свои при первой же установке WordPress. В дальнейшем рекомендую время от времени заменять их на другие. Вот список этих ключей, установленных по умолчанию:
define('AUTH_KEY', 'put your unique phrase here'); define('SECURE_AUTH_KEY', 'put your unique phrase here'); define('LOGGED_IN_KEY', 'put your unique phrase here'); define('NONCE_KEY', 'put your unique phrase here'); define('AUTH_SALT', 'put your unique phrase here'); define('SECURE_AUTH_SALT', 'put your unique phrase here'); define('LOGGED_IN_SALT', 'put your unique phrase here'); define('NONCE_SALT', 'put your unique phrase here');
Фразы (сами ключи, по умолчанию их значение 'put your unique phrase here') старайтесь делать сложными, длинными и разными. А если Вы не уверены в том, что пропишите эти ключи правильно, то воспользуйтесь онлайн-генератором этих ключей: https://api.wordpress.org/secret-key/1.1/salt/
Запрет редактирования тем и плагинов
Чтобы защитить WordPress от изменения и редактирования тем и плагинов посторонними лицами, злоумышленниками, нужно просто запретить эти действия при помощи установки значения переменной DISALLOW_FILE_EDIT
в значение «true» в файле конфигурации WordPress wp-config.php
:
define( 'DISALLOW_FILE_EDIT', true );
Использование SSL соединений
Если у Вас используется соединение с блогом или сайтом через SSL (Secure Sockets Layers — криптографический протокол, устанавливающий безопасное соединение между клиентом и сервером), то злоумышленникам будет не под силу перехватывать или подменить информацию, данные, которые проходят через интернет во время работы с сайтом. Однако здесь не все так уж и гладко. Дело в том, что не все хостинги предоставляют возможность использовать SSL-протокол. Поэтому, для начала Вам придется уточнить у вашего хостинг-провайдера, позволяет ли он использовать SSL и на каких условиях. Кроме того, если у Вас есть возможность воспользоваться SSL, то придется еще приобрести и SSL сертификат (стоит он сейчас примерно от 20$ и выше, на год), и плюс к этому еще скорее всего понадобится использовать статический IP-адрес.
Для включения поддержки SSL-протокола в WordPress нужно в файле конфигурации wp-config.php
добавить следующие строчки:
define(‘FORCE_SSL_LOGIN’, true); define(‘FORCE_SSL_ADMIN’, true);
После того, как Вы сохраните измененный файл, то сразу же логин и доступ в панель управления сайтом будет осуществляться с SSL шифрованием. Другими словами вход в панель управления WordPress (консоль) будет проходить через «https» вместо обычного «http».
Защита от автоматизированного копирования и хотлинкинга
Содержимое контента очень важно практически для любого сайта, особенно если сам контент уникален и интересен посетителям. Однако существует много таких «личностей», которые готовы пользоваться плагиатом и зачастую копировать содержимое практически один в один, то есть безо всяких изменений. Это относится как к текстам, так и к изображениям. Во многих случаях контент копируется полностью, со все содержимым, включая заголовки статей, при помощи ботов и скриптов. Полностью защититься от копирования думается просто невозможно, но кое-что все же сделать можно. Один из способов: откройте файл single.php
из текущей темы вашего блога WordPress и найдите часть кода, который отвечает за вывод заголовка статьи. Во многих случаях это будет код типа , а затем измените его следующим способом:
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
Этот код сделает из заголовка прямую ссылку, ведущую на эту же статью. В результате статья, украденная целиком (как правило ботом или скриптом), вместе с заголовком, теперь будет содержать в себе прямую ссылку на страницу вашего блога.
Для защиты от хотлинкинга (подгрузки изображений с вашего сайта на сторонние ресурсы) проделать можно следующее:
1) создайте изображение-заглушку небольшого размера типа blockhotlink.jpg
и разместите его в каталоге, где хранятся другие изображения вашего сайта; 2) добавьте следующий код в файл .htaccess
:
RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.ru/ [NC] RewriteCond %{HTTP_REFERER} !^$ RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/blockhotlink.jpg [L]
Если понадобится, замените путь к файлу изображения-заглушки /images/blockhotlink.jpg на соответствующий файловой структуре вашего сайта. Теперь при попытке хотлинкинга любого изображения на стороннем ресурсе будет отображаться только изображение-заглушка blockhotlink.jpg
.
Защита от скрипт-инъекций (script injections)
На данное время атаки скрипт-инъекциями очень сильно распространены, и злоумышленники при помощи них часто пытаются получить доступ, изменить или вообще уничтожить данные в базе SQL, MySQL. Для защиты блога или сайта от таких атак Вам нужно защитить GLOBALS
и _REQUEST
переменные PHP. Защиту можно включить используя файл .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]
При обнаружении атаки, при которой кто-то пытается изменить значения GLOBALS
или _REQUEST
переменных PHP, запрос будет заблокирован и выдана ошибка 403.
Будьте осторожны при редактировании файла .htaccess, так как любая опечатка в нем может привести к тому, что Ваш сайт может стать недоступным или будет редиректиться на другой URL. Не забывайте делать бэкапы перед любыми его изменениями.
Обновления WordPress
Периодически появляются новые версии WordPress, в которых кроме нововведений, улучшений часто включены исправления системы безопасности. Поэтому рекомендуется обновлять движок своего блога до последней релизной версии. Но перед обновлением обязательно нужно выполнить как минимум два действия:
1) сделать полный бэкап файлов и базы данных блога или сайта;
2) убедиться, что все используемые на блоге плагины совместимы с новой версией WordPress;
По первому пункту думаю все понятно, а вот по второму... Если Вы обнаружили, что какой-то из плагинов не совместим или не уверены в его совместимости, то придется либо найти ему замену, либо доработать своими силами (или попросить сделать это кото-то, кто разбирается в коде). Для проверки совместимости в большинстве случаев оптимально использовать локальную (установленную на своем компьютере, например с использованием Denwer) копию блога.
И напоследок... Не ленитесь и делайте резервные копии блога или сайта как можно чаще, следите за появлением новых версий движка WordPress и новых версий плагинов, своевременно обновляйте их до новых стабильных версий. В таком случае ваш веб-ресурс будет меньше подвержен атакам злоумышленников, и Вы сможете быстро «реанимировать» ваш блог или сайт, если он был взломан или стал вести себя неподобающим образом.
Метки: WordPress, безопасность, защита
Владимир, у меня вот вопрос по ключам для аутентификации: а какой длины они должны быть, какая максимальная длина?
AndreyF, максимальная длина ключей (солей), насколько я помню, 64 символа. Такую длину ключей и рекомендуется использовать. Генерируйте их с помощью сервиса API WordPress, в статье в разделе ссылка есть на этот сервис (кстати, эта же ссылка есть в файлах wp-config.php и wp-config-sample.php).
Много узнал полезного у Вас на блоге. Спасибо!
Обновление вордпрессо это обязательно.
Также смена паролей, самое главное, чтобы все вовремя делать и не забывать записывать, а то частенько меняешь пароли а потом как начинаешь разбираться со входом и доступом к б.д и другим ресурсам.
Ну и уязвимый вордпресс. думал наоборот, что Сообщение о неправильности пароля стопорит брутфорс, т.к. приходиться окошко закрыть… Пошел убирать эту функцию )
Много полезных советов, как защитить свой блог. А, фокус, когда украденный текст может стать прямой ссылкой на статью — гениально!
Зимой пытались взломать пароли админа, переименовали wp-login.php Отстали.
Воспользовалась всеми наставлениями. Теперь буду спокойна за свой сайт. Хотя вообще ВП редко кто ломает, больше на ДЛЕ все смотрят)
Отличные советы, многие из них мне непременно будут полезными. На данный момент для меня особенно актуальная защита от копирования.
Все чаще задумываюсь о переходе на drupal — куда более защищенная CMS по всем параметрам
Да, когда сайт начинает иметь показатели, о безопасности стоит задуматься вдвойне.
Вот точно, о безопасности совсем не задумывалась… Даже мысли не возникало, кому может понадобится мой блог. Но теперь обязательно воспользуюсь всеми советами, ведь это не так сложно, а можно быть поспокойнее ) Спасибо!
Как все сложно, вторая часть статьи. В первой части все понятно. У меня везде стоят сложные километровые пароли. Редирект на админку. От копирования роботами я использую сервис. Движок обновляю регулярно. А остальное…
От копирования контента полной защиты вообще не существует.
Если браузер может отображать контент, то и роботы могут его так же свободно брать, и брать естественно не с экрана, а из исходного кода страниц. И даже если в исходниках что-то зашифровано, например base64, то опять же, браузер использует JavaScript для расшифровки, и точно такую же расшифровку спокойно смогут делать роботы.
Одно время тоже ставил защиту от копирования контента, но после жалоб со стороны посетителей, убрал. Посетителей надо любить, а от воровства действительно не защитишься.
Спасибо за кучу полезных рекомендаций по защите блога. Буду наверное потихоньку внедрять Ваши рекомендации. Ох как уязвим этот вордпресс.