Повышение уровня безопасности вашего блога на WordPress, является хорошей манерой ведения блога. Так WordPress имеет открытый исходный код, что повышает шансы вредоносных атак на успех. Свои советы по безопасности даёт Артур Патрихалко.
Ранее я уже описывал, как с помощью нескольких плагинов повысить безопасность блога, теперь рассмотрим советы и приемы, с помощью которых можно устранить wordpress уязвимости.
Защищаем файл wp-config
Одним из главных файлов блога является wp-config.php, который содержит все данные, необходимые для подключения к серверу MySQL и базе данных. Защита этого файла – одна из самых главных задач, поэтому необходимо запретить доступ к этому файлу. Для этого в файл .htaccess (файл находиться в корне сайта) необходимо добавить код. Код:
order allow,deny
deny from all
Изменяем расположение wp-config.php.
Файл конфигурации WordPress «wp-config.php», можно убрать из папки блога, на один уровень вверх, там где его никто не найдет, что повысить безопасность блога. К примеру, блог находится в папке «/названиеблога.ru/public_html/» как правило, к папке «названиеблога.ru» доступа через веб уже нет, но если переместить туда файл wp-config.php, WordPress все еще будет работать, потому, как умеет искать файл конфигурации в папке на уровень выше.
Настраиваем права доступа на файлы и папки
Права доступа устанавливаются автоматически при закачке сайта на хостинг на файлы и папки. Необходимо настроить права доступа на папки — 755, на файлы – 644, для cache и uploads – 777.
Немного рассмотрим доступ на папки:
/wp-admin/ — папка панели администрирования: доступ на запись файлов, должен быть только у пользователя хостинга.
/wp-includes/ — служебные файлы WordPress: доступ на запись файлов, должен быть только у пользователя хостинга.
/wp-images/ — картинки WordPress: доступ на запись файлов, должен быть только у пользователя хостинга.
/wp-content/ — различное содержимое добавляемое пользователями блога: доступ на запись файлов, может быть у всех, пользователя, группы и публичный. Однако по некоторым рекомендациям доступ на запись ограничивают и для этого каталога.
/wp-content/themes/ — шаблоны WordPress блога: доступ на запись файлов, должен быть только у пользователя хостинга, если хотите использовать встроенный редактор шаблонов, тогда доступ нужно дать и для группы
/wp-content/plugins/ — плагины WordPress: доступ на запись файлов, должен быть только у пользователя хостинга.
Обязательно выполняем регулярный бэкап БД
Важным условием безопасности Вашего блога, является регулярное резервное копирование или создание бэкапа БД и системных файлов. Резервные копии дают возможность в любой момент восстановить информацию, над которой Вы так долго работали.
Если Ваш блог взломан, или удален полностью с сервера, резервная копия всегда поможет восстановить его после атаки. Поэтому не ленитесь и делайте по несколько резервных копий на разных носителях информации, чтобы уберечь себя и Ваши нервы.
Делать бэкапы обязательно перед изменением или внесением каких-либо действий в системные файлы Вашего блога. С помощью плагина WP DataBase Backup, Вы сможете регулярно получать бэкапы БД по почте.
Так же рекомендую делать полный бэкап wordpress сайта в dropbox, читаем как быстро и легко это сделать.
Устанавливаем пароль на папку wp-admin
Некоторые хостинги в своих панелях управления предоставляют возможность поставить дополнительный пароль на папку. Если у Вас есть такая возможность, то обязательно воспользуйтесь данным сервисом и установите пароль на папку wp-admin. В случаи получения злоумышленником «ключей» (логин/пароль) от панели администрирования Вашего блога, ему потребуется ввести еще один пароль, чтобы попасть в административную панель Вашего блога.
Убираем ошибку о неверно набранном логине/пароле
Когда Вы ошибаетесь при вводе логина/пароля в административную панель, то появляется сообщение о неверно набранных данных. Тем самым злоумышленник будет знать, что он ввел не те данные, но зачем нам давать ему такую возможность? И так, чтобы убрать сообщение об ошибке ввода необходимо добавить небольшой код в functions.php (данный файл находится в папке с темой Вашего сайта). Вот сам код:
add_filter ('login_errors',create_function ('$a', «return null;»));
Сохраняем и обновляем файл на сервере. Все, теперь вывод сообщений не будет происходить.
Скрываем версию ВП
Новые версии программ делают, чтобы добавить новые возможности, упростить управление и главное закрыть бреши от злоумышленников. Так и wordpress не отличается от других программ и имеет свои уязвимости в той или иной версии, поэтому надо эту брешь закрыть. Так не вовремя обновленная версия движка увеличивает шанс воспользоваться слабыми местами, но скрыв версию вордпресса повысить безопасность блога.
Советую удалить файл readme.html, находящийся в корне сайта. В нём тоже содержится информация о текущей версии WordPress'a.
Так же можно установить плагин Secure WordPress и в настройках поставить галочку напротив пункта «Версия WordPress».
Изменяем стандартный логин для входа в административную панель
Стандартно, после установки WordPressа, в административную панель сайта устанавливается логин «admin». Если логин известен, то провести успешный брутфорс будет легче, поэтому надо изменить данное упущение.
С версией WordPress 3.0 у Вас появляется право указать любой логин, чем непременно советую воспользоваться. Для остальных версий нужно немного поколдовать. Предлагаю четыре варианта решения данной задачи:
Первый способом, просто выполняем этот запрос к базе данных:
UPDATE wp_users SET user_login = 'Ваш новый логин' WHERE user_login = 'Admin';
Чтобы посты, написанные ранее admin'ом не поменяли своего автора, необходимо выполнить ещё один запрос:
UPDATE wp_posts SET post_author = 'Ваш новый логин' WHERE post_author = 'admin';
Для второго способа необходимо создать нового пользователя с правами администратора, затем выйти из админки блога и залогиниться под новым ником. После чего следует проверить: все ли функции доступны, и удалить первую учетную запись, связав все записи с новым пользователем.
Для третьего способа нам понадобиться плагин WPVN — Username Changer, который поможет изменить логин на который вы хотите.
Для четвертого способа надо немного подкорректировать БД, читаем как это правильно сделать.
Усложняем пароль в админку
Халатность при выборе пароля для входа в административную панель может пагубно сказаться на его безопасности. Многие вводят пароли в виде своей фамилии, даты рождения, цифр вида 12345, слов qwerty, но в наше время брутфорс все легче и легче становиться, поэтому минимум надо делать пароль из 12 символов. Используя в пароле цифры, спецсимволы, заглавные и строчные буквы.
Так же сложностью паролями не надо пренебрегать и на доступе в ФТП, в панель управления хостингом, в е-меил аккаунте.
Переносим страницу входа в административную панель
По умолчанию страница входа в административную панель блога находится по адресу: вашсайт.ru/wp— login, что в очередной раз дает брешь для взломщика. Чтобы заставить сначала найти вход в админку, а потом уже попытаться подобрать ключ к ней, мы изменим директорию нахождения wp— login. Поможет плагин Stealth Login, который позволяет изменить адрес страницы авторизации, о нем я уже писал.
Ограничиваем количество попыток авторизации в админку
Изменив логин и подобрав сложный пароль в административную панель блога, мы все еще не совсем уверены в своей безопасности, т.к. мы еще не защитились от брутфорса (метод решения задачи путем перебора всех возможных вариантов, сложность полного перебора зависит от количества всех возможных решений задачи). Поэтому, чтобы убрать возможность подобрать пароль от административной панели необходимо воспользоваться плагином Login Lockdown, который будет блокировать IP-адрес после нескольких неправильных попыток авторизации. Про данный плагин я уже писал ранее в статье про плагины для защиты ВП.
Защищаем передачу данных через SSL протокол
Если у Вашего провайдера есть возможность использовать SSL—протокол, то Вы можете обезопасить передачу данных. Так при активированной данной функции будет происходить принудительное использование SSL при входе в админку. Если возможность есть, то заходим на сервер и открываем wp-config.php и добавляем код:
define ('FORCE_SSL_ADMIN', true);
На данной статье останавливаться не буду и скоро опубликую еще материала по повышению безопасности блога.
http://ahawks.ru/wordpress/bezopasnost-wordpress/bezopasnost-wp-chast-1.html — link
ЧАСТЬ ВТОРАЯ
Наконец то публикую вторую дюжину советов, кто пропустил первую могут наверстать упущенное, так же прилагается список плагинов для повышения уровня безопасности. Данные советы помогут закрыть доступ к блогу железной стеной. А если и этого мало, то через неделю, в следующую пятницу Вашему вниманию предоставиться еще 12 советов как укрепить стену от нежелательных гостей.
Всегда обновляем WordPress и плагины
Процедура обновления WordPress и плагинов очень простая, а главное эффективная. Так как часто с новыми версиями выходят исправления для критических ошибок и уязвимостей, с помощью которых Ваш блог может быть подвержен взлому. Это обеспечит дополнительную защиту блога.
Процедура обновлению системных файлов WordPress и плагинов особо не составляет труда.
Так для того, чтобы обновить WordPress, необходимо зайти в панель администрирования, раздел «Инструменты» — «Обновление» или в новых версиях «Консоль» — «Обновления» и нажать кнопку «Обновить WordPress», после чего Вам, возможно, понадобится ввести логин, пароль и имя FTP сервера, чтобы программа обновления WordPress могла получить доступ к папкам и файлам. После чего запустится обновление WordPress, и если все хорошо, через пару минут на вашем блоге будет стоять новейшая версия WordPress.
Так же обновить ВП можно так, скачайте новую версию WordPress, распакуйте на своем компьютере и загрузите на сервер, перезаписывая существующие файлы. Естественно перед обновлением, нужно сделать резервную копию базы данных и файлов блога.
Плагины можно обновлять тоже автоматически, в разделе «Плагины» или «Обновления», либо скачиваем новую версию плагина, распаковываем и загружаем на сервер, перезаписывая существующие файлы плагина.
Защищаемся от XSS инъекций
Чтобы защитить блог от изменений переменных GLOBALS и _REQUEST необходимо в файл .htaccess вставить код, который будет блокировать запросы, направленные на модификацию переменных или содержащие скрипт. Код:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\|%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-запросов
WordPress неплохо защищён сам по себе, но есть люди пытающиеся с помощью длинных зловредных запросов найти брешь в сайте, поэтому необходимо от этого защититься. Для этого создаем сами простой плагин, который будет проверять все длинные запросы превышающие 255 символов. В случаи обнаружения таких запросов будет появляться страница с ошибкой 414 пользователю.
Для начала заходим в папку wp-content/plugins и создаем там пустой файл blockbadqueries.php. Открываем созданный файл и вставляем следующий код:
/*
Plugin Name: Block Bad Queries
Plugin URI: perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests
Author URI: perishablepress.com/
Author: Perishable Press
Version: 1.0
*/
global $user_ID;
if ($user_ID) {
if (!current_user_can ('level_10')) {
if (strlen ($_SERVER['REQUEST_URI']) > 255 ||
strpos ($_SERVER['REQUEST_URI'], "eval (") ||
strpos ($_SERVER['REQUEST_URI'], «CONCAT») ||
strpos ($_SERVER['REQUEST_URI'], «UNION+SELECT») ||
strpos ($_SERVER['REQUEST_URI'], «base64»)) {
@header («HTTP/1.1 414 Request-URI Too Long»);
@header («Status: 414 Request-URI Too Long»);
@header («Connection: Close»);
@exit;
}
}
}
?>
Затем просто активируйте его в админке как любой другой плагин.
Защищаемся от хотлинка
Данным методом будем защищаться от хотлинка картинок с Вашего сайта, чтобы не нагружать сервер зря. Поэтому мы заставим проверять сервер, откуда идет запрос на картинку, если с Вашего блога – то есть добро, если не с нашего – то показываем красный свет личерам.
Открываем файл .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]
Закрываем возможность просматривать директории на сервере
Если введя в браузере 'вашблог.ru/wp-includes'. Вы обнаружите содержимое данной папки, то это же может увидеть и злоумышленник.
Вы можете либо добавить пустые файлы index.html в папки, просмотр которых хотели бы запретить. Либо дополнить наш .htaccess ещё одной строкой.
Открываем файл .htaccess и добавляем код:
Options -Indexes
Если версия Вашего вордпресса старее 2.7, то рекомендую создать пустой файл index.html в папке с плагинами wp— content/plugins.
Изменяем префикс БД
По умолчанию в WordPress таблицы баз данных имеют префикс «wp_», что существенно снижает безопасность блога. Чтобы устранить этот недостаток, нужно изменить префикс на более сложный.
Чтобы не мудрить, рекомендую воспользоваться плагином WP Security Scan про который я уже писал. Устанавливаем и активируем плагин, в административной панели вордпресса появится вкладка «Безопасность». Кликаем на плагин и изменяем префикс БД. Только не забудьте поставить после него нижнее подчеркивание.
Если блог перестанет загружаться, возможно, мой опыт описанный здесь поможет.
Генерируем уникальные ключи для аутентификации сайта
При установке WordPress при редактировании файла 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', 'впишите сюда уникальную фразу');
Для повышения безопасности необходимо заполнить все поля 'впишите сюда уникальную фразу', чтобы не напрягаться с выдумывания фразы воспользуемся данным сайтом, который с генерирует уникальные все ключи.
Не храним пароли в FTP клиентах
Сохранение в FTP клиентах паролей от сервера несет большую опасность. Если злоумышленник узнает данные из FTP клиента, то все другие предоставленные меры по устранению уязвимостей в блоге сведутся на нет.
Удаляем неиспользованные плагины
К угрозам безопасности вордпресса можно отнести и активированные/деактивированные плагины, поэтому если Вы не пользуетесь тем или иным плагином, рекомендуется его удалить. Заново скачать на сервер плагин занимает не так много времени, как устранение одной из уязвимостей ВП. Так же при помощи данного совета можно снизить вес сайта, что ускорит его загрузку для пользователей.
Используем SFTP вместо FTP
Если Вы приобрели VPS хостинг или у Вашего хостинга есть возможность использовать SSH вместо FTP или FTP+SSL, то обязательно пользуйтесь для обеспечения безопасности.
Удаляем все ненужные файлы
Ранее я уже описывал про необходимость скрывать версию ВП. Версии неявно указаны в файлах readme.html и license.txt, которые находятся в корневой директории блога. После обновления WordPress эти файлы автоматически появятся снова, так что не забываем их удалять.
Так же советую удалить файл install.php. Он нам понадобился только один раз, когда устанавливали WordPress, и теперь нет необходимости в нем, даже наоборот. В случаи сбоя на сервере, сервер может заново начать установку вордпресса, а если данная возможность появиться у злоумышленника, он может этим воспользоваться с корыстью.
Вводим важные данные через виртуальную клавиатуру
Для предотвращения действия кейлогеров, предлагаю вводить логин и пароль от ресурсов через виртуальную клавиатуру. В виндовсе можно воспользоваться специальной возможность – экранной клавиатурой, так же в программе «Касперский Кристал» есть своя виртуальная клавиатура.
http://ahawks.ru/wordpress/bezopasnost-wordpress/bezopasnost-wp-chast-2.html — link