Як захистити сайт від злому: повний чекліст безпеки для власника бізнесу
Коротко
- → 60% малих бізнесів, які зазнали кіберінциденту, закриваються протягом 6 місяців — профілактика в рази дешевша за відновлення після злому
- → 10 базових кроків: SSL, надійні паролі, 2FA, оновлення, обмеження спроб входу, зміна wp-login URL, правильні дозволи файлів (644/755), захист від SQL-ін'єкцій, WAF, бекапи
- → WordPress-харденінг: вимкніть редактор файлів (DISALLOW_FILE_EDIT), заблокуйте XML-RPC, приховайте версію WP, обмежте REST API для неавторизованих
- → Бекапи — останній рубіж: автоматичні щодня, зберігайте мінімум 30 днів, тримайте копію поза хостингом (Google Drive / S3), і перевіряйте відновлення раз на квартал
Чому зламують сайти
Більшість зламів — не цілеспрямовані атаки саме на ваш бізнес. Це автоматизовані боти, які сканують тисячі сайтів на відомі вразливості. Знайшли слабке місце — зламали. Не знайшли — пішли далі. Вашому сайту не потрібно бути «цікавим» для хакерів — достатньо бути незахищеним. За даними Ponemon Institute, 60% малих бізнесів, які стикнулись з кіберінцидентом, закриваються протягом 6 місяців.
Що роблять зі зламаними сайтами:
- Розсилка спаму — ваш сервер використовують для відправки тисяч спам-листів. Результат: IP потрапляє в чорний список, email перестає доходити до клієнтів
- Редиректи — відвідувачі потрапляють на фішингові або порно-сайти замість вашого. Google бачить це і видаляє сайт з видачі
- Майнінг криптовалюти — на ваш сайт вбудовують скрипт, який використовує ресурси комп'ютерів відвідувачів
- Крадіжка даних — якщо є форми з персональними даними або платіжними реквізитами
- SEO-спам — на ваших сторінках з'являються приховані посилання на чужі сайти. Ваші позиції в Google обвалюються
Відновлення після злому коштує в рази дорожче за профілактику. Я чистив десятки заражених сайтів — і щоразу рахунок починається від 5 000 грн і тижня простою. А якщо ваш сайт збирає персональні дані (форми, реєстрації, замовлення) — ви ще й несете юридичну відповідальність за їх витік згідно із Законом України «Про захист персональних даних» та GDPR для європейських клієнтів (що включити в політику конфіденційності). Простіше витратити кілька годин на налаштування захисту, ніж потім тижнями чистити сайт від вірусів і відновлювати позиції.
| Загроза | Захист | Інструмент | Пріоритет |
|---|---|---|---|
| Перехоплення даних | SSL-сертифікат | Let's Encrypt | Критичний |
| Brute force | 2FA + обмеження входу | Wordfence / Limit Login | Критичний |
| SQL-ін'єкції / XSS | Валідація + prepared statements | WAF + код-ревью | Критичний |
| Вразливі плагіни | Регулярні оновлення | WP auto-update / cron | Високий |
| DDoS-атака | CDN + фільтрація трафіку | Cloudflare (free) | Високий |
| Втрата даних | Бекапи 3-2-1 | UpdraftPlus / cron + S3 | Критичний |
| Clickjacking / MIME-sniffing | Security headers | .htaccess / nginx config | Середній |
Базовий чекліст: 10 обов'язкових кроків
Ці пункти актуальні для будь-якого сайту — WordPress, самописний, на конструкторі:
1. SSL-сертифікат
Сайт повинен працювати через HTTPS. SSL-сертифікат шифрує дані між браузером і сервером. Без нього паролі, форми і платіжні дані передаються відкритим текстом. Let's Encrypt — безкоштовний і достатній для більшості сайтів.
2. Надійні паролі
Мінімум 12 символів, великі і малі літери, цифри, спеціальні символи. Не використовуйте один пароль для адмінки, хостингу, FTP і пошти. Використовуйте менеджер паролів (Bitwarden, 1Password). Пароль «admin123» або «назвакомпанії2026» — це не пароль, це запрошення для ботів.
3. Двофакторна автентифікація (2FA)
Увімкніть 2FA для входу в адмінку, хостинг-панель і поштову скриньку. Навіть якщо хтось дізнається ваш пароль — без другого фактору (код з додатку або SMS) увійти не зможе.
4. Регулярні оновлення
CMS, плагіни, теми, PHP, серверне ПЗ — все повинно бути оновленим. Плагіни відповідають за 91% усіх відомих вразливостей WordPress. У 2025 році зафіксовано понад 11 000 нових вразливостей, і медіанний час до першої атаки — лише 5 годин після публікації. Оновлення закривають ці вразливості, але тільки якщо ви їх встановлюєте вчасно.
5. Обмеження спроб входу
Боти перебирають тисячі комбінацій паролів (brute force). Обмежте кількість невдалих спроб входу — після 5 невдач блокуйте IP на 30 хвилин. Це зупиняє більшість автоматизованих атак.
6. Зміна стандартних URL
Стандартна адреса входу WordPress (/wp-admin, /wp-login.php) відома всім ботам. Змініть URL на щось нестандартне. Це не захист від цілеспрямованої атаки, але відсікає 90% автоматизованих спроб.
7. Правильні дозволи файлів
Файли: 644. Директорії: 755. Конфігураційний файл (wp-config.php): 600 або 640. Ніколи не ставте 777 — це дає повний доступ будь-кому.
8. Захист від SQL-ін'єкцій і XSS
Всі дані з форм повинні проходити валідацію і санітизацію на сервері. Ніколи не довіряйте даним від користувача — навіть якщо форма «проста». Використовуйте підготовлені запити (prepared statements) для роботи з базою даних.
9. Заголовки безпеки (Security Headers)
Налаштуйте HTTP-заголовки: X-Content-Type-Options, X-Frame-Options, Content-Security-Policy, Strict-Transport-Security. Вони запобігають багатьом типам атак: clickjacking, MIME-sniffing, XSS. Додаються в .htaccess або конфігурації сервера.
10. Видаліть все зайве
Невикористані плагіни, деактивовані теми, тестові файли, стара документація, резервні копії бази даних у публічній директорії — все це потенційні точки входу. Якщо не використовуєте — видаляйте.
Хочете знати що гальмує ваш сайт?
SEO-аудит — знайду технічні проблеми і дам план виправлень
Безпека WordPress: харденінг
WordPress — найпопулярніша CMS у світі, і саме тому вона найчастіша мішень для атак. Але проблема не в самому WordPress — ядро досить безпечне. Проблема у плагінах, темах і недбалому адмініструванні. Нижче — кроки з харденінгу (hardening), які я налаштовую на кожному WordPress-сайті.
Зміна стандартного логіна та обмеження доступу
Логін «admin» — це перше, що пробують боти. Створіть адміністратора з унікальним іменем і видаліть стандартного. Якщо є можливість — обмежте доступ до адмінки по IP-адресах: дозвольте вхід тільки зі своєї IP або через VPN. Це радикально, але я використовую це на сайтах з чутливими даними.
Вимкніть XML-RPC та редагування файлів
XML-RPC — застарілий протокол, який часто використовується для brute force атак. Якщо ви не працюєте через мобільний додаток WordPress — вимкніть його. Також заблокуйте редагування файлів з адмінки: додайте define('DISALLOW_FILE_EDIT', true); в wp-config.php. Це запобігає зміні коду теми чи плагіна навіть при компрометації адміністраторського акаунту.
Обмеження REST API
За замовчуванням REST API WordPress відкриває список користувачів сайту — зловмисник може дізнатися логіни всіх адміністраторів простим запитом до /wp-json/wp/v2/users. Закрийте цей ендпоінт або обмежте доступ до нього тільки для авторизованих користувачів.
Плагін безпеки і аудит плагінів
Wordfence або Sucuri — для моніторингу, файрволу і сканування. Один плагін безпеки достатньо — два одночасно створюють конфлікти. Не менш важливо перевіряти кожен плагін перед установкою: дата останнього оновлення, кількість активних установок, рейтинг. Плагін, який не оновлювався 2+ роки — потенційна zero-day вразливість. Після supply chain-атаки на EssentialPlugin у 2026 році я також почав перевіряти історію зміни власників плагінів на WordPress.org.
Детальніше про внутрішню архітектуру WordPress — в статті як працює WordPress під капотом.
Що залежить від хостингу
Навіть ідеально налаштований сайт вразливий, якщо хостинг не забезпечує базовий рівень безпеки. Що повинен надавати хостинг-провайдер:
- Актуальна версія PHP — PHP 7.x вже не отримує оновлень безпеки. Мінімум PHP 8.1, бажано 8.2+
- Ізоляція акаунтів — на shared-хостингу ваш сайт не повинен мати доступ до файлів інших клієнтів
- Автоматичні бекапи — щоденні, з можливістю відновлення в один клік
- WAF (Web Application Firewall) — фільтрує шкідливі запити до того, як вони дійдуть до сайту
- Захист від DDoS — базовий захист на рівні інфраструктури
- Моніторинг malware — автоматичне сканування файлів на шкідливий код
Дешевий хостинг за 30-50 грн/міс часто економить на безпеці. Це не означає що дорогий хостинг автоматично безпечний — але це один з факторів при виборі.
Бекапи: як не втратити все
Бекап — ваша страховка. Навіть якщо сайт зламають, видалять або хостинг зникне — ви зможете відновити все за години, а не за тижні. Я мав випадок, коли клієнт втратив сайт через збій хостингу, а бекапів не було ніде — ні на сервері, ні локально. Відновлення з нуля зайняло три тижні. Після цього я налаштовую бекапи на кожному проєкті ще до першого запуску.
Правила бекапів:
- Правило 3-2-1 — 3 копії, на 2 різних носіях, 1 копія в іншому фізичному місці (хмара)
- Автоматичні, не ручні — щоденний автоматичний бекап надійніший за «я збережу коли згадаю»
- Файли + база даних — бекап тільки файлів або тільки бази — не повний бекап
- Перевіряйте відновлення — бекап, який неможливо відновити, не бекап. Тестуйте відновлення хоча б раз на квартал
- Не зберігайте бекапи тільки на тому ж сервері — якщо сервер зламають або він впаде, бекапи зникнуть разом з сайтом
Для WordPress: UpdraftPlus (безкоштовний, відправляє бекапи на Google Drive або Dropbox). Для самописних сайтів: cron-скрипт, який архівує файли + дамп бази і відправляє на зовнішнє сховище.
Моніторинг і раннє виявлення
Чим раніше ви дізнаєтесь про проблему — тим менше шкоди. Налаштуйте:
- Uptime-моніторинг — сервіси типу UptimeRobot (безкоштовний) перевіряють сайт кожні 5 хвилин і повідомляють якщо він недоступний
- Google Search Console — повідомить якщо Google виявить malware або проблеми з безпекою на сайті
- Сканер файлів — відстежує зміни у файлах сайту. Якщо файл змінився без вашого відома — це тривожний сигнал
- Журнал входів — фіксуйте хто, коли і звідки входив в адмінку. Незнайомий IP = можлива компрометація
Не ігноруйте email-повідомлення від хостингу і Google Search Console. «Виявлено проблему з безпекою» — це не спам, це реальна загроза. Моніторинг — частина регулярних дій після запуску сайту.
Що робити якщо сайт зламали
Якщо злом вже стався — дійте швидко і послідовно:
- Не панікуйте, але дійте негайно — кожна година зі зламаним сайтом = втрата позицій і довіри
- Змініть всі паролі — адмінка, хостинг, FTP, база даних, пошта. Все. Зараз
- Визначте масштаб — які файли змінені, чи є шкідливий код у базі даних, чи є бекдори
- Відновіть з чистого бекапу — якщо є бекап до моменту злому. Не забудьте перевірити що бекап сам не заражений
- Або очистіть вручну — якщо бекапу немає, видаліть шкідливий код з кожного зараженого файлу
- Закрийте вразливість — зрозумійте як зламали і виправте причину, інакше зламають знову
- Перевірте через Google Search Console — якщо Google позначив сайт як небезпечний, подайте запит на повторну перевірку
Якщо не маєте досвіду з очищенням заражених сайтів — зверніться до фахівця. Неповне очищення гірше за відсутність очищення — бекдори залишаться, і злом повториться через тиждень. Допоможу з видаленням вірусів і відновленням сайту.
Часті запитання
Базовий захист (SSL, паролі, оновлення, бекапи) — безкоштовно, потрібен тільки час. Плагін безпеки для WordPress (Wordfence Premium) — від $119/рік. Послуга з налаштування безпеки фахівцем — від 3 000-5 000 грн разово. Це набагато дешевше ніж відновлення після злому, яке може коштувати 5 000-15 000 грн і тижні простою.
Конструктори беруть на себе базову безпеку: SSL, оновлення, захист від DDoS. Але ви все одно відповідаєте за надійний пароль і двофакторну автентифікацію. Злам акаунту через слабкий пароль конструктор не запобіжить.
Мінорні оновлення безпеки — якнайшвидше (протягом 1-2 днів). Мажорні оновлення — після появи перших відгуків (зачекайте 3-5 днів щоб впевнитись що оновлення стабільне). Завжди робіть бекап перед оновленням.
Для більшості малих бізнесів — корисний, але не обов'язковий. Cloudflare (безкоштовний план) дає базовий захист від DDoS, CDN для пришвидшення сайту і додатковий рівень фільтрації трафіку. Якщо ваш сайт вже атакували або у вас є чутливі дані — варто підключити.
Перевірте на Google Safe Browsing (transparencyreport.google.com), просканувате через Sucuri SiteCheck (sitecheck.sucuri.net), перегляньте Google Search Console на попередження про безпеку. Також зверніть увагу на симптоми: незнайомі файли на сервері, редиректи на чужі сайти, скарги від відвідувачів, різкий зріст трафіку зі спам-країн.
Базовий чекліст (SSL, паролі, 2FA, оновлення, бекапи) — 2-3 години для WordPress-сайту. Повний харденінг із security headers, WAF, обмеженням REST API і моніторингом — до 1 робочого дня. Після первинного налаштування підтримка займає 15-30 хвилин на тиждень: перевірка оновлень, перегляд логів. Якщо потрібна постійна підтримка WordPress-сайту з моніторингом безпеки — це окрема послуга.
100% гарантії не дасть ніхто — нові вразливості з'являються щодня. Але реалістична мета — зробити злам вашого сайту дорожчим і складнішим за альтернативні цілі. Бот, який натикається на 2FA, WAF і обмеження входу, просто йде далі до менш захищеного сайту. Виконання цього чекліста закриває 95% типових векторів атак.
Не знайшли відповідь?
Висновок
Безпека сайту — це не одноразова дія, а постійний процес. Базовий чекліст (SSL, паролі, оновлення, бекапи, обмеження входу) закриває 90% ризиків і не потребує великих витрат. Ігнорування безпеки — це не «авось пронесе», це питання часу.
Починайте з базових кроків сьогодні: змініть слабкі паролі, увімкніть 2FA, перевірте оновлення, налаштуйте бекапи. Кожен виконаний пункт з чекліста — це закрита двері для ботів.
Не впевнені в безпеці свого сайту? Замовте аудит — перевірю сайт на вразливості, налаштую захист і бекапи. А якщо сайт вже заражений — допоможу з видаленням вірусів і відновленням. Оцінити вартість розробки безпечного сайту з нуля можна через калькулятор. І перед запуском обов'язково пройдіть повний чекліст перед запуском сайту — безпека там окремий блок.