Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

В последнее время поступает много заказов на удаление вирусов с сайтов на CMS WordPress.

Я решил объединить здесь большинство методов защиты для этого движка. (по материалам habrahabr.ru и др)

1. Защита от XSS инъекций

Этот код блокирует использование XSS-инъекций и попытки модифицировать переменные GLOBALS и _REQUEST. Вставьте код в ваш файл .htaccess, расположенный в корне сайта. (И не забывайте бэкапить этот файл перед внесением любых изменений).

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] 
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Код позволяет проверять все запросы. Если запрос содержит тег или попытку модифицировать значение переменных GLOBALS и _REQUEST, он просто блокирует его и выдаёт пользователю 403-ю ошибку.

2. .htaccess для защиты файла wp-config

wp-config.php содержит все данные, необходимые для подключения к серверу MySQL и базе данных. Защита этого файла – одна из самых главных задач.

Находим файл .htaccess в корне нашего сайта и добавляем следующие строки:

<files wp-config.php>  order allow,deny deny from all  </files>

Просто запрещаем доступ к этому файлу кому бы то ни было. Теперь уж точно ни один бот не сможет и близко подойти к этому файлу.

3. Скрываем версию Wordpress'a

Открываем functions.php, лежащий в папке с активной темой нашего блога (wp-content/themes/название-вашей-темы/) и добавляем туда этот код

remove_action('wp_head', 'wp_generator');

Хуки Wordpress'a позволяют легко заменять одну функцию на другую. Именно этим мы сейчас и воспользовались – мы просто запретили вывод информации о версии нашего движка.

+ необходимо также удалить файл readme.html, находящийся в корне сайта. В нём тоже содержится информация о текущей версии Wordpress'a.

4. Плагин для защиты от зловредных url-запросов

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

Что делаем?
Создаём новый файл под названием blockbadqueries.php и помещаем его в папку wp-content/plugins. Затем просто активируйте его в админке как любой другой плагин.

<?php 
/* Plugin Name: Block Bad Queries Plugin URI: perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests Author URI: perishablepress.com/
Author: Perishable Press Version: 1.0 */
global $user_ID; if($user_ID) {
if(!current_user_can('level_10')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
} }
?>

Работа этого плагина проста – он проверяет все длинные запросы (более 255 символов) и наличие php-функций eval или base64 в URI. Если что-то из этого находится, браузеру пользователя отдаётся страница с ошибкой 414.

5. Защита директорий на сервере от просмотра

Очень многие хостеры позволяют просматривать директории на своих серверах. Поэтому, если ввести в адресную строку www.вашблог.ru/wp-includes, то очень часто можно увидеть всё содержимое этой директории. Безусловно это небезопасно, поэтому лучше это сразу запретить.

Вы можете либо добавить пустые файлы index.html в папки, просмотр которых хотели бы запретить. Либо дополнить наш .htaccess ещё одной строкой:

Options All -Indexes

Пустой index.html будет выдаваться каждый раз, когда последует запрос к директории. Ну а директива в .htaccess просто запрещает апачу выдавать список содержимого директории.

6. Запретить доступ к wp-content.

В папке wp-content хранятся Ваши темы, плагины, картинки и многое другое. Поэтому, будет не лишним обезопасить её от злоумышленников.

Вам снова потребуется создать новый файл htaccess, вписать в него код и закинуть в wp-content:

<Files ~ ".(xml|css|jpe?g|png|gif|js)"> 
Allow from all
</Files>

Таким образом, пользователи смогут просматривать изображения и CSS файлы, но доступ к PHP будет им закрыт.

7. Защита от спама.

При помощи htaccess файла, можно сделать блокировку от спама. Совместно с плагинами, это будет дополнительная защита сайта:

# protect from spam comments 
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*Ваш домен.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
8. запрет на выполнение скриптов и внешний доступ к папке uploads

Разрешите только загрузку картинок. Создайте в папке uploads свой файл .htaccess и поместите в него следующие строки:

<FilesMatch "\.(gif|jpg|png)$"> 
Allow from all
</FilesMatch>
Deny from all
9. Дополнительная защита каталога wp-admin.

Закройте доступ к папке wp-admin паролем через htaccess. Это позволит обезопасить сайт от брутфорса. Для этого в папке wp-admin создайте пару файлов .htaccess и .htpasswd.

Для генерации htpasswd можно использовать онлайн-сервисы, к примеру этот.

10. Запрет "рыскать" по серверу через Ваш сайт.

Если в папке с темой вашого блога есть файл search.php с вот таким кодом:

<!--?php echo $_SERVER ['PHP_SELF']; ?-->

Обязательно замените его на

<!--?php bloginfo ('home'); ?-->

 

11. Самое очевидное.

Естественно я не останавливаюсь на очевидных мерах безопасности:

  • Не используйте бесплатные темы, если Вы не обладаете хотя бы минимальными навыками в языках программирования. Поймите простую вещь — если тема бесплатная и ее исходный код открыт, значит ее можно напичкать любым вредоносным кодом.
  • Если навыки у Вас есть, перед заливкой темы на сервер, обязательно вручную проверьте все файлы темы на предмет вкрапления неизвестного кода, в особенности шифрованного (base64 и т.д.).
  • Никогда не устанавливайте плагины с неизвестных сайтов, форумов или блогов. Никто не знает, что скрывается за красивой страницей с описанием. Если Вы берете плагин с сайта разработчика, то во-первых, убедитесь в том, что этот разработчик действительно профессионал, во-вторых — убедитесь, что это его официальный сайт.
  • Устанавливайте плагины разумно — во-первых, учитывайте, что плагины, даже взятые из официального репозитория WordPress не являются безопасными, поскольку команда разработки WP не проводит аудит сторонних плагинов, и во-вторых — чем меньше плагинов, тем меньше памяти потребляет WP и, следовательно, тем быстрее загружается сайт.
  • Постоянно делайте резервные копии сайта.
  • Используйте сложные пароли. Для генерации паролей, можно использовать опять же онлайн сервисы. Один из них тут
  • По возможности, лучше постоянно обновлять версию движка и плагинов и держать их в актуальном состоянии.
  • WP использует кэширование, поэтому все каталоги не закроешь, но максимально закройте на запись каталоги и файлы сайта.
  • Так же не будет лишним просканировать взломанный сайт, Plugin Vulnerabilities, он находит уязвимости плагинах WP.
  • И еще есть база уязвимостей WP: https://wpvulndb.com

Если взлом произошел, то сразу после удаления вирусов, обязательно:

1. Смените все пароли: ftp, ssh (если таковой имеется), доступ к хостинг-панели, MySQL.

2. Проверьте компьютер на вирусы, с которого подключались к сайту по ftp (ssh), заходили в админку, загружали документы или фото на сайт.

3. Сделайте бэкап сайта и скачайте его себе. В худшем случае у Вас будет "чистая" копия, на которую можно откатиться.

4. По возможности обновите движок сайта и плагины.

Услугами сканирования и удаления вирусов с сайта можно на моём сайте Anti.Situng.Net