От автора: такое может присниться только в страшном сне: однажды вы открываете свой веб-сайт и понимаете, что вас взломали. Если у вас обычный блог, то для вас это не больше, как просто досадный инцидент. Однако если вы являетесь хостингом для сайта клиента, то это будет очень напряженный день. Если вы вообще владелец интернет-магазина с высокими продажами, то хакерская атака может вызвать у вас панику. Чтобы ни случилось вы точно не будете использовать счастливые смайлики, когда кому-то расскажете о своей проблеме. Так что вам нужен план, как предотвратить атаки еще до того, как они произошли.
Вы пришли точно по адресу. В этой мини серии из двух статей я покажу вам, как максимально повысить защиту ваших WordPress проектов. Мы рассмотрим безопасность сайта на WordPress в самых различных аспектах.
О безопасности в WordPress
Как вы думаете, WordPress безопасная система? Если вы так не думаете, это нормально. Многие люди думают, что WordPress небезопасная система управления контентом. Пока что все это очень далеко от правды… по крайней мере сейчас.
Что общего у Microsoft Windows, Android, Google Chrome и WordPress? Это крайне популярное программное обеспечение, и люди постоянно находят в них дыры в безопасности. Даже если учесть постоянные патчи, латающие различные баги и бреши в безопасности, дыры в безопасности действительно делают это программное обеспечение небезопасным?
Мне жаль если вы так думаете, но это совершенно не так. Частые патчи не означают того, что часть плохо написанного кода является угрозой безопасности. Игра в кошки-мышки между разработчиками и хакерами будет всегда, и хакеры всегда найдут способ взломать программное обеспечение. А если ПО расширяемое, как WordPress, то шансы хакеров только возрастают.
Важно быть адаптивным и работать на упреждение, с чем WordPress хорошо справляется. Для исправления дыры в безопасности Google Chrome вам придется ждать пару дней, Microsoft может неделями выпускать фиксы по безопасности, но огромное сообщество разработчиков WordPress способно исправить ошибку в безопасности в тот же самый день. К тому же, есть целая команда, работающая над безопасностью ядра WordPress, так что мы в надежных руках. Так как темы и плагины связаны, то искать баги становится немного легче, но исправление этих ошибок может занять немного больше времени. Однако сообщество всегда поддержит разработчиков.
Тем не менее, нет ничего безопасного на 100%. Мы живем в такое время, когда ученые почти взломали код в наших мозгах! Недоступных областей больше нет, видимо наш мозг и WordPress не исключения. Но невозможность достижения стопроцентной безопасности не означает, что мы должны стремиться к показателям вроде 99.999%.
Как повысить безопасность WordPress
Из личного опыта и проведенных исследований я выделил несколько основных мер безопасности. Если вы до сих пор не провели их, то теперь должны. Без лишних церемоний рассмотрим их!
Безопасность файла .htaccess
Начнем с простого. Если ваш сайт находится на веб-сервере под управлением Apache, и в настойках включены «pretty permalinks», то WordPress сгенерирует файл .htaccess для хранения базовых инструкций постоянных ссылкок. Если вы не активировали постоянные ссылки, то ядро WordPress не создаст этот файл, я советую вам создать его вручную.
Подсказка: Если вы хотите создать .htaccess вручную, но не понимаете, как создать файл без имени и с таким расширением, просто загрузите любой файл (к примеру, Untitled.text) и измените его имя и расширение через FTP клиент.
Первое, что мне приходит в голову – надо защитить файл htacess. Из всех дальнейших моих советов и подсказок это самое простое. Вам нужно всего лишь добавить следующие строки в этот файл:
1 2 3 4 5 |
# protect .htaccess <Files .htaccess> order allow,deny deny from all </Files> |
Безвредный способ защитить файл htaccess от кого-либо (или чего-либо), кто хочет получить доступ к нему. Теперь давайте отключим показ содержания папок:
1 2 |
# disable directory browsing Options All -Indexes |
Данная строка предотвратит случаи, когда кто-то хочет получить доступ к папкам наподобие myblog.com/wp-content/uploads/. Обычно в директории /uploads/ пользователи видят загруженные файлы или панель навигации по подпапкам, но с данным запретом перед ними появится ответ сервера 403 Forbidden.
И в конце я хочу добавить черный список с сайта Perishable Press: The 5G Blacklist. Это черный список защитит ваш сайт от различного вида хакерских атак, от вредоносных строковых запросов и до подмененных пользовательских агентов.
Все это было для файла htaccess. Теперь же рассмотрим файла wp-config.php.
Советы по безопасности файла wp-config.php и его контента
С точки зрения безопасности файл wp-config.php, наверное, самый важный. С этим файлом можно делать действительно очень много чего.
Начнем с интересного трюка: Вы знали, что файл wp-config.php можно разместить на один уровень выше корневой директории? Если вы еще не запутались, то попробуйте сделать это прямо сейчас. Я всегда устанавливаю WordPress в папку public_html, а файл wp-config.php размещаю в корневой папке пользователя. Не думаю, что это панацея, но это как минимум более безопасно. На сайте Stack Exchange эта тема бурно обсуждалась.
Кстати, давайте вернемся в файл htaccess и запретим доступ к файлу wp-config.php:
1 2 3 4 5 |
# protect wpconfig.php <files wp-config.php> order allow,deny deny from all </files> |
Есть интересная мысль: Как запретить редактирование файлов темы и плагинов? Для этого нужно всего лишь добавить следующую строку в wp-config.php:
1 |
define( 'DISALLOW_FILE_EDIT', true ); |
Все еще думаете, что ваш сайт не в безопасности? Вставьте следующую строку под верхней строкой для запрета установки и удаления плагинов и тем:
1 |
define( 'DISALLOW_FILE_MODS', true ); |
Еще два совета по безопасности WordPress: Измените префиксы в базе данных и добавьте ключи безопасности (соли) в файле wp-config.php. Первый совет простой – Проверяем значение префикса по умолчанию и находим следующую строку:
1 |
$table_prefix = 'wp_'; |
Если значение переменной wp_, то смените его на любое другое. Его не обязательно запоминать, можете написать что угодно. Я люблю использовать что-то типа wp_fd884vg_ — безопасность и читаемость обеспечены. Изменить ключи безопасности тоже довольно просто. Ниже представлены строки, по умолчанию значения которых должны быть пустыми:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/**#@+ * Authentication Unique Keys and Salts. * * Change these to different unique phrases! * You can generate these using the {@link //api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service} * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again. * * @since 2.6.0 */ 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», это значит, что ключи еще не установлены. В этом случае просто перейдите по этому URL (есть в комментарии к коду выше) и замените строки выше на сгенерированные строки этой страницы. Подсказка: Если вам интересно, что же такое эти «соли», то на сайте WPBeginner есть отличная статья о преимуществах их использования. С файлом wp-config.php закончили. На сегодня, думаю, хватит.
На сегодня все
Надеюсь, вам понравились советы по файлам .htaccess и wp-config.php. В следующей статье этой мини серии мы рассмотрим некоторые плагины и советы по обеспечению безопасности в WordPress. Если у вас есть вопросы, или вам есть что сказать, пишите об этом в комментариях. Увидимся в следующей части!
Автор: Barış Ünver
Источник: //code.tutsplus.com/
Редакция: Команда webformyself.