HostiServer
2026-06-03 19:12
Безпека сайту 2026: HTTPS, 2FA, WAF, бекапи 3-2-1 — повний гайд
Як захистити сайт від хакерів: 7 робочих кроків
На нашу думку, можна сміло сказати що сайт без захисту у 2026 році живе рівно до моменту, поки його не знайде перший автоматичний сканер. А знаходять усіх — тому що боти ходять по всьому інтернету і шукають дві речі: відкриті адмінки і застарілі CMS. Великі портали з командою інженерів і малий блог на WordPress для них однакова мішень, бо атака масова і неперсоналізована.
Парадокс у тому, що 90% реальних інцидентів — це не складні таргетовані атаки, а елементарні речі: слабкий пароль адміна, плагін який не оновлювали півтора року, або відкритий 22-й порт з root-логіном. Хакери не «зламують» сайт — вони заходять у нього через те, що власник сам залишив відкритим.
Нижче ми підготували для вас 7 кроків, які реально працюють. Без води про «загрози цифрової епохи» — конкретні налаштування, які ми ставимо клієнтам після інцидентів, і які варто було б поставити до.
ℹ️ Для кого ця стаття: власники сайтів на WordPress / Joomla / Drupal, розробники, які адмінять VPS своїх клієнтів, та техдиректори, які хочуть швидкий аудит без 200-сторінкових OWASP-документів.
Що насправді втрачає бізнес після зламу
Багато хто думає категоріями «вкрадуть дані» або «зашифрують файли». Реальні наслідки складніші, і фінансові втрати часто приходить не від самої атаки, а від того, що відбувається після.
1. Випадання з пошуку Google
Якщо Google Safe Browsing виявляє на сайті шкідливий код, ресурс отримує позначку «Цей сайт може зашкодити вашому комп'ютеру» у видачі, тоді користувачі бачать червоний екран замість контенту. На повернення в індекс після очищення йде від кількох днів до кількох тижнів — і весь цей час органічний трафік фактично нульовий.
2. Блокування на рівні браузерів
Chrome, Safari та Firefox синхронізуються зі списками шкідливих сайтів. Тобто навіть якщо людина має пряме посилання, браузер просто не пустить її без додаткового кліку «Все одно перейти». Конверсія такого «трафіку» близька до нуля.
3. Юридичні наслідки
Витік персональних даних (емейли, телефони, історія замовлень) — це сфера дії GDPR у Європі або відповідного закону про захист персональних даних у конкретній юрисдикції. Штрафи рахуються від обороту компанії, і повідомити постраждалих клієнтів зобов'язує закон — а це окрема репутаційна криза.
4. Майнінг та спам-розсилка від вашого імені
Зламаний сайт рідко простоює, тому що найчастіше його ставлять у так званий ботнет — він починає розсилати спам, майнити криптовалюту, атакувати інші сайти. Власник дізнається про це з рахунку за трафік або від хостинг-провайдера, який блокує сервер за зловживання.
⚠️ З досвіду техпідтримки: у переважній більшості випадків відновлення сайту після зламу займає від 4 до 48 годин. Профілактика — кілька годин разової роботи. Математика проста.
Крок 1. HTTPS + HSTS — базовий мінімум
HTTPS у 2026 — це навіть не питання безпеки, а технічна гігієна. Без нього сучасні браузери показують попередження, форми входу позначаються як небезпечні, а Google понижує сайт у видачі. Будь-який Wi-Fi у кав'ярні — це потенційна точка перехоплення трафіку, якщо сайт ходить через чистий HTTP.
Який сертифікат обрати
| Сценарій | Тип сертифіката | Коментар |
|---|---|---|
| Блог, візитка, інформаційний сайт | Let's Encrypt (безкоштовний) | Автоматичне оновлення через Certbot, валідність 45 днів |
| E-commerce, кабінети користувачів | OV від Sectigo / DigiCert | Перевірка організації, фінансова гарантія |
| Банки, фінтех, страхування | EV з розширеною валідацією | Максимальний рівень довіри для критичних доменів |
HSTS — другий шар над HTTPS
Сам по собі HTTPS не врятує від атаки типу downgrade, коли зловмисник примушує браузер відкрити сайт по HTTP при першому з'єднанні. Заголовок HSTS говорить браузеру: «з цим доменом ходи лише по HTTPS, без винятків».
Для Nginx додається одним рядком у server-блок:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
ℹ️ Що означають параметри: max-age=31536000 — рік у секундах, браузер запам'ятає правило. includeSubDomains — поширити на всі піддомени. preload — заявка на включення у вбудований список браузерів (через hstspreload.org).
Крок 2. Оновлення CMS, плагінів і бібліотек
Застаріле ПЗ — головна причина зламів у статистиці CVE. WordPress, який обслуговує близько 43% усіх сайтів у світі, лідирує не тому, що він небезпечний за дизайном, а тому, що він масовий. Сама CMS оновлюється швидко — проблеми починаються на стороні плагінів і тем.
Що робити з ядром CMS
- Увімкнути автоматичні мінорні оновлення — це security-патчі, вони не ламають сумісність.
- Мажорні оновлення (5.x → 6.x) ставити вручну після тесту на staging-копії сайту.
- Підписатися на security-розсилку розробника CMS — критичні дірки часто закривають екстренними патчами.
Що робити з плагінами і темами
- Раз на місяць проводити аудит: видалити все, чим не користуєтесь. Чим менше коду — тим менша поверхня атаки.
- Перевіряти дату останнього оновлення плагіна. Якщо розробник не випускав фіксів понад 12 місяців — це червоний прапор, плагін фактично кинутий.
- Ніколи не ставити «нулені» (nulled) платні теми з торентів. У 99% випадків там вшитий бекдор, який буде працювати тихо, поки сайт не використають у спам-розсилці.
🚨 Типовий сценарій з підтримки: клієнт втратив доступ до адмінки через дірку у старому плагіні галереї. Через uploader зловмисник завантажив PHP-shell, отримав права і встановив редирект на фішинговий сайт. Відновлення з бекапу зайняло близько 2 годин — але без бекапа втрата була б повною.
Правило перед оновленнями
Перед будь-яким мажорним оновленням — бекап. Перед оновленням крупного e-commerce плагіна (WooCommerce, Magento модулі) — бекап і staging-тест. Бекап, який зробили «вже після», нічим не допоможе.
Крок 3. Паролі та двофакторна автентифікація
Більшість серйозних зламів адмінок — це не «хакерство», а банальний brute-force або credential stuffing (підстановка паролів, які витекли в інших місцях). Боти намагаються зайти 24/7, і якщо пароль admin / 123456 / qwerty — справа кількох хвилин.
Що таке нормальний пароль у 2026
- Довжина — від 16 символів. Складність важлива менше, ніж довжина:
correct horse battery stapleзламати важче, ніжP@ss1! - Унікальний для кожного сервісу. Якщо пароль один на 10 акаунтів — після першого витоку всі 10 в зоні ризику.
- Створюється генератором, а не вигадується вручну. Випадкові 20–30 символів неможливо запам'ятати — і не треба, для цього є менеджери.
- Не зберігається у текстовому файлі, у браузері без майстер-пароля, або у месенджері. Тільки у спеціалізованому менеджері: Bitwarden, 1Password, KeePassXC (у них же є вбудований генератор).
2FA — те, що зупиняє 99% автоматичних атак
Двофакторна автентифікація додає другий шар поверх пароля: одноразовий код з мобільного додатку. Навіть якщо пароль повністю злили, без доступу до телефону зловмисник не зайде. Це не маркетинг — це базовий стандарт, який має бути увімкнено скрізь, де є хоч якісь чутливі дані.
| Метод 2FA | Надійність | Коментар |
|---|---|---|
| SMS / email-код | Слабка | SMS вразлива до SIM-swap атак, email — до зламу поштової скриньки. Краще, ніж нічого, але не для критичних акаунтів. |
| TOTP (Google Authenticator, Authy) | Висока | Код генерується локально на телефоні, не передається мережею. Стандарт за замовчуванням. |
| Hardware key (YubiKey) | Максимальна | Фізичний ключ, який неможливо вкрасти віддалено. Для адмінів критичної інфраструктури. |
💡 Куди ставити 2FA в першу чергу: панель хостинг-провайдера, реєстратор домену, поштовий ящик адміна (через нього скидають паролі всюди), GitHub/GitLab з кодом проекту, адмінка CMS.
Крок 4. Захист на рівні сервера
Хостинг — це фундамент. Якщо сервер погано налаштований, навіть ідеально захищений сайт буде вразливим: атакують операційну систему, мережевий рівень або сусідні сайти на тому ж сервері. Тому ключове запитання до провайдера — не «скільки CPU», а «як ви ізолюєте проєкти і що з мережевим захистом».
Базовий стек серверного захисту
1. Web Application Firewall (WAF)
WAF аналізує HTTP-трафік перед тим, як він дійде до сайту, і блокує типові патерни атак: SQL-ін'єкції, XSS, спроби path traversal, експлойти на конкретні CVE. На рівні сервера це може бути ModSecurity з правилами OWASP CRS, на CMS-рівні — Wordfence або Sucuri.
2. Захист від DDoS
Volumetric-атаки (потужні потоки сміттєвого трафіку) у 2026 році вимірюються в десятках і сотнях Гбіт/с. Самостійно з одного сервера від них не захиститися — потрібна інфраструктура з фільтрами на рівні дата-центру. Application-layer атаки (повільні запити, які виглядають як легітимні) ловляться вже на рівні WAF.
3. Ізоляція проєктів
На якісному VPS-хостингу кожен клієнт сидить у власному KVM-контейнері з виділеними ресурсами — атака на сусіда не може торкнутися вашого сервера фізично, бо ізоляція забезпечена на рівні гіпервізора. У вашому розпорядженні власне ядро ОС, власний firewall, власні логи — нічого з цього не «протікає» між клієнтами. Якщо в когось на тому ж залізі зламали проєкт, ваш стоїть осторонь.
4. Fail2ban проти brute-force
Утиліта, яка моніторить логи (auth.log, nginx access.log) і автоматично банить IP-адреси після N невдалих спроб. Базовий конфіг для SSH:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600
3 невдалі спроби за 10 хвилин — бан на годину. Для адмінок CMS пишеться окремий фільтр під /wp-login.php або /administrator.
💡 Простий додатковий трюк: змініть дефолтний SSH-порт з 22 на щось нестандартне (наприклад, з діапазону 49152+). Це не зупинить таргетовану атаку — якщо за ваш сервер взялися персонально, сканер портів все одно знайде новий. Але переважна більшість автоматичного brute-force б'є лише в 22-й порт, тому така зміна одразу відсікає основну масу шуму в логах.
5. Обмеження доступу до адмінки за IP
Якщо ви заходите в адмінку з кількох постійних локацій (офіс, дім, VPN), має сенс закрити її повністю на nginx-рівні:
location /wp-admin {
allow 198.51.100.42; # офіс
allow 203.0.113.0/24; # робочий VPN
deny all;
}
ℹ️ IP-адреси у прикладі — це блоки RFC 5737, зарезервовані для документації. У реальному конфізі підставте ваші справжні IP.
6. Security Headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'; img-src 'self' https:; script-src 'self'" always;
CSP — найскладніший з них, його треба налаштовувати під конкретний сайт, інакше зламає аналітику і зовнішні скрипти. Перевірити свій рівень захисту можна на securityheaders.com.
Крок 5. Регулярне сканування на шкідливий код
Навіть з ідеальним налаштуванням сайт може отримати малварь через інший вектор: вірус на робочому комп'ютері адміна вкрав FTP-доступи, або один з розробників випадково закомітив у репозиторій ключі від продакшна. Тому правило «довіряй, але перевіряй» — це не банальність, а робочий принцип.
Що сканувати і чим
- Файлова система: ClamAV, maldet (Linux Malware Detect), Imunify360. Запускати по cron мінімум раз на добу для активних проєктів.
- Цілісність системних файлів CMS: Wordfence для WordPress порівнює файли з еталонними з офіційного репозиторію — будь-яка зміна викликає алерт.
- Зовнішнє сканування: Sucuri SiteCheck, VirusTotal — перевіряють сайт з точки зору відвідувача, ловлять редиректи на фішинг і впроваджений JS.
- База даних: у WordPress зловмисники часто додають фейкових адмінів або вставляють спам у wp_options. Раз на місяць варто переглядати таблицю users і подивитися на post_content на наявність дивних <script>.
Що робити, коли знайшли
| Знахідка | Дія |
|---|---|
| Окремий заражений файл | Видалити, перевірити логи доступу до нього, замінити на чисту версію з офіційного джерела. |
| PHP-shell в /uploads | Видалити, заборонити виконання PHP у каталозі завантажень (location-блок з deny на .php). |
| Фейковий адмін у БД | Видалити, змінити паролі всіх реальних адмінів, проаналізувати, коли і звідки створили акаунт. |
| Масове зараження, незрозуміла причина | Відкат до чистого бекапу, повний аудит, зміна всіх ключів і паролів. |
Крок 6. Принцип мінімальних привілеїв
Власники сайтів часто роздають доступи з логікою «нехай має все, раптом знадобиться». Це найгірший підхід з точки зору безпеки. Чим більше людей мають Admin-права — тим більше векторів атаки на ці акаунти, і тим важче розслідувати інцидент.
Розподіл ролей у CMS
- Адміністратор — мінімум людей, ідеально 1-2. Доступ до плагінів, користувачів, налаштувань.
- Редактор — для контент-менеджерів. Може публікувати все, але не лізе в плагіни.
- Автор — для зовнішніх копірайтерів. Публікує лише свої матеріали.
- SEO / аналітика — окрема роль через плагін типу User Role Editor, доступ лише до релевантних розділів.
Доступи для розробників і підрядників
- Окремий SSH-ключ для кожного розробника. Root-доступу не давати взагалі — для конкретних команд писати правила в
sudoers. - SSH тільки за ключами, парольна автентифікація вимкнена (
PasswordAuthentication noу sshd_config). - Доступи фрілансерам — створюйте одразу з обмеженим терміном дії (наприклад, через
chage -Eу Linux). Тоді не доведеться пам'ятати про видалення після завершення проєкту — акаунт експайриться сам. - Для тимчасових задач — sudo з логуванням замість прямого root.
⚠️ Частий ляп: розробник, який місяць тому здав проєкт, досі має SSH-ключ і FTP-логін. Якщо його ноутбук вкрадуть або зламають — це автоматично вектор у вашу інфраструктуру. Перевіряйте список активних ключів і користувачів раз на квартал.
Крок 7. Бекапи за правилом 3-2-1
Це останній рубіж оборони. Якщо ransomware зашифрував файли, або розробник через помилку дропнув продакшн-базу — без бекапа втрата може бути повною і незворотною. Правило 3-2-1 — це індустріальний стандарт, який сформулювали ще до епохи хмар, і він досі актуальний.
Що означає «3-2-1»
- 3 копії даних — оригінал + дві резервні. Не одна, не «треба буде колись».
- 2 різних типи носіїв або систем — наприклад, бекап на тому ж сервері + бекап у віддаленому сховищі. Якщо обидві копії на одному диску — це не дві копії.
- 1 копія повністю відокремлена — у хмарі, на іншому континенті, офлайн. Якщо ransomware дотягнеться до сервера і знищить локальні бекапи, ця копія — те, що врятує бізнес.
Як часто робити бекапи
| Тип проєкту | Частота | Зберігати |
|---|---|---|
| Особистий блог, візитка | Раз на тиждень | 30 днів |
| Корпоративний сайт | Раз на 3-5 днів | 30-60 днів |
| Інтернет-магазин | Щодня (БД — кілька разів на день) | 90 днів |
| Новинний портал, форум | Кілька разів на день | 30-60 днів |
| SaaS, фінансові сервіси | Безперервна реплікація + щоденні snapshot | 1 рік+ |
| Staging / dev | Перед змінами | На розсуд команди |
🚨 Найбільша помилка з бекапами: їх роблять, але ніколи не перевіряють. Бекап існує лише тоді, коли його успішно розгорнули. Раз на квартал піднімайте свіжу копію на тестовому домені і переконуйтеся, що сайт стартує і база нормально читається. Інакше у критичний момент може виявитися, що архів пошкоджений або в ньому нема половини таблиць.
Топ-5 помилок, які роблять майже всі
- «Мій сайт занадто маленький, кому я потрібен». Боти не вибирають жертв за розміром бізнесу. Вони сканують /16 і /24 підмережі підряд, шукаючи відомі дірки. Маленький сайт цікавий тим, що його ніхто не охороняє.
- Один пароль на хостинг, домен і пошту. Якщо пароль витече з будь-якого з трьох — зловмисник отримує контроль над усім. Включно з можливістю перевести домен на інший реєстратор.
- «Бекап є у хостера, нащо мені свій». Бекапи на тому самому сервері, де живе сайт, — це не бекапи, а ілюзія. У разі компрометації сервера або ransomware вони підуть разом із продакшеном.
- Доступ до адмінки з громадського Wi-Fi без VPN. Навіть з HTTPS є вектори, які працюють на рівні DNS і ARP-спуфінгу. Або VPN, або не логіньтеся на критичні сервіси з кав'ярні.
- Ігнорування логів. У access.log і auth.log часто можна побачити атаку за день-два до того, як вона спрацює. Але туди ніхто не дивиться, поки сайт не впав. Базовий моніторинг (Fail2ban + сповіщення в Telegram або на пошту) — це година налаштування і місяці спокою.
🚀 Надійний хостинг = базова безпека вже з коробки
Більшість кроків з цієї статті — це не складна робота, але вона вимагає часу і досвіду. На хостингу Hostiserver частина цих речей вже налаштована за замовчуванням, а решту допомагає поставити техпідтримка.
💻 Cloud (VPS) Хостинг
- Від $19.95/міс — KVM-ізоляція кожного клієнта на рівні гіпервізора
- WAF та DDoS-захист — фільтрація трафіку на рівні мережі дата-центру
- Автоматичні бекапи — щоденні снепшоти зі зберіганням у віддаленому сховищі
- Безкоштовні SSL Let's Encrypt з автооновленням і налаштованим HSTS
- Допомога з Fail2ban, security headers, hardening — інженери техпідтримки
- 24/7 підтримка — <10 хв відповідь, реальні інженери, не call-центр
🖥️ Виділені Сервери
- Від $90/міс — повна ізоляція без сусідів на залізі
- DDoS-захист у складі тарифу, без доплат за «преміум»
- Налаштування OS hardening при міграції — sshd, fail2ban, firewall
- SLA 99.9% uptime і безкоштовна міграція з іншого провайдера
- Гнучка конфігурація CPU, RAM, дисків під ваш проєкт
💬 Не впевнені, який варіант вам необхідний?
💬 Напишіть нам і ми зі всім допоможемо!
Часті питання
- Чи достатньо одного security-плагіна для WordPress, щоб не думати про захист?
Ні. Плагін типу Wordfence або Sucuri закриває частину векторів на рівні CMS — сканування файлів, фільтрація запитів, 2FA. Але він не захистить від атак на рівні мережі (DDoS), не зашифрує трафік (HTTPS), не врятує від ransomware (бекапи) і не зробить за вас оновлення плагінів. Це один з шарів захисту, а не вся стіна.
- Як зрозуміти, що сайт уже зламали?
Типові ознаки: різке падіння позицій у Google без видимих причин, попередження «This site may be hacked» у видачі, нетипові редиректи з мобільних пристроїв (бо часто шкідливий код таргетиться лише на mobile UA), невідомі файли у каталогах /uploads або /tmp, нові адміни у базі, яких ви не створювали, та аномальне зростання навантаження на сервер. Якщо є хоч одна з цих ознак — час робити повний скан і дивитися логи.
- Що робити прямо зараз, якщо сайт уже зламали?
Покроково: 1) перевести сайт у режим обслуговування або тимчасово закрити доступ; 2) змінити всі паролі — адмінка, FTP, SSH, БД, панель хостингу, реєстратор домену, пошта; 3) зробити свіжий бекап поточного стану (для розслідування); 4) відновити сайт з останнього чистого бекапу до зараження; 5) оновити CMS і всі плагіни; 6) проаналізувати, як зайшли — інакше повторне зараження прийде через той самий вектор. Якщо самостійно складно — пишіть техпідтримці хостингу, у нормальних провайдерів є послуга очищення.
- Скільки реально коштує комплексний захист сайту?
Більшість речей з цієї статті — безкоштовні: HTTPS через Let's Encrypt, fail2ban, security headers, 2FA, оновлення CMS. Платні елементи зазвичай: преміум security-плагін (~$100-200/рік), віддалене сховище для бекапів (від кількох доларів на місяць), якісний хостинг із вбудованим WAF та DDoS-захистом. Тобто річний бюджет на безпеку малого/середнього сайту цілком вкладається у $300-500. Для порівняння, відновлення після одного серйозного інциденту коштує від $500 до кількох тисяч плюс репутаційні втрати.
- Чи потрібен SSL/HTTPS, якщо на сайті немає форм і платежів?
Так. По-перше, Google з 2018 року позначає сайти без HTTPS як «Not secure» у Chrome — це впливає на довіру користувачів. По-друге, без HTTPS немає підтримки HTTP/2 і HTTP/3, тобто сайт буде помітно повільніший. По-третє, HTTPS захищає від injection-атак на рівні провайдера (так, провайдери інколи вставляють у HTTP-трафік свою рекламу). Сертифікат через Let's Encrypt — безкоштовний, налаштовується за 5 хвилин, причин не ставити просто немає.
- Чи допоможе Cloudflare замість всього іншого?
Cloudflare закриває частину завдань: CDN, базовий DDoS-захист, WAF на безкоштовному тарифі — обмежений, на платних — повноцінний. Але це не заміна локальної гігієни: оновленням, паролям, бекапам, security headers, fail2ban. Якщо хтось зайде в адмінку з украденим паролем — Cloudflare не зупинить. Це додатковий шар, який добре працює разом з усім, описаним вище, а не замість.