- Зламаний
- Заражений
- Пробитий
- Як захистити?
Допоможемо
Ми зібрали максимально повний план роботи для відновлення 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 при вході в панель управління вашим сайтом.
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. Завантажуйте теми та плагіни з надійних ресурсів