Одна из самых актуальных проблем для вебмастера, который делает сайты на WordPress. Это защита блога, ведь эта CMS занимает второе место в ТОП-е Яндекса по заражённым сайтам Рунета.
И просто постоянное обновление версии движка особо не помогает, талантливые люди всегда умудряются находить слабые места WordPress.
Содержание:
- 1. Добавте секретные коды в wp-config.php
- 2. Измените префикс таблиц БД
- 3. Закройте доступ к файлу wp-config.php и .htaccess
- 4. Отключите показ версии WordPress
- 5. Включите поддержку SSL при работе с админкой
- 6. Блокируйте неудачные попытки входа
- 7. Замените стандартный логин — admin
- 8. Отключите сообщение об ошибке авторизации
- 9. Закройте все папки сайта от просмотра в браузере
- 10. Установите плагин для сканирования сайта
- 11. Измените права доступа для папок
- 12. Замените везде пароли
- 13. Постоянно обновляйте WP и плагины
Основные виды взлома сайта на WordPress
1. SQL инъекция – это возможность выполнить SQL команды к базе данных блога, путём составления специального кода для комментирования блога, форм обратной связи, плагинов.
2. Не надёжные плагины, темы, сборки для WordPress от третьих лиц или старые версии WordPress. Если это всё загружено не с официального сайта, то большая вероятность, что сайт будет с вредоносным кодом.
3. Получен доступ к хостингу или административной части WordPress.
Защищаем блог от взлома
Добавьте секретные коды в wp-config.php
Они служат для Аутентификация, то есть с помощью них проверяется правильность доступа. Одна из особенностей – при изменении ключей, произойдёт сброс всех cookies, пользователю надо будет заново залогиниться на сайте, введя пароль и логин. Сгенерировать их можно на сайте wordpress.org или придумать самим.
Измените префикс таблиц БД
По умолчанию, WordPress создаёт таблицы в базе данных MySQL с префиксом wp_ и если злоумышленник получит возможность обращаться к БД через SQL запросы , то он может послать запросы к базе данных, для внесения изменения в таблицы. Но когда не знаешь, как таблицы называются, то и обращаться не к чему.
И так, для уже работающего блога, надо:
1. Скачать файл wp-config.php и бекап базы данных на локальный компьютер. Все изменения делайте на локале!
2. Откройте wp-config.php и замените в строчке
$table_prefix = 'wp_';
На что-нибудь уникальное, например:
$table_prefix = 'fds341c_';
После этих изменений, WordPress будет обращаться к новым таблицам с префиксом fds341c_, а так как таблицы имеют ещё старый вид, то надо внести поправки в саму базу данных.
3.1 Откройте бекап вашей Базы данных в текстовом редакторе (лучше всего Notepad++) и поочередно замените все старые таблицы на новые, путём авто-замены. То есть, берёте название первой таблицы wp_commentmeta и заменяете его во всём файле на новое название fds341c_commentmeta и так для каждой таблицы.
Не надо авто заменой заменять только префикс wp_, потому что он используется не только в названиях таблиц и вы можете испортить всю базу данных. Поэтому меняйте только полные названия таблиц.
3.2 Можно заменять старые названия SQL запросом:
RENAME TABLE wp_comments TO fds341c_comments;
Делайте всё на локальной машине, чтобы была возможность исправить, если где-то ошиблись.
4. Теперь изменённые файлы (wp-config.php и базу данных) надо заменить на хостинге. Заходите на хостинге в PhpMyaAdmin и удаляем старые таблицы сайта и импортируем тот файл sql, в котором вы редактировали название таблиц, должно получится примерно вот так:
5. После этого, замените старый файл wp-config.php на хостинге, тем, который мы редактировали в пункте №2. Чтобы WordPress соединился с новыми таблицами в базе данных.
Всё, сайт должен работать в нормальном режиме. Но вы на всякий случай — сохраните бекапы сайта и базы данных, до начала внесения изменений.
Закройте доступ к файлу wp-config.php и .htaccess
В файле .htaccess укажите:
<Files wp-config.php> order allow,deny deny from all Files>
Для запрета доступа к файлу wp-config.php
<Files .htaccess> order allow,deny deny from all Files>
Эти инструкции апача закрывают доступ к самому файлу .htaccess
Отключите показ версии WordPress
Чтобы злоумышленники не смогли узнать, на какой версии WordPress работает сайт, надо в functions.php вашего шаблона прописать:
remove_action('wp_head', 'wp_generator');
Включите поддержку SSL при работе с админкой
SSL – это криптографический протокол. При использовании его, все передаваемые данные между браузером и сервером шифруются. При использовании админки у вас урл будет вот такого вида:
Для того чтобы активировать SSL шифрование, надо добавить в wp-config.php, вот такую строчку:
define('FORCE_SSL_LOGIN', true);
Если у вас VPS, то надо будет добавить SSL сертификат. В общем, не все хостинги поддерживают это, если вы активировали и не смогли попасть в админку, то пишите в саппорт, чтоб они помогли включить поддержку SSL на вашем хостинге, если такое имеется, конечно.
Я кстати использую FastVps, он поддерживает всё или почти всё :), советую.
Блокируйте неудачные попытки входа
Для этого подойдёт плагин Limit Login Attempts.
С помощью него можно настроить:
- Сколько можно совершить попыток неудачного ввода логина и пароля;
- На сколько часов изолировать ip, после неудачных попыток залогинится;
- Ведётся история блокировок, с записью времени и IP.
Замените стандартный логин — admin
Большинство блогеров не изменяют стандартный логин и оставляют admin по умолчанию, хотя лучше всего заменить на что-нибудь по сложнее.
Поменять можно SQL запросом:
UPDATE wp_users SET user_login = 'Новый_Логин' WHERE user_login = 'admin';
Для тех кто не знает – SQL запрос можно выполнить в PhpMyAdmin, вкладка SQL:
Отключите сообщение об ошибке авторизации
WordPress по умолчанию показывает тип ошибки
а это дополнительный бонус для хакеров, при подборе логина и пароля для входа в административную панель.
Чтобы убрать вывод ошибки, надо в functions.php прописать:
add_filter('login_errors',create_function('$a', "return null;"));
Закройте все папки сайта от просмотра в браузере
Через браузер можно попасть в папки uploads или plugins:
Чтоб этого не происходило, в файле .htaccess укажите:
Options -Indexes
Теперь при попытке зайти в папку, будет выдаваться сообщение, что у вас нет прав доступа.
Установите плагин для сканирования сайта
Для этого отлично подойдёт Exploit Scanner, он проверяет файлы WordPress, шаблона, комментарии, посты на наличие подозрительного кода.
Этот плагин надо установить, проверить сайт и отключить, так как он употребляет много оперативной памяти и может замедлять работу сервера. Поэтому лучше проверять ночью, когда падает активность на сайте. На слабом хостинге скорей всего не получится запустить этот плагин.
Измените права доступа для папок
Для всех основных папок в WordPress, можно установить права доступа 755, а именно для:
/wp-includes/
/wp-content/
/wp-content/themes/
/wp-content/plugins/
Замените везде пароли
1. Пароль на доступ к хостингу, FTP;
2. Пароль для доступа к PhpMyAdmin (если возможно), пароль на базу данных;
3. Пароль на доступ в админку блога.
И использовать не один пароль для всего, а везде разный и лучше всего сгенерировать символов из 15-16 :), для этого в помощь сервис – strongpassword.
Проблема только с хранением таких паролей, в голове ведь не удержишь. Можно как вариант зарегистрировать новую почту на gmail и хранить в Google Docs, или записать их все в блокнот :).
Постоянно обновляйте WP и плагины
Важный момент, ведь с каждой новой версией исправляют все дыры и слабые места, которые были в прошлых сборках и на которых не безопасно оставаться.
Вывод
В настоящее время взломаны тысячи сайтов на WP и многие хозяева даже не подозревают об этом. Одна из причин взлома – это размещение скрытых ссылок на свои сайты. То есть владелец сайта их не видит, а они есть:
Я поискал в Google ещё сайты, у которых есть точно такие же скрытые ссылки как выше на скриншоте:
Можно увидеть, какое огромное количество сайтов взломано и это только один вид взлома и одного хакера.
После взлома очень сильно проседает поисковый трафик:
И ещё
Не вооружённым глазом заметно, что с сайтом что-то не так. Если у вас в течении двух-трёх недель так сильно падает трафик или сайт стал медленно работать, или падают резко позиции — не ленитесь, проверьте свой сайт на скрытые ссылки, iframe и.т.п. И сделайте всё то, что написано в этой статье.
100% безопасности эти способы не дают, но всё равно лучше, чем ничего.