Привіт. Не дуже приємна але дуже важлива тема сьогодні буде розглянута. Нещодавно ми вже наводили невеличку статистику від авторів плагіну Wordfence, згдіно якої кожну секунду атакують близько 100 сайтів, і це лише статистика серед тих сайтів, що надсилають анонімні статистичні дані для аналізу авторам вказаного плагіну.
Ще одна цікава статистика, про яку ми писали близько місяця тому – у приблизно 55% випадків сайти зламують через дірки у безпеці плагінів, які використовуються на цих сайтах, і ще у приблизно 15% випадків – шляхом підбору паролів адміністратора. Таким чином, складний пароль і використання мінімальної кількості перевірених плагінів – це вже 70% успіху у боротьбі із зловмисниками.
Але поки залишимо сухі цифри в стороні, і перейдемо до практики. Я по кроках викладу Вам перевірений на практиці метод очищення сайтів на WordPress, якщо вже так сталося, і його було зламано.
Зауважте:
- Найпростіший спосіб відновлення сайту – відновлення з резервної копії. У такому випадку Ви з найбільшою вірогідністю не пропустите нічого, відновите роботу сайту за мінімальний час і з використанням мінімальних зусиль. Отже робіть резервну копію регулярно і зберігайте десь у безпечному місці мінімум 3 копії – після створення сайту (або будь-яка найстаріша 100% робоча копія), копія тижневої давності і копія “на вчора”. Ось приклад, як робити копії, якщо на хостингу використовується панель ISPmanager. Після великих/важливих змін на сайті робіть разову копію і “кладіть” поруч з Вашою “найстарішою”, це дозволить у випадку чого не повертатись до самого початку.
- Описаний далі спосіб спрацьовує у більшості випадків, з якими мені довелось зустрітись, але не є панацеєю від будь-яких типів “вірусів/атак”.
1. Бекап / резервна копія.
Перше правило – завжди роби бекап.
Навіть перед початком очищення зараженого сайту потрібно зробити бекап його поточного стану. Чому? По-перше, як в анекдоті, дивись перше правило . По-друге, під час роботи із ураженим сайтом можна помилково видалити потрібну інформацію, якої немає у більш старих Ваших резервних копіях (якщо ці копії у Вас взагалі є).
Багато хто вважає, що будь-який хостинг-провайдер робить бекапи їх сайтів, отже немає сенсу морочити собі голову цим. Вони праві, але десь на відсотків 30% . Не завжди є інформація, які саме копії робить провайдер, копії чого і скільки копій зберігається. Наприклад, провайдер може робити копії Ваших сайтів, але за виключенням файлів, що за розміром більші 5мб. Це досить нормальна практика, адже більшість “скриптів”/”корисних файлів” не перевищує цю межу, а різні “відео”, архіви та інші медіа-дані, які займають багато місця – не будуть заважати провайдеру, з’їдаючи ресурси серверу резервних копій. Провайдер може зберігати дані, наприклад, за останні 2 дні. Цього цілком достатньо аби відновити роботу сайтів клієнтів у випадку якихось проблем на стороні провайдера, але у більшості випадків Ви помітите, що сайт зламано десь за тиждень, а інколи люди місяцями про це не здогадуються (це 100% правда з особистого досвіду роботи з сайтами клієнтів). Отже, коли Ви помітите проблеми, провайдер зможе надати Вам лише копії 2-денної давнини, але від цих копій не буде користі. Ну і останнє, є такі штуки як “форс-мажор” і “закон підлості”, оці штуки зазвичай трапляються, коли Ви сподіваєтесь на допомогу “третіх” осіб замість того, щоб нести відповідальність за свої сайти особисто. Усі цифри я навів для прикладу і розуміння важливості бекапів.
2. to Be or Not to Be
Завдячуючи архітектурі WordPress нам значно легше буде видалити “половину” вірусів у порівнянні з іншими системами керування сайтами. Отже другий крок, який нам потрібно зробити – це видалити усі “стандартні” файли та папки, що ми пізніше замінимо на їх “оригінальні/чисті” версії. Ці файли та папки у 99% випадків не повинні відрізнятись від оригіналу. Ось приклад файлів ураженого сайту (червоним відмічено для прикладу деякі “нестандартні” файли/папки, яких не повинно бути):
Коричневим я відмітив те, що ми залишимо – файл wp-config.php та директорія wp-content, це єдине, що нам потрібно, все інше видаляємо. Директорію wp-content ми залишаємо, оскільки у ній містяться усі наші зображення із статей та сторінок, усі плагіни та шаблон, що ми використовуємо. У файлі wp-config.php міститься інформація про доступ до бази даних та інша конфігурація. В принципі його теж можна б було видалити, але я підкажу пізніше, чому він знадобиться.
Звісно, якщо у Вас в кореневій директорії сайту є якісь “свої” папки чи файли, наприклад, як на скріншоті файли, що підтверджують права на домен для сторонніх сервісів, їх теж можна залишити, але в цій статті я не зможу розглянути способи, як їх перевірити/почистити:
Ось приклад вмісту одного з файлів, що було розміщено в кореневій директорії сайту:
Такий файл одразу розпізнається навіть windows-антивірусом як Backdoor: PHP/Small.M – в двох словах, цей файл надає можливість зловмиснику отримати доступ до Вашого сайту віддалено.
3. Видалення , відновлення
Важливий момент – починаючи з цього кроку не потрібно намагатись відкривати сайт, адмінку чи якось звертатись до сайту через браузер. Може таке бути, що під час спроби відкрити будь-яку сторінку віруси автоматично знову потраплять на сайт.
Перше, що ми робимо, видаляємо все, окрім файлу wp-config.php та директорії wp-content , як результат маємо такий вміст директорії з сайтом:
Друге – створюємо в корені файл .htaccess, з наступним вмістом:
Order Deny,Allow
Deny from all
Allow from 98.244.195.106
Code language: CSS (css)
Де IP адресу 98.244.195.106 потрібно замінити на Вашу, яку можна дізнатись, наприклад, відвідавши сайт http://myip.com.ua . Таким способом Ви дозволяєте доступ до Вашого сайту лише з Вашого комп’ютера.
Третє – беремо останню версію WordPress зі сторінки релізів у нас чи на офіційному сайті та завантажуємо вміст директорії wordpress, що Ви знайдете в архіві на Ваш сайт, погоджуючись із заміною файлів, що на сайті існують, на нові:
Четверте – один з найважливіших кроків, адже стосується заміни файлів плагінів, через які в більшості ламають сайти за статистикою. Суть кроку полягає у тому, що потрібно повністю видалити усі директорії з плагінами, а замість них завантажити “чисті” версії. Робити це досить нудно, але без цього увесь процес може бути марним. Один із способів наступний:
- переходимо у папку /wp-content/plugins і по черзі в кожній директорії відкриваємо головний файл плагіну. Він зазвичай має співпадати за іменем з директорією:
- у цьому файлі ми знаходимо посилання на офіційну сторінку плагіну, куди ми і йдемо. Там беремо актуальну і чисту версію, з якої потім відновимо наш плагін:
- Я, наприклад, завантажую усі архіви в якусь порожню папку, а після працюю з усіма разом. Виходить десь так:
- Плагіни, що не розміщені на офіційному сайті WordPress.org, наприклад цей, я зазвичай не завантажую. За потреби, можу надати пояснення і описати винятки у коментах.
- Отже маємо набір чистих плагінів і можемо видалити усе “лайно”, яке знаходиться на їх місці, а його там ціла купа 🙂
- Видаляємо з папки /wp-content/plugins усе, окрім файлу index.php , його ми вже замінили на чистий на одному з кроків.
- Розпаковуємо архіви з плагінами і завантажуємо на сайт у /wp-content/plugins
П’яте – ми проводимо аналогічну операцію з шаблонами. Тут менше дурної роботи, адже шаблон Ви можете використовувати лише один (максимум два у випадку з дочірньою темою, але це окрема розмова). Отже потрібно зайти в директорію з шаблонами /wp-content/themes , перейменувати папку з Вашим активним (сподіваюся, Ви знаєте, який шаблон використовуєте) , а усі інші папки/файли видалити (окрім файлу index.php , його ми вже замінили на чистий на одному з кроків). Тоді замість такого:
отримуємо чисту директорію з однією папкою, що ми перейменували (не важливо, яку нову назви папки обрано):
Тепер потрібно лише перейти на сайт, де Ви завантажували шаблон, і аналогічно плагінам скопіювати чистий шаблон у /wp-content/themes. Якщо Ви використовували безкоштовний шаблон з WordPress.org , його можна знайти за назвою папки тут https://wordpress.org/themes/ , якщо купували – завантажити там, де купували. Якщо все зовсім погано 🙂 і чистий шаблон знайти не вдається – завантажте з https://wordpress.org/themes/ будь-який , що Вам подобається, наприклад стандартний https://wordpress.org/themes/twentysixteen/. В жодному випадку не рекомендую використовувати той, що ми хвилину тому перейменували!
Шосте – потрібно перевірити/почистити директорії, що залишились, а саме /wp-content/languages та /wp-content/uploads . Зазвичай усе всередені /wp-content/languages можна видалити. У цій папці зберігається у більшості випадків лише переклад самого “WordPress”, якщо Ви використовуєте мовну версію відмінну від англійської. Аби цей переклад знову там з’явився, буде достатньо наприкінці обрати в адмінці англійську мову, зберегти налаштування, а потім обрати потрібну (наприклад, українську) і знову зберегти налаштування:
Найцікавіше можна знайти у /wp-content/uploads . За замовчуванням у цій папці можуть бути лише такі файли:
Зображення – .jpg , .jpeg , .png , .gif , .ico ,
Документи – .pdf , .doc , .docx , .ppt , .pptx , .pps , .ppsx , .odt , .xls , .xlsx , .psd
Аудіо – .mp3 , .m4a , .ogg , .wav
Відео – .mp4 , .m4v , .mov , .wmv , .avi , .mpg , .ogv , .3gp , .3g2
- На практиці, більшість з нас на сайт завантажують лише зображення , з цього виходить, що в даній директорії не повинно бути нічого окрім зазначених вище файлів (або тільки зображень).
- Також у більшості випадків усі файли/зображення знаходяться у папках з структурою рік/місяць, наприклад /wp-content/uploads/2016/01 . Тож всі інші директорії теж потрібно видалити
Нижче я навів приклад стрілками, які директорії та файли є зайвими у папці /wp-content/uploads/ . Звісно можуть бути виключення (наведено синіми стрілками), але раджу і їх видалити, в будь-якому випадку Ви зробили повну копію на початку, отже маєте ці папки/файли про всяк випадок. Тож потрібно пройтись по усім папкам/підпапкам і залишити тільки потрібні файли та директорії.
Сьоме – багато вірусів завантажують саме у папку /wp-content/uploads/. Як вже зрозуміло, там можуть бути лише картинки , документи чи тому подібне. Але в жодному разі там не має бути скриптів / файлів *.php . Аби вберегти себе від того, коли ці файли все ж там з’являться чи Ви просто пропустили при очищенні їх – створимо у папці /wp-content/uploads/ файл .htaccess з наступним вмістом:
<Files *.php>
deny from all
</Files>
Code language: HTML, XML (xml)
Це забороняє доступ будь-кому до файлів *.php у папці /wp-content/uploads/ , такий собі додатковий рівень захисту. Плюс, якщо немає, створіть поруч файл index.php з наступним вмістом, аби через браузер не можна було напряму переглядати вміст директорії /wp-content/uploads/ :
<?php // Silence is golden.
Code language: HTML, XML (xml)
4. wp-config.php
Зараз ми відновимо / почистимо цей важливий файл в корені Вашого сайту. Зробити це не дуже складно, з чистим вордпресом Ви завантажили файл wp-config-sample.php – це і є “незаймана” версія wp-config.php . Нам лише потрібно перенести туди певні налаштування. Відкриваємо обидва файли для редагування, беремо дані з wp-config.php і вставляємо у wp-config-sample.php , а саме:
- налаштування підключення до бази даних (клікайте)
- ключі аутентифікації (клікайте)
- префікс таблиць (клікайте)
- зберігаємо зміни.
- видаляємо wp-config.php
- змінюємо назву wp-config-sample.php на wp-config.php
п.с. Перед перенесенням інформації про підключення до бази даних я б ще радив хоча б змінити пароль до бази, і тоді використовувати вже новий. Зазвичай це можна зробити через хостинг-панель Вашого хостинг-провайдера.
5. Поїхали
Цього має бути достатньо аби перейти вже до нашої адмінки. Отже відкриваємо http://vash_site/wp-admin
Нас чекають наступні справи та сюрпризи :
- перше, що треба – зайти в меню “Користувачі”, подивитися, чи немає зайвих адміністраторів та змінити паролі усім адміністраторам, що залишились.
- відкривши меню “Плагіни”, ми можемо побачити, що певні плагіни були відключені , оскільки ми видалили їх папки. Інші плагіни залишаться на місці, їх налаштування мають зберегтися.
- в меню “Вигляд” Ви можете побачити, що Ваша активна тема пошкоджена (це якщо ви не знайшли її “чистого” варіанту) , в такому випадку просто активуйте нову, яку ми завантажили пару кроків тому.
- Видаліть код з файлу .htaccess у корені сайту, що ми додали на початку статті для обмеження доступу
- Зайдіть в меню “Налаштування – Постійні посилання” і натисніть Зберегти, це заново створить в корені сайту файл .htaccess з потрібним вмістом для відкриття сторінок з гарними url-ами.
Фініта
Звісно, окрім зміни паролів доступу до адмінки і бази даних, бажано змінити паролі і на хостингу (до хостинг-панелі/FTP та інші) .
На виході Ви не завжди отримаєте 100% той самий сайт, що був до моменту зламу, але у вас буде сайт і буде збережено Ваш контент. В залежності від хостингу, програм та налаштувань, що Ви використовуєте – можуть бути певні специфічні нюанси на кожному кроці, на жаль, я ніяк не можу їх усі врахувати і описати. Також зауважте, якщо Ваші сайти є способом заробітку і приносять гроші, не варто нехтувати їх захистом, це може обійтися дорожче. Тож раджу також ознайомитись з нашими статтями у розділі “Про Захист WordPress” , присвятити певний час та сили для покращення безпеки Вашого сайту або скористатися послугами сторонніх спеціалістів.
Додатково раджу після очищення чи для профілактики вже зараз скористатися наступними плагінами:
- https://wordpress.org/plugins/tac/
- https://wordpress.org/plugins/exploit-scanner/
- https://wordpress.org/plugins/wp-antivirus-site-protection/
- https://wordpress.org/plugins/antivirus/
- https://wordpress.org/plugins/gotmls/
- https://wordpress.org/plugins/wemahu/
Якщо у Вас виникнуть додаткові питання – буду радий відповісти. Не забувайте підписуватись на нашу розсилку (форма нижче) та “лайкати” у соцмережах наші сторінки і записи 🙂
коментарі 4
Лайкнул 🙂
+100500
У меня постоянно настроен автоматический бєкап. Было дело, раз взломали. Но особо ничего не натворили, просто ссылок своих напихали в статьи.
Часто вы и не знаете, что на самом деле сделали \”хакеры\”. Сейчас большинство взломов происходит ради закачки \”кода\”, который тихонько рассылает СПАМ с вашего домена, не мешая работать сайту вообще