Устраняем уязвимостиПовышение уровня безопасности Вашего блога на 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);

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

[sourcecode language='css']