Захист сайту на базі WordPress: просунуті заходи безпеки

В одній з попередніх публікацій ми вже розповідали про базові кроки для захисту сайтів на базі WordPress. У цій статті ми пропонуємо вам більш просунуті заходи безпеки.

Важливий дисклеймер: запропоновані нижче заходи безпеки можуть захистити ваш сайт від окремих типів атак або ускладнити задачу зловмисникам, однак, імовірно, вони вимагатимуть від вас більше часу й ресурсів на імплементацію. Може виявитися, що для вашого конкретного випадку ці поради будуть неактуальними. До того ж, частина цих заходів реалізовується через плагіни, а в плагінах, як ми пояснювали в попередній частині, можуть з’являтися вразливості. Рішення щодо того, де саме провести лінію в компромісі між безпекою та зручністю й економією ресурсів, можете прийняти тільки ви.

За рідкісними винятками, ми не називаємо конкретні плагіни, оскільки все змінюється, і плагін, який ми порадили сьогодні, завтра вже нестиме ризики. При виборі зважайте на популярність плагіна, відгуки, наскільки довго він існує, як давно оновлювався та чи сумісний з вашою версією ядра.

Безпека логіну

Логін та пароль ключ до сайту (особливо якщо це акаунт адміністратора). Варіантів, як ваш пароль може опинитись у зловмисника, багато. Ось лише деякі з них:

  • якщо пароль зовсім простий і короткий, його можна вгадати;
  • якщо він містить персональні дані, його можна підібрати, маючи про вас достатньо інформації;
  • якщо паролі зберігаються в незахищеному місці;
  • якщо ви використовуєте один і той же пароль на багатьох сайтах, то вразливими стають всі ваші акаунти з цим паролем;
  • окрім цього, зловмисники можуть дізнатися пароль за допомогою соціальної інженерії.

Як створювати ефективні паролі та де їх краще зберігати, ми розповідали в цій публікації.

Золотий стандарт боротьби з наслідками скомпрометованого пароля — двофакторна автентифікація (2FA). Це додатковий рівень захисту для вашого облікового запису на випадок, якщо зловмисник якимось чином дізнається ваш пароль. 2FA передбачає, що при вході в обліковий запис з нового пристрою чи браузера, окрім пароля, система вимагатиме додаткове підтвердження вашої особи.

Для сайтів на WordPress вона теж доступна для цього треба поставити і налаштувати відповідний плагін (їх є декілька різних).

Додаткові заходи безпеки, пов’язані з логіном:

  • плагіни, які дозволяють змінити стандартну адресу сторінки логіна /wp-admin на якусь іншу;
  • reCAPTCHA для сторінки логіна це ускладнить автоматичний перебір паролю;
  • WordPress використовує протокол XML-RPC, за допомогою якого теж можна авторизуватись. Якщо він не потрібен для конкретних плагінів (наприклад, його використовує плагін Jetpack), краще цей протокол відключити або заборонити до нього доступ;

Окрім цього, за замовчуванням список користувачів сайту разом з їхніми мейлами доступний за адресами: ваш.сайт/wp-json/wp/v2/users ваш.сайт/?rest_route=/wp/v2/users. Якщо інформація про користувачів вашого сайту не має бути публічною, можна його приховати. Є три способи, як це зробити:

  • використати плагін;
  • додати фільтр до теми сайту;
  • заблокувати ці шляхи на рівні вебсервера.
Безпека інших доступів до сайту

Адміністративна панель сайту не єдиний спосіб отримати можливість змінювати вміст сайту. Розробники зазвичай вносять зміни через протоколи SSH та FTP (або SFTP). З точки зору безпеки тут варто знати, що багато хостинг-провайдерів дають можливість обмежити доступ за цими протоколами за IP-адресою. Рекомендуємо цим скористатися, якщо це не заважає робочому процесу. До речі, якщо у вас є вибір між протоколами FTP та SFTP, друга опція завжди краща. 

Обмеження прав адміністраторів

Повернемось до адмінки сайту. Наступна рекомендація не вбереже від зламу, але вбереже від необачних дій та може зменшити наслідки зламу. 

За замовчуванням адміністраторам сайту доступні широкі можливості редагування: встановлювати й видаляти плагіни, а також редагувати файли теми. Якщо зловмисники отримають доступ до акаунта адміністратора, вони зможуть додати на сайт шкідливий код. 

Альтернативний підхід виглядає так: керування плагінами та редагування файлів теми відбувається на сервері (для цього є інструмент wp-cli), а адміністратори обмежуються в правах. 

Для цього потрібно відредагувати файл wp-config.php (він лежить у корені сайту та містить важливі налаштування).

Рядок define(‘DISALLOW_FILE_EDIT’, true); — забороняє редагування файлів теми

Рядок define(‘DISALLOW_FILE_MODS’, true); — забороняє редагування файлів теми та додавання і оновлення плагінів (їх все ще можна активувати та деактивувати)

Якщо заборона редагування файлів теми це майже завжди гарна ідея, то керування плагінами з адмінки часто доводиться зберігати, оскільки додавати та оновлювати файли напряму через командний рядок сервера не завжди можливо (це залежить від типу хостингу). 

Логування та моніторинг

Є різні типи логів, але в контексті сайту найважливішими є логи вебсервера текстові файли, у яких фіксуються всі запити до сайту. У великих компаніях логи постійно моніторять, щоб швидко реагувати на проблеми і, можливо, навіть схопити зловмисника за руку. Якщо ви читаєте цей матеріал, то навряд чи маєте для цього достатньо ресурсів. Та в будь-якому випадку логи можуть бути корисними для з’ясування причин інциденту, який вже стався, і уникнення його повторення в майбутньому. Тому вам варто знати, що ці логи ведуться, де саме вони лежать та за який період вони доступні (рекомендуємо за можливості збільшити цей період).

Окрім логів, моніторити можна також багато інших показників життєдіяльності сайту. Найбільш базова опція слідкувати за тим, щоб сайт взагалі був доступним. Для цього можна використовувати онлайн-сервіси, такі як UptimeRobot чи StatusCake. Вони моніторять час від часу сайт і, якщо він не відкривається, присилають вам сповіщення. 

«Безпекові» плагіни

Існують спеціалізовані плагіни, які пропонують вирішення питання безпеки у форматі «все в одному плагіні», наприклад, Wordfence, Sucuri тощо. Як правило, вони надають можливості, про які вже йшлося вище (двофакторна автентифікація, приховування списку користувачів тощо), а також можуть містити цілий ряд додаткових опцій, як-от: фіксування часу і локацій входу користувачів, блокування деяких поширених атак, сповіщення про зміну файлів, які не повинні змінюватись. 

З одного боку, такі плагіни дійсно можуть бути корисними, з іншого вони можуть споживати як ресурси сервера, так і ваші особисті. Вам доведеться приділити час, щоб розібратися з усіма опціями, а потім регулярно реагувати на сповіщення, які присилає цей плагін. Не всі сповіщення будуть стосуватись справді серйозних проблем, тому є небезпека перестати реагувати на них і пропустити справжній інцидент. 

Втім, такі плагіни можуть давати хибне відчуття безпеки. Саме по собі встановлення такого плагіна не гарантує, що нічого з вашим сайтом не станеться. Окрім того, що жоден плагін в принципі не може покрити 100% загроз, кожен із них має свої нюанси.Наприклад, Wordfence пропонує захист від атак та вірусів, однак у безплатній версії нові правила та ознаки шкідливого коду використовуються з 30-денним запізненням. 

Захист від DDoS-атак

DoS або DDoS-атаки спрямовані на те, щоб зробити ваш сайт недоступним. Для цього найчастіше застосовується метод закидання сайту величезною кількістю запитів, для чого часто обираються найбільш «важкі» запити. 

Якщо для вас такі атаки становлять реальну небезпеку, для захисту найкраще використовувати спеціалізовані сервіси. Хоча їх існує багато, імовірніше за все ви зупинитесь на Cloudflare. Він діє як щит між вашим сайтом та світом інтернет-небезпек, відбиваючи автоматизовані атаки. Для підключення вам потрібно буде зареєструвати акаунт на сервісі та дотримуватися інструкцій. У процесі вам знадобиться доступ до редагування ваших записів DNS, що доступне через адмінку реєстратора домену. 

Cloudflare містить багато різних опцій, однак їх можна ігнорувати і в разі атаки просто переключитись на «Under Attack Mode». Тоді сервіс почне перевіряти вхідні запити.

Після підключення до Cloudflare рекомендуємо змінити IP-адресу. Інакше зловмисники, які знають вашу справжню адресу, зможуть обходити захист.