15.04.2008 23:53Безопасность WordPress.
Многие, наверное, еще помнят старую историю с ошибкой в одном из модулей phpBB, когда боты поимели чуть ли не все форумы Интернета, крутящиеся на этом движке.
Где гарантия, что подобное не повторится с WordPress-ом. Правильно, гарантии нет. В связи с чем, в этой заметке, я хочу дать несколько советов, которые помогут снизить риски использования WordPress и защитить ваш блог.
И так, начнем:
1. Поменяйте преффикс для таблиц в базе данных WordPress.
По умолчанию префикс WordPress таблиц – ‘wp_’, тоесть все таблицы в базе Вашего блога начинаются с этих символов. Для чего нужно его менять? Дело в том, что большинство ботов, использующих SQL-Injections уязвимости используют стандартные имена таблиц, изменив их префикс, мы немного снизим риски от SQL-Injection ориентированных атак.
Поменять префикс можно, как до установки WordPress так и после нее.
Если WordPress еще не установлен, то Вам нужно всего навсего отредактировать файл wp_config.php. Найдите в нем следующую строку:
$table_prefix = ‘wp_’;
И поменяйте ее, например, на что-нибудь типа этого:
$table_prefix = ‘mydb123_’;
Если, WordPress уже установлен, и блог уже живет своей жизнью, то помимо этого потребуется еще пара действий.
Во-первых, нужно вручную переименовать все существующие в базе WordPress-а таблицы, сделать это можно, выполнив несколько несложных SQL запросов:
RENAME TABLE wp_posts TO mydb123_posts;
И так для каждой таблицы. Всего их десять:
wp_categories, wp_comments, wp_link2cat, wp_links, wp_options, wp_post2cat, wp_postmeta, wp_posts, wp_usermeta, wp_users.
Но и это еще не все, далее нужно поменять несколько записей в таблице wp_options (mydb123_options):
UPDATE mydb123_options SET option_name=’mydb123_user_roles’ WHERE option_name=’wp_user_roles’ LIMIT 1;
UPDATE mydb123_options SET option_name=’mydb123_autosave_draft_ids’ WHERE option_name=’wp_autosave_draft_ids’ LIMIT 1;
UPDATE mydb123_options SET option_name=’mydb123_user_level’ WHERE option_name=’wp_user_level’ LIMIT 1;
Всё это можно автоматизировать установил плаггин WP Prefix Table Changer. Перед установкой не забудьте о резервных копиях Ваших баз.
2. Переименуйте встроенную учетную запись администратора.
По умолчанию учетная запись администратора в WordPress имеет логин admin. Поменяв его, вы защитите себя от bruteforce атаки на учетную запись администратора.
Поменять можно следующим образом:
UPDATE db123_users SET user_login=’admin’, user_login=’toor’;
Новая учетная запись будет иметь логин toor.
3. Управляйте ролями.
Создавайте пользователей с ограниченными, только реально нужными, привилегиями. Сделать это позволяет плаггин для управления ролями – Role Manager.
4. Ограничте доступ к директориям wp-content и wp-includes.
Запретите доступ к любым файлам, кроме изображений, файлов JavaScript и CSS. Для этого в данных директориях создайте файл .htaccess со следующим содержимым:
Order Allow,Deny
Deny from all
<Files ~ «.(css|jpe?g|png|gif|js)$»>
Allow from all
</Files>
5. Ограничьте доступ к директории wp-admin.
В директории wp-admin, находятся скрипты для управления Вашим блогом, обязательно ограничьте эту директории от посторонних.
А. Разрешите доступ только для Вашего IP-адреса.
Если у Вас есть реальный статический IP-адрес, то доступ к директории wp-admin, можно настроить только для него. Для этого, создайте в данной директории файл .htaccess со следующим содержимым:
Order deny,allow
Allow from xx.yy.zz.ww #Ваш реальный IP-адрес
Deny from all
Б. Задайте пароль для доступа к директории wp-admin.
В директории wp-admin создайте файл .htaccess со следующим содержимым:
AuthUserFile /path/to/file/.htpasswd
AuthType Basic
AuthName “SecureBlog”
В безопасном месте создайте файл .htpasswd. Для этого, будучи в нужной директории, выполните команду:
htpasswd -cm .htpasswd BlogAdmin
И введите пароль.
Теперь доступ к директорию сможет только пользователь BlogAdmin обладающий паролем.
6. Защитите свой блог от спама.
Существует много способов защиты блога от нежелательных комментариев и trackbacks. В целях достижения оптимального результата, рекомендуется использовать их в сочетании:
-
CAPTCHA – тест Тьюринга, который, в теории должен уметь отличить машину от человека, но теория, к сожалению далека от практики.
-
Аутентификация – комментарии в блог может оставлять только зарегистрированный пользователь.
-
Черные листы.
7. Используйте шифрование.
Если Ваш хостер предоставляет SSL, используйте протокол HTTPS для входа в WordPress. Плаггин, реализующий данный функционал здесь.
8. Отключите сообщения об ошибках.
В сообщениях об ошибках порой содержится очень много полезной для злоумышленника информации. Плаггин забираем отсюда.
9. Удалите информацию о версии своего WordPress.
Ну, вот, пожалуй и всё. Ах да, не забывайте своевременно обновлять ПО и делать резервные копии.
Надеюсь, эти советы кому-нибудь окажутся полезными. За инфомацию спасибо блогу BlogSecurity.net.
Популярность: 64%
Похожие записи:
Комментарии 7 | Теги: WordPress, Безопасность, Блоги
17 Апр 2008 - 14:06
А зачем переименовывать таблицы в БД ? Префикс лежит на диске в wp-config, а если кто-то пролезет к серверу БД, то имена таблиц он уж всяко получит.
Капча – отличный способ избавиться от комментариев =)
17 Апр 2008 - 14:20
Переименование таблиц в БД конечно не поможет если есть доступ к исходникам установленного блога. Но может предотвратить возможные атаки путём SQL injection.
17 Апр 2008 - 15:31
Это все верно, если блог один-единственный.
А если их десятки – лениво.
На всякий случай надо ежедневно бэкапить БД, и регулярно бэкапить все файлы сайта, и при случае все без особого труда можно будет починить…
19 Апр 2008 - 21:19
а еще вот тут =)
http://blogproseo.ru/kak-obezopasit-blog-rabotayushhij-na-wordpresse-ot-vzloma/
24 Июн 2009 - 15:57
Ну если блог не такой популярный, то можно просто бекапом обойтись.
У меня за год работы только одна ерунда случилась со взломом и все…
Вместо сайта тупо была только одна надпись – by Th3h4ck3r 0wnz y0ur b0x Fuck israel N0000 warrrrr
30 Июн 2009 - 4:32
2 вопроса – как можно ограничить доступ к wp-admin (т.е. совет 5) ? и ssl это в первую очередь от снифферов если я правильно понял ?