Безпека Drupal-сайту: як її перевірити і підвищити — блог Drudesk
050 640 98 44
support@drudesk.com

Перевірка та підвищення безпеки Drupal-сайту

Всі погодяться, що безпека для сайту — одне з найважливіших питань. Ми вже розповідали вам про нашу послугу з аудиту безпеки, а також про 5 критичних ризиків в системі безпеки Drupal 8. А тепер настав час для детального технічного блогу про безпеку Drupal-сайту, написаного розробником Drudesk. Надаємо йому слово.

При роботі над сайтом в розробників часто виникає потреба отримати ту чи іншу інформацію про стан сайту. Саме для таких потреб існує ряд корисних модулів.

Drupal-модуль “Hacked!”

Модуль Hacked! (https://www.drupal.org/project/hacked) дозволить виявити наявність змін в коді ядра Drupal’а та встановлених на сайті контрібних модулів і тем. Отримати таку інформацію буде досить корисно, наприклад, перед оновленням ядра, модулів чи тем, оскільки весь так званий похатчений код при оновленні буде замінено контрібним кодом, що в свою чергу може призвести до того, що сайт чи частина функціоналу сайту перестане коректно працювати.

Встановимо модуль Hacked!, перейдемо на сторінку з репортами та оберемо пункт меню “Hacked”. Почекаємо, поки виконається батч.

the hacked module

Приємний зелений колір дає зрозуміти, що ядро Drupal’а, встановлені контрібні модулі та тема відповідають контрібному коду.

Тепер внесемо зміни в код одного із контрібних модулів. Запустимо перевірку ще раз вручну (лінк “Check manually” вгорі сторінки). Дочекаємось завершення роботи батча та перевіримо результат.

the hacked module

Червоний колір сигналізує, що код встановленого модуля не відповідає контрібному. Також бачимо інформацію про кількість змінених та видалених файлів модуля. Виберемо “View details of change”, щоб отримати більше інформації. Відкриється список усіх файлів модуля, де можна буде побачити змінені та видалені файли.

the hacked module

Проте модуль Hacked! дозволяє виявити тільки наявність кастомного коду, а не сам код. Що робити, наприклад, у випадку якщо було знайдено похатчений контрібний модуль, але цей модуль все одно необхідно оновити? Правильним шляхом в такому випадку було б винести функціонал, реалізований через похатчений код, в окремий модуль, і тоді оновити контрібний модуль. Для цього потрібно знайти цей похатчений код. Модуль Hacked! cамостійно не може впоратись із цим завданням. Можна було б, звісно, завантажити з drupal.org цей же модуль цієї ж версії і порівняти його зі встановленим на сайті модулем через git. Але знову ж таки, що робити, якщо на сайті не один похатчений модуль, а 5 чи 10? В такому випадку на допомогу Hacked! прийде модуль Diff (https://www.drupal.org/project/diff).

Drupal-модуль “Diff”

Встановимо модуль Diff та подивимось, чи з’явились якісь додаткові можливості. Перейдемо до списку файлів похатченого модуля і побачимо, що для файлу з кастомним кодом доступне посилання. Перейдемо за цим посиланням.

the diff module

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

Drupal-модуль “Devel”

Ще один дуже корисний для тестування та розробки модуль – Devel (https://www.drupal.org/project/devel). Модуль надає багато різноманітних можливостей для розробки, відлагодження та оптимізації сайту. До його складу входять ще два модулі: Devel generate та Devel Node Access. Модуль Devel generate дає можливість генерувати тестовий контент та коментарі, користувачів, меню, словники та терміни таксономії. Модуль Devel Node Access показує детальну інформацію про права доступу до нод. Не будемо зупинятись на описі можливостей модуля Devel. Детальніше з цим можна ознайомитись ось тут.

Drupal-модуль “Masquerade”

Час від часу виникає необхідність тестувати сайт під різними користувачами. Це можна зробити, використовуючи можливості модуля Devel generate. Проте можна обійтись і без створення нових користувачів, скориставшись уже існуючими. Один із способів авторизуватись під будь яким користувачем на сайті — це використання Drush. Проте, якщо тестувати сайт в такий спосіб доводиться досить часто, зручніше скористатись модулем Masquerade (https://www.drupal.org/project/masquerade). Цей модуль надає користувачам з необхідними правами можливість авторизовуватись під будь-яким іншим користувачем через інтерфейс сайту без введення паролю.

Для цього потрібно встановити модуль Masquerade, перейти до списку блоків та знайти блок з однойменною назвою. Перемістити його у необхідний регіон. Все. Можна користуватись.

Drupal-модуль “Schema”

Модуль Schema (https://www.drupal.org/project/schema) надає всеохоплюючу інформацію про структуру бази даних сайту.

Модуль дозволяє порівняти структуру таблиць бази даних сайту зі структурою цих же таблиць, прописаною в коді через hook_schema. Це можна зробити на сторінці налаштувань модуля, перейшовши на вкладку “COMPARE”. Зокрема, можна побачити список таблиць, інформація про які в hook_schema збігається з поточною структурою бази даних сайту.

the schema module

Тепер оберемо якийсь із включених модулів, який при встановленні створює таблиці в базі даних, наприклад, модуль Views, та вимкнемо його. Оновимо сторінку налаштувань модуля Schema та подивимось, що змінилось.

the schema module

У підрозділі “EXTRA” з’явились 4 таблиці модуля Views, які присутні в базі даних, проте не використовуються, тому що сам модуль був вимкнений, але не видалений.

Подивимось, що буде, якщо внести зміни в структуру бази даних сайту вручну. Зайдемо в phpMyAdmin, перейдемо до баз даних нашого сайту, виберемо будь-яку таблицю в ній, наприклад таблицю “batch”, та змінимо тип поля “batch” з LONGBLOB на BLOB. Збережемо зміни та знову оновимо сторінку налаштувань модуля.

the schema module

В підрозділі “MISMATCH” з’явилась таблиця “batch” з інформацією про те, чим саме її структура відрізняється від прописаної в hook_schema.

Перейдемо на наступну вкладку під назвою “DESCRIBE”. Тут можна побачити список таблиць з інформацією про структуру таблиці Drupal’а та про те, до якого модуля ця таблиця відноситься.

the schema module

На вкладці “INSPECT” можна побачити інформацію про структуру таблиць живої бази даних сайту. Вкладка “SQL” показує SQL-запит для створення таблиць, оголошених модулями. Вкладка “SHOW” показує структуру таблиць у вигляді масиву.

Drupal-модуль “Security Kit”

Модуль Security Kit (https://www.drupal.org/project/seckit) дозволяє знизити загрозу від різноманітних вразливостей веб-додатків. Зокрема:

  • дозволяє налаштувати захист сайту від атак міжсайтового скриптингу. Є можливість вказати джерела контенту, які можна вважати надійними, та обмежити їхні можливості;
  • налаштувати X-XSS-захист;
  • зменшити ризики від таких вразливостей, як: Cross-site Request Forgery та Clickjacking;
  • підвищити SSL/TLS безпеку тощо.

Модулі, включені в ядро Drupal’а

Модуль Syslog дозволяє налаштувати виведення логів та помилок сайту.

Модуль Database logging дозволяє переглядати список логів сайту, надає можливість фільтрувати їх за типом та рівнем.

Перевірити доступні контрібні оновлення можна встановивши модуль Update manager.

Існують конкретні правила, яких завжди слід дотримуватись при розробці функціоналу сайту. В протилежному випадку в будь-який момент можуть виникнути ускладнення в його роботі. Для уникнення таких проблем не буде зайвим перевіряти сайт описаними вище способами.

Сподіваємося, що це допоможе вам підтримувати безпеку вашого Drupal-сайту на високому рівні.