12

Безопасность Wordpress, уязвимость Wordpress и 13 способов обороны

secure.jpg
Вопрос безопасности актуален для каждого сайта, независимо от типа используемого движка (CMS), у каждого есть свои уязвимости и слабые места. Но мы сегодня остановимся именно на WordPress, самом популярном блоговом движке. Итак держим оборону своего блога на WordPress.
Существует много простых способов улучшить безопасность WordPress, чтобы избежать больших проблем в будущем.

1.Изменение префикса таблиц в базе данных WordPress
По умолчанию префикс WordPress таблиц – ya_, то есть все таблицы в базе начинаются с этих символов. Большинство ботов, использующих SQL-инъекцию (SQL-Injections) уязвимости, применяют стандартные имена таблиц. Изменив их префикс, мы снизим риски ориентированных атак не только хакерских ботов, но и самих хакеров.
Если WordPress еще не установлен, то необходимо отредактировать файл ya_config.php. Находим строку:
$table_prefix = 'ya_';
Меняем на:
$table_prefix = 'myprefix_';
Если, WordPress уже установлен,то потребуется еще пара действий:
Вручную переименовываем все существующие в базе WordPress таблицы, выполнив несколько несложных SQL запросов
RENAME TABLE ya_posts TO myprefix_posts;
И так для каждой таблицы. Имена и количество таблиц зависят от установленной версии WordPress.
Однако можно не париться вручную и установить плагин, который сделает все автоматически:WP-Prefix-changer

2.Удаление информации о версии WordPress
У бесплатного движка есть недостаток – любой может скачать, поставить и изучить. И изучают, и находят ошибки. Регулярно. Поэтому, даже если у нас и есть ошибки и уязвимости, будем держать их при себе и скроем версию своего WordPress. Это можно сделать вручную, удалив из header.php,sidebar.php и footer.php строчку <meta name="generator" content="WordPress <?php bloginfo('version'); ?>"/> или изменив ее содержимое.
А можно воспользоваться плагином Replace-wp-version

3.Переименование имени администратора по умолчанию
По умолчанию учетная запись администратора в WordPress имеет логин admin.
Поменять логин можно с помощью sql-запроса к базе данных:
UPDATE ya_users SET user_login='admin', user_login='mylogin';
Таким образом мы изменим логин на mylogin. Это обеспечит безопасность при попытке брутфорса учетной записи администратора, если конечно вы не станете кричать всем направо и налево, что ваш логин теперь не admin, а mylogin!

4.Контроль доступа к учетной записи администратора
Для этого существует хороший и полезный плагин Login LockDown, который фиксирует неудачные попытки доступа и блокирует возможность брутфорса.

5.Блокирование доступа к админке средствами веб-сервера
Для этого генерируем файл .htpasswd, например с помощью Htpasswd generator, такого вида:
htpasswd -mbc .htpasswd USER PASSWORD,
где USER – имя пользователя, а PASSWORD – его пароль. Полученный файл кладем в папку wp-admin вместе с .htaccess со следующими инструкциями:
AuthUserFile /путь от корневого каталога/.htpasswd
AuthType Basic
AuthName "Access_Control"
Require valid-user

Можно поступить проще и использовать плагин, который сделает все автоматически AskApache Password Protect

Ну, вот. Теперь админку, не зная пароля, скорее всего никто не откроет. Чтобы хотелось добавить к вышеизложенному? Через .htaccess можно разрешить доступ к админке с определенного IP. Для этого добавляем следующий код для .htaccess в основной директории:
<Files wp-login.php>
Order Allow,Deny
Allow from 0.0.0.0
</Files>

И для .htaccess в папке wp-admin:
Order Allow,Deny
Allow from 0.0.0.0

Где 0.0.0.0 – это ваш IP-адрес. Если он у вас динамический и постоянно меняется, то пишем
0.0.0 без точки в конце.

6.Ограничение доступа к директориям wp-content и wp-includes.
Запретите в этих директориях доступ к любым файлам, кроме изображений, файлов JavaScript и CSS. Для этого в данных директориях создайте файл .htaccess со следующим содержимым:
Order Allow,Deny
Deny from all
<Files ~ ".(css|jpe?g|png|gif|js)$">
Allow from all
</Files>

7.Создание файла robots.txt
Можно легко запретить индексировать поисковикам папку wp-admin и другие папки на ваше усмотрение с помощью файла robots.txt:
User-agent: *
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /wp-admin/
Disallow: /images/
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /xmlrpc.php

8.Создание файла index.html в папке plugins
В стандартной настройке WordPress любой может посмотреть список плагинов, которые используется. Многие плагины обладают уязвимостями. Поэтому желательно, чтобы список плагинов был не доступен по адресу: http://www.вашсайт.ru/wp-content/plugins/
Создаем пустой файл index.html и кидаем в папку plugins. Теперь все OK.

9.Отключение сообщений об ошибках
Сообщения об ошибках могут содержать очень много полезной информации не только для вас, но и для злоумышленника. Для отключения сообщений об ошибках можно использовать плагин bs-wp-noerror.

10.Использование шифрования
Если хостинг предоставляет SSL, можно использовать протокол HTTPS для входа в WordPress. Для реализации используем плагин bs-wp-https или force-ssl.

11.Использование проверенных плагинов
Многие плагины уязвимы и могут повредить надежность и безопасность сайта на WordPress. Поэтому список уязвимых плагинов можно посмотреть здесь
и здесь,
да, и не забудьте про список всех уязвимостей WordPress на www.securitylab.ru

12.Обновления и бэкап
Не следует забывать и о таких мелочах, как обновления плагинов и файлов для WordPress, а так же своевременный бэкап базы данных.

13.Удачи!

(В статье использованы материалы с сайтов:

zhilinsky.ru
streha.ru
kgayzer.info
Спасибо авторам!)

В публикации: знаков 5648, слов 826 - на сумму 11.296 $  (?)
Метки: , , , , ,

Advego.ru

12 комментов к  “Безопасность Wordpress, уязвимость Wordpress и 13 способов обороны”

  1. Безопасность Wordpress 13 способов обороны | WP лента : 9-Июнь=2008 | 20:03

    [...] Существует много простых способов улучшить безопасность WordPress, чтобы избежать больших проблем в будущем. Источник [...]

  2. cmepthuk : 27-Июнь=2008 | 22:21

    Спасибо за интересную информацию!

  3. maksim : 19-Июль=2008 | 12:53

    начал ставить плагин на WP 2.5.1
    сайт упал,удалил файлы .htaccess и .htpasswd из wp-admin всё одно морда висит а по ссылкам переходит на эту надпись
    The requested URL /zzzzzz/ was not found on this server.

    хотел как лучше (после трёх взломов)а получилось…

  4. admin : 26-Июль=2008 | 6:12

    Какой именно плагин ставил?

  5. insurance young driver : 28-Сентябрь=2008 | 15:28

    СУПЕР!!!!

  6. Shred : 22-Октябрь=2008 | 18:27

    Плагин AskApache Password Protect кроме потраченного зря времени не принёс. Использовал 2,6,2 версию ВП. У кого-нить получилось нормально настроить этот плагин? WP-Prefix-changer тоже не заработал :(

    ЗЫ Подскажи плагин капчи :)

  7. admin : 23-Октябрь=2008 | 22:55

    Плагин MyCaptcha ищи на wordpress.org….:)
    А на новых версиях Wordpress Ask apache не пашет – делай ручками.

  8. easye : 11-Ноябрь=2008 | 1:23

    Насчет 6 пунтка, при отключении доступа к папке wp-includes будет невозможно редактировать записи в Html в панели приборов, и пропадает стрелка на раскрытие окна, чтобы удобно было вводить текст(то есть, чтобы не прокручивать)

  9. admin : 11-Ноябрь=2008 | 19:39

    Какая версия Wordpress? :)

  10. easye : 11-Ноябрь=2008 | 23:01

    версия 2.6.3

  11. admin : 12-Ноябрь=2008 | 1:41

    Все вышеперечисленные методы проверялись на WP 2.2-2.5, проблем не возникало. Про 2.6 и выше еще не тестировал, сказать не могу… :(

  12. Carik : 14-Декабрь=2008 | 17:18

    Можно добавить плагины Anti-XSS attack и belavir. Второй хоть и не защищает, но зато показывает все изменения в файлах. Если Вы их не делали, значит произошло вторжение.