MaxSite CMS - бесплатный «движок» вашего сайта! Легкая, мощная и надежная CMS - система управления сайтом. Никаких тормозов!

Безопасность WordPress. Краткое руководство

15 марта 2007 г. Просмотров: 9331 RSS 30
WordPress » Безопасность WP

Череда последних обновлений WordPress показывает, что хакеры довольно пристально следят за развитием «движка». Можно конечно обвинять в этом разработчиков, но любой, кто имеет хотя бы поверхностные знания в программировании, знает, что абсолютно защищенных программ не существует. Для того, чтобы программа стала максимально безопасной, требуется её массовое тестирование. Только в этом случае можно исправить все баги и «дыры».

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

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

Сервер

Даже если хакер обнаружил «дыру» в WordPress'е и решил ей воспользоваться, то для внедрения своего кода может попробовать изменить на сервере файл «родного» скрипта на свой.

В большинстве случаев, для того, чтобы переписать файл на сервере, нужно изменить его права. Обычно на файлы установленны 644 (изменение файла разрешено только владельцу). Первым делом хакер будет изменять права так, чтобы изменять файл можно было бы всем (666). Делается это с помощью php-команды chmod. Поэтому, для того, чтобы избежать такой ситуации, хостер отключает выполнение этой команды в php-скриптах.

Такой способ создает некоторые неудобства для легального пользователя, поскольку для изменения прав нужно использовать FTP. Но, с другой стороны, тех скриптов, которые требуют полный доступ не так уж и много. Для WordPress'а это каталоги uploads, caсhe и backup. Так, что их достаточно настроить один раз.

Другими php-командами, которыми может воспользоваться злоумышленник, являются команды операционной системы (например exec). Очень часто хостеры также отключают их, поскольку здесь речь идет уже о безопасности всего сервера.

Как вы можете изменить установки сервера? Никак. Всё, что вы можете сделать, так это обратиться к хостеру и уточнить у него эту информацию.

Пароли

При установке WordPress создает пользователя «admin» с паролем из 6 символов. Изменить логин уже невозможно, а вот пароль лучше всего сменить на что-нибудь более длинное.

С точки зрения безопасности, WordPress делает правильно: сам пароль не хранится в открытом виде, а шифруется с помощью md5 (название алгоритма). Причем такое шифрование необратимо, то есть зная зашифрованную строку (хэш), у вас нет способа его раскодировать. После того, как вы вводите свой пароль, WordPress его также кодирует и уже после этого сверяет с тем, что хранится в базе.

Поэтому, даже если злоумышленник получит зашифрованную строку, то для того, чтобы её расшифровать использует различные методы, один из которых подбор по словарю. Хакер может заранее сгенерировать хэши и уже после этого сравнить с хэшем жертвы.

В данном случае проблема заключается именно в малой длине пароля. Если же вы увеличите его длину до 15-20 символов, то вероятность его подбора сведется практически к нулю.

Способ запоминания паролей

Если ваш пароль «admin», «wordpress» или собственное имя пусть даже и с вариацией года рождения, то знайте, что ваш пароль можно подобрать, ориентируясь лишь на эти данные. Понятно, что такой пароль просто запомнить, поэтому я предлагаю вам способ для запоминания сколь угодно длинных паролей.

Суть его очень проста.

  • Придумайте легко запоминающуюся фразу, например строчку из песни, пословицы, поговорки. Длина должна быть 10-20 символов, исключая пробелы. Возьмем для примера: «Мы ребята не зазнайки».
  • Наберите эту фразу в английской расскладке: уберите пробелы и всё в нижнем регистре. Наш пример: «vsht,znfytpfpyfqrb».

Как видите мы получили вполне приличный пароль, который легко набрать, зная ключевую фразу. Главное не используйте букву «э», поскольку это соответствует одиночной кавычке, и вряд ли будет разрешено системой.

Для того, чтобы уложнить алгоритм, вы можете добавить цифры, или использовать «сдвиг клавиш», например вместо «п» набирать «а» или вместо пробела - «ч». При такой способе вы можете вообще хранить исходную фразу в открытом виде. smile

Регистрация пользователей

Я до сих пор не понимаю тех, кто требует принудительную регистрацию на блоге ради комментирования. Это противоречит здравому смыслу и несет опасность блогу.

Дело в том, что WordPress использует одну админ-панель для всех. Для распределения полномочий используется уровень доступа, который выставляется админом. Но главное здесь в том, что получив доступ к админ-панели даже с минимальным уровнем, злоумышленник может воспользоваться предустановленным скриптом-плагином. Теоретически WordPress должен блокировать любое выполнение плагина, если его уровень не соответствует заданному. Но многие плагины написаны таким образом, что принимают данные GET или POST без проверки уровня пользователя.

В этом случае, злоумышеник может найти «дырявый» скрипт, сформировать соответствующим образом запрос и выполнить его. Если вы помните, то нечто подобное уже случилось с популярным плагином бэкапа базы данных.

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

Так, что если у вас стоит разрешение на свободную регистрацию, то вероятность взлома сайта гораздо выше.

Отключите плагины

Если у вас установлено множество плагинов, то вряд ли вы их все используете. Поскольку они могут содержать потенциальную угрозу взлома, то держать их активированными и бессмысленно, и опасно.

Если же вам какие-то плагины нужны, но используете вы их не часто, то активируйте их непосредственно перед работой.

Версии

Возможно, что вашим сайтом может заинтересоваться грамотный хакер, который воспользуется неизвестной «дырой». Однако, многие «хакеры» (в кавычках) имею слабое представление о программирование и все их действия сводятся к тому, чтобы получить «эксплоит» («сплоит»/sploit) - скрипт использующий уязвимость. Обычно это делают ради того, чтобы «насолить» владельцу блога по какой-то личной причине.

В этом случае злоумышленник действует достаточно стандартно: выясняется версия WordPress и после этого к нему ищется «сплоит».

Поскольку разработчики WordPress весьма щепетильны к безопасности, то найденные «дыры» закрываются быстро. Но здесь мы сталкиваемся с проблемой обновления владельцем сайта. По разным причинам с этим не спешат, и, соответственно, блог становится уязвим. Поэтому для того, чтобы запутать следы злоумышленнику, можно обновить только один файл: «wp-includes/version.php». В нем нужно исправить только одну переменную $wp_version: укажите последнюю версию WordPress (только помните о двух «линейках» - 2.0.* и 2.1.* - некоторые функции проверяют версию, поэтому используйте свою!).

Конечно же таким способом реально не защититься, поскольку уязвимость осталась, но злоумышленнику придется уже повозиться с определением версии WordPress. Можно указать несуществующую версию, например 2.3 или вообще убрать отображение версии, но на мой взгляд лучше пустить по ложному следу. :wink:

Чужой компьютер

Тут скорее всего рекомендация будет общего характера. Если вы работаете со своим сайтом на чужом компьютере (например на работе), то после завершения работы обязательно разлогинтесь (ссылка «Выйти»). В этом случае будут очищены куки (cookies), в которых хранятся данные доступа. Также не сохраняйте данные заполненных форм: да, это неудобно, зато безопасно.

Если вы пользуетесь нормальным браузером, а не уродом-IE, то можете автоматически очищать все секретные данные. Например в FireFox можно установить опцию «Приватность -> При закртытии FireFox всегда удалять мои личный данные» или воспользоваться кнопкой «Очистить сейчас...». После очистки вы будете уверены, что данные были удалены и ими никто не сможет воспользоваться.


twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru friendfeed.com google.com yandex.ru
Еще записи по теме
Комментариев: 30
  1. 2007-03-15 в 14:59:46 | Михаил#1
    При установке WordPress создает пользователя «admin» с паролем из 6 символов. Изменить логин уже невозможно, а вот пароль лучше всего сменить на что-нибудь более длинное.

    Пароль можно изменить через базу

  2. 2007-03-15 в 15:00:40 | Михаил#2

    Ошибся, smile логин "admin" можно изменить через базу

  3. Какой-то гад грохнул мой сайт.. Онлайн журнал.. Больше WP не доверяю.

  4. хэширование не есть шифрование

  5. Я вчера ставил вашу сборку 2.1, создал пользователя с правами админа под нужным мне именем, и из-под него удалил учетную запись admin.

  6. 2007-03-16 в 13:21:49 | Нариман#6

    Привет Макс кстати один блог в вашей сборке 2.1, показывает такую вот картинку в чем причина http://www.zhinzher.ru/wp-content/uploads/2007/03/wordpress-error-base-1.png

  7. респект за напоминание простых правил, про которые никто никогда не должен забывать. разрабам ВП тоже smile

  8. То бишь предлагаете отрубить возможность региться вообще?

  9. 2007-03-16 в 18:20:12 | Максим#9

    2 Нариман:

    Здесь неверно указаны параметры досутупа к базе данных. Проверьте wp-config.php

    2Олег:

    Какой смысл в регистрациях?

  10. Х.з. Они есть...

  11. Максим, поставь письма в 1251 кодировке - в бате проблемы

  12. 2007-03-16 в 20:21:02 | Максим#12

    А что бат не понимает UTF-8?

  13. 2007-03-16 в 20:37:32 | mindochin#13
    Максим, поставь письма в 1251 кодировке - в бате проблемы

    Аналогично но в гмыле. Заголовки еще читаются (utf8), а само тело письма уже нет (cp1251)

  14. Subject: =?UTF-8?бла-бла-бла:

    MIME-Version: 1.0

    Content-Type: text/plain; charset="windows-1251"

    Как такое может в любом клиенте показываться верно???

  15. А так то бат бы не против с правильными заголовками письмо прочесть. Это он умеет

  16. 2007-03-16 в 21:54:38 | Максим#16

    Не знаю... У меня верно письма приходят:

    Subject: =?UTF-8?
    Content-Type: text/plain; charset="UTF-8"

    Проблем вообще нет. Может на tyt.by стоит принудительная конвертация в win-1251?

  17. 2007-03-16 в 22:00:04 | mindochin#17

    не знаю как, но приходит вот что:

    Subject: =?UTF-8?B?W01heFNpdGVdINCd0...

    From: "[MaxSite] РомменСР°СРёР№":

    MIME-Version: 1.0

    Content-Type: text/plain; charset="windows-1251"

    где-то рядом скрвается диверсант smile

  18. 2007-03-16 в 22:36:27 | Максим#18

    Не знаю, я пас: везде заголовки отправляются с UTF-8.

  19. 2007-03-16 в 22:46:18 | mindochin#19

    Видимо какой-то промежуточный сервак хозяйничает

    Кстати, плагин комментов поправить бы (или где-там это?), чтоб резал слишком длинные строчки smile

  20. Макс, опубликуй твою версию заголовка письма в месте с Content-Type: text/plain; charset="???"

  21. 2mindochin

    Не совсем в плагине:

    \wp-includes\languages\ru_RU\wp_mail_cyr.php

    после этой строчки:

    $message = wp_mail_cyr_convert($blogcharset, $mailcharset, $message);

    можно изгаляться над $message.

  22. 2007-03-17 в 11:56:14 | Максим#22

    Выше опубликовал. Отправка осуществляется стандартно, так, что это проблемы уже принимающей стороны.

    languages\ru_RU - это не из моей сборки. Кстати это извращение так вставлять функции в WordPress...

  23. 2007-03-17 в 12:41:52 | mindochin#23

    попробуем с другим ящиком.

    2Олег

    то есть вывод в сообщений браузер осуществляется после отправки этих сообщений юзерам?

  24. Похоже, что сервера действительно меняют поле charset="UTF-8" на 1251. Вопрос зачем???

    это извращение так вставлять функции в WordPress

    Согласен

    то есть вывод в сообщений браузер осуществляется после отправки этих сообщений юзерам?

    Это надо глубже копать...

    "- Копай!!!" (С)Comedy Club, В. Галыгин

  25. 2007-03-17 в 15:00:36 | mindochin#25

    как все запутано... ВП хорош, но его многоэтажные надстройки это ужс...

  26. Максим, «Мы ребята не зазнайки» не подходит к maxsite.org, какие у тебя еще любимые песни? ;)

    Я бы еще добавила: к каждому сайту свой пароль — муторно, но надежно smile

  27. 2007-03-20 в 00:58:39 | Максим#27

    Сия фраза принадлежит Бутусову, во всяком случае он её пел smile. А вообще можно хоть «Ласковый май» взять mad

  28. опа, как все заааапущено... Дыр конечно в ВП еще хватает. Сенкс за толковое разъяснение, принт и на стену повешу.

  29. Здрасьте мне интересно есть ли обще принятый user_level сталкнулся в настройках к плагину ImageBrowser ....

    $ib_settings['delete_user_level'] = 5;
    $ib_settings['upload_user_level'] = 5;
    $ib_settings['dir_user_level'] = 5;
    $ib_settings['thumbnail_user_level'] = 5;
    $ib_settings['use_iib_user_level'] = 5;

    Получаетца 5 - админ

    Это Обшепринятые обозначения????

  30. А вот сертификаты https (как на сапе) не защищают Блог от взлома? Хочу сделать многопользовательский Блог, думаю о безопасности... Что нибудь можете посоветовать? Благодарю!

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена

Имя и сайт используются только при регистрации

Зарегистрируйтесь, чтобы получать уведомления о новых комментариях по email.

Авторизация Войти через loginza

(обязательно)