пройти авторизацию: 

Комплексная защита блога WordPress
UPD
253 11

Комплексная защита блога WordPress

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

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

Во-первых

Часто взломщики (особенно студенты и школьники, насмотревшиеся фильмов типа «Хакер») для взлома блога на WordPress используют данные о его версии. Версию блога можно узнать разными способами.

Например, с помощью файлов readme.html и license.txt расположенных в корне сайта.
Убедитесь сами:
SeoBlondinka.ru,
Krutikoff.com.ua,
TiamatInc.ru,
Online-delo.ru,
Trakhtenberg.info,
Dimoning.ru
и т.д.
Не буду выдавать все. Самое удивительное, что многие из этих вебмастеров уже не первый год в Интернете, но допускают такие серьезные ошибки. Ребята! Давайте устраняйте ваши уязвимости!

Для этого вам надо просто удалить файлы readme.html и license.txt через FTP в корневике блога. Скорее всего это будет папка имя_сайта/public_html/

Для проверки своего блога на наличие подобного рода уязвимостей введите в адресную строку браузера адрес: //имя_сайта/readme.html

Кроме того, сам WorPress пишет свою версию прямо в код страницы. В заголовке HEAD.
Чтобы убрать ее оттуда, пропишите в функции темы functions.php строку

<?php remove_action (’wp_head’, ‘wp_generator’); ?>

Во-вторых

Служебные папки движка тоже могут представлять некоторую опасность. Злоумышленник может посмотреть какие (например) плагины вы используете и подобрать "ключик" к вашему блогу.

Например: Spryt.ru, Online-delo.ru и т.д.

Устранить тоже легко. Поместите пустой файл index.php или index.html в папки имя_сайта/wp-admin/, имя_сайта/wp-content/, имя_сайта/wp-includes/. Или сделайте как я. Поместите такой вот интересный файл. Прикольно, да? Качайте и пользуйтесь.

Также рекомендую дописать в ваш файл .htaccess, который тоже лежит в корне сайта строки

Options All -Indexes
RewriteEngine On

Это защитит другие ваши папки от просмотра чужими людьми.

Для проверки своего (или чужого) блога на такую уязвимость введите в адресную строку браузера адрес: //имя_сайта/wp-admin/, //имя_сайта/wp-content/, //имя_сайта/wp-includes/ и т.д.

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

Опубликовано:
Обсуждение

Чтобы оставить своё мнение, необходимо

пройти авторизацию: 

Комментарии и Отзывы: 11

RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a  tag in URL
RewriteCond %{QUERY_STRING} (\|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable
via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable
via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with
403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]

Сделал это — и снова сайт завис. 🙂
Смешно. 🙂

0

Да это еще и не все. К примеру, вывалят данные о версии — фид блога, сайтмет от Гугла и Дагона, заодно проставятся подключаемые модули Ява. Да еще мало ли мест откуда он засветится.

0

Спасибо! Как раз актуально.
Правда. Рубим типичные эксплойты, как сделано в Джумле в .htaccess. Это меня тоже повалило. Пришлось откатить.

0
GPS

Устранить тоже легко. Поместите пустой файл index.php или index.html в папки

1. htaccess

Options All -Indexes

, как говорилось Вами ниже, достаточно.

RewriteEngine On

к листингу директорий отношения не имеет.

2. Хорошей практикой является переименование административной папки или прикрытие ее паролем — меньше соблазнов возникает.

3. Рубим типичные эксплойты, как сделано в джумле. В .htaccess

RewriteEngine on
# Block out any script trying to base64_encode crap to send
via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable
via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable
via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with
403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]

4. Запрещаем прямой доступ к папкам, содержащим библиотеки движка и другие файлы, которые не запрашиваются браузерами напрямую(методами GET/POST). Тот же .htaccess в папке root/include:

<Files *.php>
Order Deny,Allow
Deny from all
</Files>

В корневой папке (если есть локальный php.ini):

<Files php.ini> #

или вообще все — *.ini

Order Deny,Allow
Deny from all
</Files>

Список запрещенных масок расширяем по необходимости.

5. В php отключаем вывод ошибок. Демонстрация «споткнувшегося» sql запроса может быть настоящим подарком хакеру — если движок нетипичный или доработанный:
в локальном php.ini

display_errors = Off

При этом, логом ошибок не брезгуем. Мало ли…

error_log = /path_to_your_home/php_errors.log

6. Из разряда «авось пригодится»Апач позволяет ограничивать допустимые методы протокола http. Например, отключаем метод CONNECT в .htaccess

<Limit CONNECT>
Order Deny,Allow
Deny from all
</Limit>
0

По всей видимости, Вы смотрите не туда. Версия WP удаляется из HTML кода страницы. В панели администратора версия останется видна.

Если же Вы сделали все правильно, но именно в коде страницы версия WordPress осталась, то скорее всего у вас включено кэширование страниц. В таком случае дождитесь обновления кэша или очистите его самостоятельно.

0
dd

GPS грамотный комментарий написал, а вам Kursak надо поднабраться опыта, не может сайт повиснуть из-за Options All -Indexes

0
Дима

Если залить в wp-admin пустой index.html, то как тогда в админку попасть? Какое есть решение?

0

Чтобы оставить своё мнение, необходимо

пройти авторизацию: