Всім привіт. Сьогодні вирішив написати докладну статтю про те, як ви можете захистити свій блог від атаки хакерів або різних спамерських пошукових роботів. Я вже про це писав, але зовсім недавно я з штовхнув з атакою на блог, яка триває вже майже тиждень. В її результаті мій блог був часто недоступний або вантажився дуже довго, а як ви розумієте, це відразу позначається на позиціях.
Про різні способи захисту блогу ви можете ознайомитися в серії моїх статей:
- 5 способів захисту блогу на WordPress
- Відбий будь-яку хакерську атаку
І так, я знаю про атаку завдяки Яндекс Метриці, яка стоїть на сайті. Від них я отримав ось такий лист:
Почав все перевіряти. Зайшов в адмін-панель свого хостингу і побачив таку картинку:
Тут видно, що йдуть атаки з одного IP і маскуються під боти Гугла. І ще атака йде через xml-rpc. Як від цього всього позбутися я розповім далі.
Служба підтримки МакХост порадила мені встановити плагін iThemes Security (колишній Better WP Security).
Налаштування плагіна iThemes Security
Писати про те, що він може робити і для чого потрібен, не буду. Просто скажу, що там більше 30 налаштувань, які допоможуть убезпечити блог.
Завантажити плагін можна або тут. або через адмін-панель блогу: плагіни> додати новий> в пошуку вводите iThemes Security, і встановлюєте плагін і активуєте його.
Коли ви зайдете в настройки, ви побачите наступну панель:
Нижче будуть рекомендації, що потрібно виправити. Вони поділені за ступенем важливості. Червоним виділено те, що потрібно обов'язково виправити, жовтим - рекомендується виправити, синім - то, що можна не виправляти. Навпроти кожного пункту буде кнопка «fix it». Натискати її не рекомендую. Ми все зробимо з вами вручну.
Переходимо у вкладку Settings. Тут ви можете для зручності вашої роботи додати свій IP в білий список. Тиснете на кнопці і все.
Глобальні налаштування
Перш ніж що-небудь робити, зробіть резервну копію бази даних і скопіюйте на комп'ютер все змінювані файли.
Після настройки кожної секції обов'язково зберігайте> тиснемо> save changes.
Write to Files - ставимо тут обов'язково галочку, тим самим дозволяючи плагіну вносити зміни в файли wp-config і htaccess.
Host Lockout Message - тут відображається повідомлення, яке буде виводитися, коли буде блокуватися хост або комп'ютер.
User Lockout Message - повідомлення, яке виводиться заблокованого користувачеві.
Далі йдуть найбільш важливі настройки.
Blacklist Lookback Period - наскільки днів IP додається в чорний список.
Lockout Period - час у хвилинах, на яке користувач або хост блокуються при первинних порушеннях (без додавання в чорний список). Тобто якщо хтось невдало підбирає пароль до адмін-панелі, то він тимчасово блокується на 15 хвилин. Якщо після цього він продовжує спроби і отримує ще 2 тимчасових бана, то після цього хост або користувач відправляються в чорний список.
Log Type - тут ставимо File Only, щоб не перевантажувати базу даних.
Path to Log Files - шлях до файлом логів. Тут все ставиться автоматично.
Інші пункти не записуємо.
Hide Security Menu in Admin Bar - у вас в адмін-панелі вгорі буде вкладка Security. Якщо ви не хочете її бачити, то ставите в цьому пункті галочку.
З глобальними настройками розібралися. Рухаємося далі.
404 Detection - Виявлення помилок 404
Плагін відстежує, кому багаторазово видається помилка 404. Якщо це відбувається дуже часто, то плагін розуміє, що користувач сканує сайт для якихось цілей і блокує його.
Тут наведена базова інформація по блокуванню, яку ми вказали в глобальних налаштуваннях.
404 Detection - ставимо галочку, тобто активуємо функцію визначення таких помилок.
Minutes to Remember 404 - кількість хвилин, протягом якого записуються лоакути. Я поставив 10. Тобто якщо якийсь бот починає сканувати ваш сайт в пошуку вразливостей в протягом однієї хвилини і отримує помилки 404, потім робить перерву і через хвилину починає знову, то скоро він отримає бан.
Якщо ж він сканував сайт одну хвилину, а потім пішов на 10 хвилин, то коли він візьметься знову сканувати сайт, то буде розпізнано як новий. Тому я і поставив 10 хвилин.
Error Threshold - кількість помилок, після якого хост блокується. Коштує 20.
404 File / Folder White List - плагін сюди записав за замовчуванням файли і папки, які зазвичай можуть виводити помилку 404, тим самим він не буде їх враховувати. Якщо ви знаєте, що у вас на блозі якась папка видає помилку 404, то ви можете занести її сюди. Я залишив всі за замовчуванням
Ignored File Type - типи файлів, які будуть ігноруватися.
Banned Users - заблоковані користувачі
Default Blacklist - дана функція дозволяє заборонити доступ хостам і User Agent з певних сайтів, які були викриті в спамних атаках. Він розроблений порталом HackRepair. Я його поки що не став включати, тому що там в списках виявив User Agent, який називається Yandex. Експериментувати не став.
Brute Force Protection - захист від потужних атак
Обов'язково відзначаємо пункт Enable Local Brute Force Protection.
Max Login Attempts Per Host - максимальне число раз доступу до сайту для одного хоста. Я виставив 5 разів. Якщо хтось намагається ввести 5 разів поспіль невірні логін або пароль, то така людина блокується.
Max Login Attempts Per User - спроби для окремого користувача.
Minutes to Remember Bad Login - яка кількість часу плагін буде пам'ятати невдалі спроби зайти на ваш блог.
Automatically ban «admin» user - плагін буде автоматично блокувати користувачів, які вводять дефолтний ім'я admin.
Обов'язково видаліть ваше ім'я користувача як admin, тому що цей логін дається вам за замовчуванням, коли ви заводите блог. Це знають всі хакери.
Database Backups - резервні копії бази даних
Backup Full Database - ставимо галочку на повну резервну копію бази даних.
Backup Location - тут будуть зберігатися копії баз даних, якщо ви вибрали спосіб Save Locally.
Обов'язково поставте галочку навпроти Compress Backup Files. Файли бази даних будуть приходити до вас на пошту в стислому вигляді.
Exclude Tables - тут ви можете вказати таблиці, які не будуть зберігатися в базі даних. Це можуть бути таблиці, створювані будь-якими плагінами. За замовчуванням тут внесені таблиці, створювані самим плагіном iThemes Security. Я сюди більше нічого не став додавати. Якщо ви напевно знаєте, що якісь таблиці не потрібні для збереження, можете їх внести сюди.
Schedule Database Backups - активуємо функцію створення резервних копій за розкладом.
Backup Interval - інтервал. Я поставив кожні 3 дні. Ви можете поставити кожен день.
File Change Detection - визначення зміни файлів
Ця функція дозволяє визначати зміни, які вносяться в ваші файли. Плагін сканує їх і визначає, які зміни були внесені з моменту останнього сканування. Сам я поки що не став активувати цю функцію, але ви можете це зробити.
Split File Scanning - дана функція дозволяє розбити сканування на 7 частин, тобто по татко. Таким чином буде проведено рівномірний розподіл сканування протягом дня, що дозволить знизити навантаження на блог.
Include / Exclude Files and Folders - додавання / виключення папок і файлів для сканування. Наприклад, якщо у вас стоїть плагін кешування, то папку, куди зберігаються файли краще виключити з сканування, тому що плагін буде постійно визначати зміни і вашу пошту засипле повідомленнями. При наведенні на файл або папку в пункті Files and Folders List, у вас з'явиться знак мінуса в червоному кружечку. Вибираєте папку cache і натискаєте на нього. У мене просто не виявилося такої папки.
Тут вказуються типи файлів, які будуть ігноруватися. За замовчуванням там вже вказані деякі з них.
Email File Change Notifications - вам на пошту будуть надсилатися повідомлення про внесені зміни. Якщо їх робили не ви, то потрібно буде перевіряти.
Display File Change Admin Warning - в адмін-панелі блогу, відобразиться попередження про те, що якісь файли були змінені.
Hide Backend - активуємо функцію.
Інше залишаємо за замовчуванням.
Malware Scanning - пошук шкідливого ПЗ
Ця функція дозволяє сканувати вашу тему на предмет наявності шкідливого програмного забезпечення. Вам потрібно буде отримати API ключ за посиланням. Реєструєтеся на сайті virustotal.com, і отримуєте ключ. Цю функцію я не активував, тобто можна самому вручну перевірити на спеціалізованих сайтах. Крім того, у мене стоїть окремий плагін.
шифрування SSL
Дану функцію я не включав, так як у мене немає протоколу SSL. Упевнений, що і у вас його немає, тому ні в якому разі не вмикайте цю функцію. Про цей протокол можете почитати в моїй статті.
Strong Passwords - надійні паролі
Як придумувати надійні паролі, ви можете дізнатися з моєї статті: як придумати надійний пароль.
Активуємо функцію примусового створення надійних паролів. Вказуємо мінімальну роль, для якої повинен бути придуманий хороший пароль. Я поставив Адміністратор (паролі зберігати можна в keepass, або roboform).
System Tweaks - тонка настройка системи
Це додаткові налаштування для ще більш надійного захисту. Тут я сильно розписувати все не буду. Просто зробіть, як показано на малюнку.
WordPress Tweaks - Твики WordPress
Це також додаткові настройки.
Generator Meta Tag - видаляє мета тег generator з файлу header.php, тобто хакер не знатиме вашу версію WordPress.
EditURI Header - видаляє заголовок RSD (Really Simple Discovery). Якщо ви не інтегрували блог з віддаленими сервісами XML-RPC, такими як Flickr, то ця функція не потрібна. Я, на всякий випадок, активував її.
Display Random Version - дана функція, там де повинна відображатися версія WordPress, буде замінювати її на довільну. А там, де її можна видалити, то вона буде видалена.
Replace jQuery With a Safe Version - заміна версії jQuery на безпечну. Тут я нічого робити не став, тому що не зовсім зрозумів навіщо вона потрібна. У мене плагін взагалі не зміг визначити версію jQuery. Загалом, залишив без змін.
Login Error Messages - відключаємо повідомлення про помилки, коли користувач не може увійти в систему.
Force Unique Nickname - змушує користувачів придумувати унікальні імена, щоб вони не збігалися з тими, які зазвичай використовують боти або хакери.
Disable Extra User Archives - відключає архіви користувачів, якщо там 0 записів.
Основні налаштування зроблені. У пункті Advanced рекомендую зробити вам тільки наступне. Змініть WordPress Salts. Поставте галочку і натисніть «змінити». Про них ви можете детально почитати в інтернеті.
І ще один пункт. Обов'язково змініть префікс у таблиць бази даних. За замовчуванням вони мають ось такий префікс wp_. Обов'язково зробіть резервну копію бази даних. Відзначаєте галочку і жменю «змінити префікс».
Наша настройка практично завершена. Перейдіть на головну сторінку плагіна і подивіться, що у вас вийшло. Після всіх налаштувань у мене залишився лише один пункт, зазначений червоним. Це пошук шкідливого ПЗ. Натискати кнопку Fix it я не рекомендую.
І останній момент. В кінці сторінки ви можете побачити ось таку картину.
Якщо кілька IP, то пишемо їх з новою терміни, як зазначено в коді.
З повагою, Олександр Пузатих