CMS Joomla! — одна з найбільш популярних безкоштовних систем керування вмістом сайту. І немає нічого дивного в тому, що хакери постійно намагаються її зламати.
Сама по собі, ця CMS володіє досить потужним захистом від злому, і так просто цей захист не оминути. За статистикою, зламують тільки 4,3% сайтів під управлінням CMS Joomla. У той час як сайтів на Wordpress зламують в рази більше — майже 90%.
Але є фактори, які можуть вплинути на безпеку Joomla! І в більшості випадків — це банальна неуважність, або некомпетентність адміністратора сайту.
Ця тема буде корисна абсолютно всім веб-розробникам (не тільки тим, хто створює сайти на Joomla), так як більшість способів злому сайту можуть бути застосовані до будь-якої CMS.
Цією статтею я починаю серію уроків з безпеки сайту. У цих уроках я буду не тільки розповідати, а й показувати як зловмисники шукають діри в безпеці вашого сайту. Ну а поки загальні рекомендації як забезпечити безпеку свого сайту, а також безпеку персональних даних своїх працівників і клієнтів.
Як захистити сайт Joomla від злому
- Завжди своєчасно оновлюйте CMS Joomla! За статистикою, майже 90% сайтів на Joomla (з тих 4,3% зламаних сайтів) зламували саме тому, що вони працювали на застарілій версії CMS. У кожній новій версії CMS Joomla допрацьовуються й усуваються колишні недоліки. Тому цілком логічно, що в самій новій версії CMS вразливостей менше.
- Використовуйте тільки перевірені і актуальні розширення для CMS Joomla! У багатьох випадках Joomla, WordPress, і інші CMS зламують саме через сторонні розширення (плагіни, компоненти і т.д.). Завжди стежте за тим, щоб встановлені розширення були найсвіжіші. І взагалі постарайтеся використовувати менше сторонніх розширень в Joomla. Адже ця CMS на самому початку володіє чималим функціоналом, і дуже багато можна зробити, не вдаючись до установки якихось доповнень.
- Увімкніть двоетапну (багатофакторну) аутентифікацію. Багатофакторна аутентифікація — це додатковий рівень безпеки крім вашого пароля. Таким чином, для входу в обліковий запис потрібно щось додаткове для перевірки особистості користувача — зазвичай це 6-значний код, що відправляється на електронну пошту, в текстовому повідомленні.
- Практикуйте принцип найменших привілеїв. Тобто намагайтеся давати іншим користувачам сайту, ті права, які їм потрібні для виконання певних функцій на сайті. Все те, що цим користувачам не знадобиться в роботі — прибирайте.
- Видаляйте неактивних користувачів. Тут я маю на увазі адміністраторів, або модераторів сайту, які вже не працюють з вашим сайтом. Адже дуже часто розробкою сайту займається кілька людей. Але з часом, хтось іде з проекту, а хтось новий приходить. Або до розробки сайту можуть тимчасово залучатися сторонні веб-розробники. Так ось коли людина йде з проєкту, потрібно відразу видаляти її аккаунт. Адже якщо хакер зламає цей аккаунт, то він отримає всі права доступні цьому користувачеві.
- Постійно стежте за своїм сайтом. Це може допомогти вам визначити початкове проникнення, навіть до того, як зловмисник ввів на сайт шкідливі дані. Звертайте увагу на те, хто входить в панель управління сайтом; чи повинен був цей чоловік увійти в систему; чому він змінив той, чи інший пост; чому він входить в систему, коли повинен в цей час спати; хто встановив той, чи інший плагін; для чого він це зробив і багато іншого.
- Регулярно робіть Backup (резервне копіювання) вашого сайту. Навіть незважаючи на те, що практично всі сучасні хостинг-провайдери роблять резервні копії, встановіть для себе правило, з яким-небудь певним проміжком часу робити власну резервну копію. Статися може всяке, і у вас завжди повинна бути можливість відновити свій сайт з резервної копії. Наприклад, я щомісяця роблю резервну копію свого сайту. Плюс перед кожним оновленням CMS, або якого-небудь розширення, я теж в обов'язковому порядку роблю Backup. Це робиться на той випадок, якщо в ході оновлення, що щось піде не так і сайт перестане працювати.
- Використовуйте HTTPS (SSL-сертифікат). З сертифікатом SSL ваш веб-сайт буде використовувати протокол HTTPS для безпечної передачі інформації між точкою A (браузер) і точкою B (веб-сервер). Це дуже важливо при передачі конфіденційної інформації, такої як дані кредитної картки, на сторінках оформлення замовлення, а також особиста інформація в формах входу і в контактних формах. Звичайно ж SSL не захистить ваш сайт від злому, але він захистить ваші дані при їх передачі. І в комплексі з іншими заходами безпеки, виконання цієї умови однозначно дасть результат.
- Обмежте доступ до важливих каталогів сайту. Наприклад, можна повністю закрити доступ до каталогу administrator, створивши в ньому файл .htaccess і прописавши там рядок Deny from ALL. А можна дозволити доступ до цього каталогу тільки з певних IP, прописавши в файлі .htaccess рядок Allow from [тут пишемо дозволені IP-адреси]. Цей спосіб я використовую, коли кудись їду. Я адмініструю сайт самостійно і крім мене в панель управління сайтом ніхто не входить. Тому на час відпустки я повністю закриваю до неї доступ.
- Вимкніть в панелі управління сайтом повідомлення про помилки. Звичайно ж робити це потрібно вже після того, як ви повністю налаштували сайт і переконалися в тому, що він працює коректно (тобто протестували його якийсь період часу). Якщо не відключати повідомлення про помилки, то в разі їх виникнення, хакер може побачити важливу інформацію. І це допоможе йому зламати ваш сайт.
- Закрийте доступ до сайту по FTP (або обмежте його). Я завжди закриваю доступ до сайту по FTP, і відкриваю доступ тільки тоді, коли мені потрібно завантажити файли на сайт саме по FTP. Це трапляється не так часто. А ось рівень безпеки сайту від такого запобіжного заходу підвищується в рази.
- Задайте унікальне ім'я користувача та встановіть надійний пароль адміністратора сайту. Не використовуйте в якості логіна слова admin, joomla, user, superuser, moder, moderator і т.д. Також не використовуйте прості паролі: пароль тільки з цифр, пароль у вигляді вашого дня народження, пароль у вигляді вашого номера телефону. Пароль повинен складатися з букв, цифр і спеціальних символів.
- Нікому не показуйте структуру бази даних вашого сайту. Знаючи префікс бази даних, досвідчений хакер зможе знайти лазівки і зламати ваш сайт. Раніше за замовчуванням, система виставляла префікс бази даних jos і хакери знайшли спосіб це використовувати в своїх цілях. Зараз при установці Joomla цей префікс генерується рандомно, що ускладнює зловмисникам злом сайту на CMS Joomla.
- Не використовуйте в якості логіна і пароля бази даних слова root, або admin. Ці варіанти в першу чергу буде пробувати хакер, який дізнається ім'я бази даних вашого сайту. Трохи пізніше я покажу вам які найбільш часті запити роблять зловмисники, коли намагаються знайти уразливості на вашому сайті.
- Не зберігайте на сайті файли з паролями та іншою важливою інформацією. Пошукова система може проіндексувати ці файли і тоді зловмисникові не складе труднощів зламати ваш сайт. Всього лише ввівши в пошуку запит «Паролі filetype: xls» ми можемо отримати проіндексовані пошуковою системою файли Excel в яких можуть зберігатися паролі. Так можна знайти і інші документи з особистою інформацією людей, і використовувати її в своїх цілях. Тому я рекомендую взагалі не зберігати подібні файли в корені сайту. А якщо вже дуже сильно треба зберігати такий файл на сайті, то подбайте про те, щоб цей файл не індексувався пошуковою системою, і щоб доступ до нього був обмежений паролем.
- Робіть сайт спочатку на локальному сервері. І тільки коли вже все готово і всі помилки виправлені, запускайте його на хостингу. Справа в тому, що пошукова система може проіндексувати ваш сайт з помилками і додати ці сторінки в свій кеш. Хакер, який націлений на те, щоб зламати ваш сайт, спробує дістати такі сторінки з кешу Google, або Яндекс. А якщо на цих сторінках будуть помилки, то він звичайно ж їх побачить. У повідомленнях про помилку може бути така важлива інформація як ім'я бази даних, або список користувачів. Подивитися сторінку, яку додав собі в кеш Google, можна натиснувши на іконку поруч з результатом пошуку, і вибравши потім «Збережена копія».
- Ніколи не залишайте на сайті старі файли з розширенням bac, bak, або old. Також не залишайте на сайті резервні копії сайту, і файли, що містять в своєму імені old, bac, bak, або admin.
Відео по безпеці сайта на Joomla!
Ну що ж. Ми розглянули всі можливі на сьогоднішній день способи захистити свій сайт Joomla від злому (звичайно ж не вдаючись до встановлення якихось спеціальних розширень).
Може хтось скаже, що я надмірно фанатично ставлюся до безпеки сайту. Але погодьтеся, що краще перестрахуватися, ніж втратити важливу інформацію, або втратити свою репутацію в наслідок шахрайських дій, вчинених зловмисниками на вашому сайті. Адже якщо через ваш сайт почнуть поширювати спам, або шкідливе програмне забезпечення, то ви як програміст, і ваша компанія в цілому прославитесь своєю некомпетентністю і ненадійністю.