- Взломан
- Заражен
- Пробит
- Как защитить?
Поможем
Мы собрали максимально полный план работы для восстановления WordPress
Первое после взлома
Руководство по первостепенным действиям после взлома сайта на WordPress
1. Остановка и блокировка сайта (остановить рекламу, если есть)
2. Скачивание полного файлового архива
3. Проверка файловой сборки сайта антивирусом (при этом
анализировать нужно всю папку хостинга, а не только публичную часть)
4. Замена всех доступов - хостинг, база данных, FTP, админка сайта
5. Смена Authentication Unique Keys and Salts в файле wp-config.php
Смена Authentication Unique Keys and
Salts
перейти по ссылке api.wordpress.org/secret-key/1.1/salt/ и скопировать содержимое
В файле wp-config.php изменить указанные строки
6. Удалить лишние и неиспользуемые плагины и темы дизайна
7. Обновление WordPress, плагинов и тем
8. Установка системы защиты (сканнер и файрвол)
9. Выполнить мероприятия по обеспечению безопасности
10. Проверить CRON задания на сервере
11. Восстановить работу сайта
12. Создать чистую резервную копию сайта
Плановые работы по обеспечению безопасности
Мероприятия по обеспечению безопасности WordPress
1. Поддержание актуальной версии WordPress, плагинов и тем
2. Использование нестандартных учетных данных для входа
Используйте хороший логин
Используйте сложный и уникальный пароль
3. Включение двух этапной аутентификации
Одни из самых популярных плагинов двухфакторной верификации WordPress
Google Authenticator https://ru.wordpress.org/plugins/google-authenticator/
Two-Factor Authentication
https://ru.wordpress.org/plugins/two-factor-authentication/
Google Authenticator
https://ru.wordpress.org/plugins/google-authenticator/
Two-Factor Authentication
https://ru.wordpress.org/plugins/two-factor-authentication/
4. Сканирование WordPress на наличие вредоносных программ
https://ru.wordpress.org/plugins/wordfence/
https://ru.wordpress.org/plugins/bulletproof-security/
https://ru.wordpress.org/plugins/sucuri-scanner/
5. Необходимо убедиться в качестве хостинга.
Если это виртуальный хостинг, удостоверьтесь, что ваша учетная запись изолирована от других пользователей.
На хостинге присутствует функция автоматического бэкапа (резервного копирования). Сервер имеет сторонний фаервол и инструмент для сканирования.
Если это виртуальный хостинг, удостоверьтесь, что ваша учетная запись изолирована от других пользователей.
На хостинге присутствует функция автоматического бэкапа (резервного копирования). Сервер имеет сторонний фаервол и инструмент для сканирования.
6. Установить плагины для резервного копирования (любой из списка)
https://wordpress.org/plugins/vaultpress/
https://wordpress.org/plugins/backup/
https://wordpress.org/plugins/backupwordpress/
https://wordpress.org/plugins/all-in-one-wp-migration/
https://wordpress.org/plugins/updraftplus/
https://wordpress.org/plugins/duplicator/
7. Удаление неиспользуемых шаблонов и плагинов
8. Изменение стандартных префиксов базы данных WordPress
8.1. Найдите ваш файл wp-config.php используя FTP клиент или Файловый
менеджер и внесите изменения в
строку со значением $table_prefix.
8.2. Переименуйте все таблицы Базы Данных через phpMyAdmin (пример запроса)
RENAME table
wp_commentmeta
TO
wp_1secure1_commentmeta
;RENAME table
wp_comments
TO wp_1secure1_comments
;RENAME table
wp_links
TO wp_1secure1_links
;RENAME table
wp_options
TO wp_1secure1_options
;RENAME table
wp_postmeta
TO wp_1secure1_postmeta
;RENAME table
wp_posts
TO wp_1secure1_posts
;RENAME table
wp_terms
TO wp_1secure1_terms
;RENAME table
wp_termmeta
TO wp_1secure1_termmeta
;RENAME table
wp_term_relationships
TO
wp_1secure1_term_relationships
;RENAME table
wp_term_taxonomy
TO
wp_1secure1_term_taxonomy
;RENAME table
wp_usermeta
TO wp_1secure1_usermeta
;RENAME table
wp_users
TO wp_1secure1_users
;9. Подключить SSL-сертификат (защищенное соединение).
Прежде всего вам необходимо будет приобрести SSL-сертификат и установить его для вашего доменного имени. После этого нужно установить обязательное использование SSL-протокола при входе в панель управления вашим сайтом.
Прежде всего вам необходимо будет приобрести SSL-сертификат и установить его для вашего доменного имени. После этого нужно установить обязательное использование SSL-протокола при входе в панель управления вашим сайтом.
10. Ограничьте количество неудачных попыток авторизации (любой из
плагинов)
http://www.bad-neighborhood.com/login-lockdown.html
http://devel.kostdoktorn.se/limit-login-attempts/
11. Обеспечить необходимый уровень скрытности
удалить файлы readme.html и license.txt в корневой папке сайта
отключить отправку отчетов об ошибках PHPзакрыть список файлов и папок,
скрыть версию WordPress,
скрыть сообщение о неверно введенном пароле и логине,
запретить индексацию поисковиком файлов WordPress
удалить файлы readme.html и license.txt в корневой папке сайта
отключить отправку отчетов об ошибках PHP
Отключение отправки отчетов об ошибках PHP
Добавить в файл wp-config.php такой код:
error_reporting(0);
@ini_set(‘display_errors’, 0);
скрыть версию WordPress,
скрыть сообщение о неверно введенном пароле и логине,
запретить индексацию поисковиком файлов WordPress
12. Обеспечить безопасность файловой сборки
установить необходимые права файлов и папок
отключить выполнение PHP в определенных папках
защитить файл wp-config.php
защитить файла .htaccess
запретить доступ к файлу xmlrpc.php
переместите файл wp-config.php
Также начиная с версии 2.6, WordPress позволяет перемещать файл wp-config.php на высший уровень. По причине того, что этот файл содержит в себе намного более важную информацию, чем какой либо другой, и потому что всегда намного сложнее получить доступ к корневой папке сервера. Имеет смысл хранить его не в той же директории, где и остальные файлы. WordPress автоматически обратится к высшей папке в поиске файла wp-config.php.
установить необходимые права файлов и папок
755 или 750 для всех папок
644 или 640 для файлов
600 для wp-config.php
Добавить ограничение на изменение файлов и установку
тем и плагинов
Добавив такой код в wp-config.php файл, вы так же сможете укрепить защиту вашего веб-сайта:
define( ‘DISALLOW_FILE_EDIT’, true );
define( ‘DISALLOW_FILE_MODS’, true );
защитить файл wp-config.php
защитить файла .htaccess
запретить доступ к файлу xmlrpc.php
переместите файл wp-config.php
Также начиная с версии 2.6, WordPress позволяет перемещать файл wp-config.php на высший уровень. По причине того, что этот файл содержит в себе намного более важную информацию, чем какой либо другой, и потому что всегда намного сложнее получить доступ к корневой папке сервера. Имеет смысл хранить его не в той же директории, где и остальные файлы. WordPress автоматически обратится к высшей папке в поиске файла wp-config.php.
13. Обеспечить блокировку опасных запросов
запрет доступа к административной части WordPress
запрет отслеживания HTTP заголовков
запрет запросов, содержащих кодировку Base64
запрет запросов, содержащих кодировку <script>
запрет запросов, пытающихся установить глобальные переменные или изменить переменную
запрет запросов, содержащих SQL-инъекции.
запрет доступа к административной части WordPress
запрет отслеживания HTTP заголовков
запрет запросов, содержащих кодировку Base64
запрет запросов, содержащих кодировку <script>
запрет запросов, пытающихся установить глобальные переменные или изменить переменную
запрет запросов, содержащих SQL-инъекции.
Добавить в файл .htaccess такой код:
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteRule ^(.*)$ index.php [F,L]
Запрет запросов от распространенных хакерских утилит
небольшой файрвол для сайта.
небольшой файрвол для сайта.
Добавьте код файрвола в файл .htaccess в корневом каталоге сайта:
<ifmodule mod_rewrite.c>
RewriteEngine On
#Блокировка XSS
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
#Блокируем выставление переменной PHP GLOBALS через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
#Блокируем возможность изменять переменную _REQUEST через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
#Блокировка MySQL инъекций, RFI, base64, и др.
RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(..//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING}
=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} (../|..) [OR]
RewriteCond %{QUERY_STRING} ftp: [NC,OR]
RewriteCond %{QUERY_STRING} http: [NC,OR]
RewriteCond %{QUERY_STRING} https: [NC,OR]
RewriteCond %{QUERY_STRING} =|w| [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C).*iframe.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.(.) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*([^)]*) [NC,OR]
RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>).* [NC,OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (./|../|.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127.0.0.1) [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^(]*( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING}
(;|<|>|'|"|)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode)
[NC,OR]
RewriteCond %{QUERY_STRING} (\|...|../|~|`|<|>||) [NC,OR]
RewriteCond %{QUERY_STRING} (boot.ini|etc/passwd|self/environ) [NC,OR]
RewriteCond %{QUERY_STRING} (thumbs?(_editor|open)?|tim(thumb)?).php [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteCond %{QUERY_STRING} (eval() [NC,OR]
RewriteCond %{QUERY_STRING} ([a-z0-9]{2000,}) [NC,OR]
RewriteRule ^(.*)$ - [F,L]
#Блокировка известных Shell
RewriteEngine on
RewriteCond %{REQUEST_URI}
.*((php|my)?shell|remview.*|phpremoteview.*|sshphp.*|pcom|nstview.*|c99|r57|webadmin.*|phpget.*|phpwriter.*|fileditor.*|locus7.*|storm7.*).(p?s?x?htm?l?|txt|aspx?|cfml?|cgi|pl|php[3-9]{0,1}|jsp?|sql|xml)
[NC,OR]
RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
RewriteCond %{QUERY_STRING}
^(.*)=(/|%2F)(h|%68|%48)(o|%6F|%4F)(m|%6D|%4D)(e|%65|%45)(.+)?(/|%2F)(.*)(/|%2F)(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^work_dir=.*$ [OR]
RewriteCond %{QUERY_STRING} ^command=.*&output.*$ [OR]
RewriteCond %{QUERY_STRING} ^nts_[a-z0-9_]{0,10}=.*$ [OR]
RewriteCond %{QUERY_STRING} ^c=(t|setup|codes)$ [OR]
RewriteCond %{QUERY_STRING}
^act=((about|cmd|selfremove|chbd|trojan|backc|massbrowsersploit|exploits|grablogins|upload.*)|((chmod|f)&f=.*))$
[OR]
RewriteCond %{QUERY_STRING}
^act=(ls|search|fsbuff|encoder|tools|processes|ftpquickbrute|security|sql|eval|update|feedback|cmd|gofile|mkfile)&d=.*$
[OR]
RewriteCond %{QUERY_STRING}
^&?c=(l?v?i?&d=|v&fnot=|setup&ref=|l&r=|d&d=|tree&d|t&d=|e&d=|i&d=|codes|md5crack).*$
[OR]
RewriteCond %{QUERY_STRING}
^(.*)([-_a-z]{1,15})=(chmod|chdir|mkdir|rmdir|clear|whoami|uname|unzip|gzip|gunzip|grep|more|umask|telnet|ssh|ftp|head|tail|which|mkmode|touch|logname|edit_file|search_text|find_text|php_eval|download_file|ftp_file_down|ftp_file_up|ftp_brute|mail_file|mysql|mysql_dump|db_query)([^a-zA-Z0-9].+)*$[OR]
RewriteCond %{QUERY_STRING}
^(.*)(wget|shell_exec|passthru|system|exec|popen|proc_open)(.*)$
RewriteRule .* - [F]
</ifmodule>
Поддержка WordPress
Поддержка надлежащего уровня безопасности сайта WordPress
1. Регулярное создание резервных копий сайта
Мы рекомендуем делать резервную копию сайта (файлы) каждую неделю
MSQL базу данных - раз в сутки
Рациональным будет хранение
4 еженедельные резервные копии за последний месяц
3 ежемесячных резервных копий за последний квартал
2 последние ежеквартальные резервные копии
по одной ежегодной копии за последние 5 лет
2. Сохранять резервные копии сайта как минимум на 3х разных
носителях (компьютер, облако, флешка)
3. Регулярно обновлять WordPress, плагины и темы дизайна (проверку
обновлений выполнять каждую неделю)
4. Регулярно изменять доступы к сайту (хостинг, база данных, FTP,
админка сайта) - как минимум раз в полгода
5. Предоставлять сторонним разработчиком индивидуальные доступы и
удалять их по завершению работ таких разработчиков
6. Регулярно проверяйте свой локальный компьютер на наличие вирусов
7. Не храните ненужные файлы тем и плагинов
8. Скачивайте темы и плагины с надежных ресурсов