Безопасность 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! самостоятельно не может справиться с этой задачей. Можно было бы, конечно, загрузить с 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-сайта на высоком уровне.

Похожие материалы