Обзоры расширений Joomla

 

Если в предыдущих статьях «Защита Joomla (часть 1). Безопасный пароль» и «Защита Joomla (часть 2). Безопасный хостинг» затрагивались «общие» вопросы для статических и динамических сайтов, то в этой статье я рассмотрю меры повышения безопасности конкретно для Joomla (или по крайней мере для динамических сайтов на основе систем управления контентом). Однако организация доступа к FTP, базе данных сайта и панели управления хостингом актуальна для любого сайта.

Обновление Joomla и расширений

Вне зависимости от того, какую систему управления контентом Вы используете (платную или бесплатную, с открытым или закрытым исходным кодом), важно, чтобы она была актуальной версии. Под этим я имею в виду не только актуальность «линейки» программного продукта, например, Joomla 1.7 (13.10.2011), но и то, что эта версия обновлена до самой последней, доступной на официальном сайте разработчика, например, Joomla 1.7.2 (02.11.2011). Это является одним из важнейших факторов в повышении безопасности Вашего сайта. Если, например, для статических сайтов это может быть не так критично, то для систем управления контентом – крайне обязательно. Обновление до последней версии - это не только увеличение функциональности, быстродействия, стабильности, но и повышение безопасности и защищённости сайта от взлома.

Если просмотреть файл «CHANGELOG.php» в корне сайта на Joomla 1.5.23, то можно увидеть, что в среднем с каждым обновлением закрывается 1-2 критические уязвимости безопасности, которые активно эксплуатируются для взлома Joomla.

В Joomla проверка наличия обновлений и обновление самой системы управления контентом стала ещё проще. Появился целый раздел Обновление (Расширения - Менеджер расширений - Обновление). В нём можно просмотреть доступные обновления и приступить к их загрузке и установке.

Защита JoomlaСчитаю, что качественная защита Joomla 1.5 не возможна без её регулярного обновления.

Там же можно найти информацию о доступных обновлениях для сторонних расширений и языковых пакетов (локализаций).

Не рекомендую использовать различные «сборки» Joomla. В них уже установлены различные расширения (компоненты, модули, плагины), но неизвестно, что авторы таких «сборок» уделяли должное внимание подборке безопасных, стабильных и актуальных расширений.

Наряду с обновлением самой Joomla настоятельно рекомендую обновлять все сторонние расширения (компоненты, модули, плагины). Причём поиск обновлений стоит производить только на официальном сайте разработчика или же при помощи встроенных в сами расширения механизмов обновления (такими возможностями обладают, например, последние версии Community Builder, WEBO Site SpeedUp, AcyMailing, uddeIM (детальнее об этом расширении в статье «Обзор uddeIM (часть 1). Личные сообщения Joomla»), VirtueMart и так далее).

Однако при обновлении Вы можете столкнуться с рядом различных проблем. Например, потеря функциональности из-за несовместимости расширений. Именно поэтому до обновления я настоятельно рекомендую сделать полную резервную копию базы данных и корневого каталога сайта. Скачать её на свой компьютер и убедиться в её работоспособности. Протестируйте, по возможности, не только тот функционал сайта, который обеспечивало обновлённое расширение, но и весь сайт. А в случае с обновлением самой системы управления контентом тестирование всего сайта крайне желательна. В Joomla, и не только, можно посмотреть что именно было обновлено в новой версии и начать тестирование с этого (если есть возможность). На период обновления, особенно, если это «масштабное» обновление, можно поместить на сайт небольшое объявление о технических работах. Это даст понять пользователям, что это не постоянное нарушение в работе сайта, а временное. Желательно до обновления сайта и проведения «масштабных» технических работ, выяснить, когда именно Ваш сайт посещается меньше всего. Это можно сделать или при помощи таких сервисов как, например, Google Analytics, Яндекс Метрика или при помощи встроенных расширений в Ваш сайт. На этот период, при необходимости, можно запланировать работы и даже закрыть сайт на время их проведения.

Помните, что в случае, если Вы вносили изменения непосредственно в файлы самой Joomla или расширений, то при обновлении, они могут быть перезаписаны. Будьте очень внимательны. Проверьте, какие файлы будут заменяться.

Для полной уверенности настоятельно рекомендую сначала применить обновления для «тестового сайта». Под тестовым сайтом я понимаю максимально точную (и актуальную) копию Вашего сайта, которая находится в той же «серверной среде», что и основной сайт. Это даст Вам возможность выявить и устранить проблемы, не нарушая работу основного сайта. Более того, на тестовом сайте Вы сможете работать тогда, когда Вам удобно, не взирая на количество посетителей. Вариант с двумя сайтами более накладный и, возможно, более дорогостоящий. Но он того стоит.

Настоятельно рекомендую устанавливать только те расширения, которые Вам крайне необходимы. Не стоит устанавливать расширения, без которых можно обойтись. Помните, любое расширение – это потенциальная «дыра» в защите Вашего сайта от взлома. Чем меньше будет расширений, тем меньше способов взломать Ваш сайт путём эксплуатации уязвимости стороннего расширения.

Стоит отметить, что защита сайта Joomla путём регулярного и своевременного обновления самой CMS и всех сторонних расширений может занять у Вас много времени и усилий. Так как обновление версии Joomla иногда сопряжено с возникновением отклонений от нормального функционирования Вашего сайта. Но всё равно, обновление версии Joomla - важный момент в организации её защиты.

Хочу отметить, что в планах разработчика окончание поддержки Joomla 1.5 запланировано на апрель 2012 года. Поэтому всем, кто построил сайты на Joomla 1.5, стоит задуматься над переходом на Joomla 1.7. Так как прекращение поддержки означает прекращение выпусков обновлений безопасности (и не только) для системы управления контеном. Разработчики сторонних расширений рано или поздно также откажутся от поддержки своих программных продуктов для старой версии. Однако переход на новую версию может вызвать огромное количество проблем. Но считаю, что это очень приоритетная задача.

Настоятельно рекомендую обновлять саму систему управления контентом и все установленные расширения до последних версий с официальных сайтов разработчиков. Так как защита Joomla 1.5 и её обновления - это неразрывный вопрос.

Скрытие следов Joomla

Очень часто для проведения успешной атаки на сайт злоумышленнику необходимо знать, на какой системе управления контентом и на какой конкретно версии сделан Ваш сайт. Например, в Joomla 1.7.1 помимо 96 исправлений функциональности было внесено 3 исправления безопасности. Источник. Это значит, что теперь, как минимум, о трёх уязвимостях в Joomla 1.7 можно детально прочитать и начать ими пользоваться. Со временем, как показала практика, в интернете можно найти детальное описание с иллюстрациями и готовыми инструментами для взлома конкретной версии Joomla, основанных на уже известных и закрытых в последних версиях уязвимостях. Поэтому я рекомендую «держать в тайне» название самой системы управления контентом, её версию, названия и версии всех установленных в неё компонентов. Но для знающего человека выяснить, на какой системе управления построен Ваш сайт, а иногда и конкретно версию, не составляет труда. Но для затруднения определения названия системы управления контентом и её версии, рекомендую максимально тщательно скрывать все «следы» этой системы. Ниже, в виде списка, я перечислю те Joomla следы (для версии 1.5 и 1.7), которые легко обнаружить злоумышленнику (этот список не является исчерпывающим).

  1. Если Вы делали шаблон в Artisteer (детальнее об этой программе можно прочитать в следующих статьях «Обзор Artisteer (часть 1). Шаблоны Joomla 1.5», «Обзор Artisteer (часть 2). Создание Joomla шаблонов», «Обзор Artisteer (часть 3). Создание Wordpress шаблонов»), или покупали\качали с какого-либо сайта, проверьте, чтобы в коде шаблона не было упоминаний о том, для какой системы управления контентом он сделан и с какого сайта он взят. Или при помощи чего он сделан.
  2. Заблокируйте способ просмотра позиций модуля для шаблона сайта (например, aleksius.com/?tp=1).
  3. Замените пути к папке с логами сайта (logs) и путь к паке с временными файлами (temp).
  4. Замените стандартную иконку сайта Joomla.
  5. Замените стандартную картинку с логотипом Joomla на странице, когда сайт выключен (offline). Желательно, заменить и её имя (Joomla_logo_black.jpg)
  6. Запретите просматривать файл README.txt в корне Вашего сайта.
  7. Можно усложнить анализ сайта, сделав код страницы менее структурированным и легко-воспринимаемым для человека.
  8. Позаботьтесь о том, чтобы нельзя было просматривать содержимое стандартных папок Joomla (например, папки Components).
  9. Смените «стандартный» путь для перехода на страницу авторизации административной панели сайта (http://aleksius.com/administrator).
  10. Смените вид постраничной навигации.
  11. Смените вид страницы ошибки 404.
  12. Смените ссылки сайта со «стандартных» (http://aleksius.com/index.php?option=com_content&view=article&id=68:review-autoplay-media-studio-part-4&catid=20:miscellaneous&Itemid=123) на ЧПУ (http://aleksius.com/articles/miscellaneous/review-autoplay-media-studio-part-4).
  13. Уберите копирайт Joomla (Joomla! is Free Software released under the GNU/GPL License) в нижней части страницы.
  14. Уберите мета теги Joomla (описание и ключевые слова сайта) и тег generator.

Подробнее о том, как скрыть те или иные Joomla следы, я рассмотрю в следующих статьях. Так как эта тема заслуживает отдельного обсуждения.

Также рекомендую «держать в тайне» любые сведения о том, где (о Вашем хостинге) и в какой «серверной среде» (например, платформа, версия MySQL, версия PHP, веб-сервер) находится Ваш сайт.

Хочу отметить, что существуют сервисы, например, Builtwith.com, которые позволяют проанализировать сайт и выдать о нём массу информации, включая сведения о системе управления контентом. Как пример, хочу привести результат анализа сайта (14.10.2011) http://www.Joomla.org при помощи сервиса Builtwith.com. Безусловно, официальный сайт Joomla должен был быть сделан при помощи системы управления контентом Joomla. А вот, например, для Харьковского сайта компании Киевстар, можно было бы и убрать идентификатор Joomla. Пример отчёта анализа Харьковского сайта Киевстар (14.10.2011).

В некоторых статьях по безопасности Joomla первый пункт это «убираем следы Joomla». Что свидетельствует о важности данного вопроса.

Организация доступа к FTP, базе данных сайта и панели управления хостингом

Защита сайта Joomla без должной защиты FTP, базы данных и панели управления хостингом, на мой взгляд, невозможна. Настоятельно рекомендую ограничить доступ к панели управления хостингом и FTP сайта по определённому IP адресу или группе адресов. Например, в ISPmanager есть возможность ограничения доступа только по определённому\определённым IP адресам. Для этого на том компьютере, с которого Вы заходите в панель управления сайтом и\или FTP сайта должен быть статический IP адрес (его стоимость в месяц может составлять около 40 грн.). Но статический IP адрес Вашего компьютера - это не то же самое, что и выделенный IP адрес сайта. Статический IP адрес для компьютера нужно заказывать у Вашего Интернет-провайдера.

Ограничив доступ по определённому IP адресу, Вы тем самым повысите защищённость Вашего сайта. Так как для входа в панель управления хостингом и FTP сайта, даже зная логин и пароль, злоумышленнику придётся потрудиться над тем, чтобы выяснить и «подделать» свой IP адрес на Ваш. А в случае, если логин и пароль попали в руки малокомпетентного человека, который хочет навредить Вашему сайту, то это может стать для него непреодолимым барьером, так как для входа на сайт даже с действительными логином и паролем ему необходимо будет сделать это с Вашего компьютера.

Для ограничения доступа к FTP сайта Вам необходимо разместить в корневом каталоге файл .ftpaccess со следующим содержимым:

<Limit ALL>

Allow from ХХХ.ХХХ.ХХХ.ХХХ

Deny from all

</Limit>

Где ХХХ.ХХХ.ХХХ.ХХХ – Ваш IP адрес. Немного детальнее о настройке файла .ftpaccess можно прочитать на сайте Webhelpcenter.ru.

Несмотря на неудобства и возможные финансовые затраты, связанные со статическим IP адресом, я настоятельно рекомендую ограничить доступ к панели управления хостингом и FTP сайта при помощи фильтрации по IP.

Для того, чтобы повысить защищённость отдельных директорий Вашего сайта, например, папки с резервными копиями, отчётами и так далее, рекомендую использовать файл дополнительной конфигурации .htaccess для веб-сервера Apache. К его наиболее распространённым возможностям хочу отнести следующие:

  • открытие или закрытие доступа к каталогам без индексного файла.
  • Установка пароля на директорию - ограничить доступ по логину - паролю (htpasswd).
  • Закрыть внешние ссылки (с других сайтов) на архивы.
  • Запретить доступ к файлам определённого формата, или доступ к сайту в определённый промежуток времени.
  • Смена или добавление ещё несколько новых названий индексного файла.
  • Включение по мере необходимости проверки в страницах определённого формата - типа на наличии SSI, Perl, PHP и др. включений – директив.
  • Организация перенаправления - пересылку пользователя с одних адресов на другие - перенаправления пользователя на другую страницу.
  • Скрытие структуры каталогов сайта, отображающуюся в адресной строке браузера, или возможность сделать её более простой и наглядной для конечного пользователя (mod_Rewrite);
  • Управление роботами - ботами поисковых систем на сайте.
  • Перенос сайт на новый домен - смена домена.
  • Использование своих собственных общих страниц ошибок, например, как-то наиболее часто используемые:
    • 401 Authorization Required - Требуется авторизация.
    • 403 Forbidden - Доступ запрещён.
    • 404 Not Found - Документ не найден.
    • 500 Internal Server Error - Ошибка в работе сервера.
    • Смена кодировки страниц, отправляемых веб-сервером посетителям.
    • Запрет или настройка нужным образом кэширования веб сервера.
    • «Обучение» веб сервера пониманию дополнительных нужных Вам форматов (типов) файлов. И многое другое. Источник.

Более детально о работе и настройке .htaccess Вы можете прочитать на сайте Htaccess.net.ru. Хочу отметить, что панел управления хостингом, например, cPanel, обладает «графическим» режимом создания .htaccess с определёнными настройками. Например, для ограничения доступа к определённой директории Вы запускаете «пошагового мастера», указывая только путь к директории, логин и пароль. А сам файл и его содержимое генерирует cPanel.

На некоторых хостингах, для доступа к PHP My Admin, обязательно необходимо сперва пройти авторизацию в панели управления хостингом, а уже с неё попасть в PHP My Admin. В случае, если Вы закрыли доступ к панели управления хостингом при помощи фильтрации IP адреса, то и непосредственный доступ к базе данных так же будет более защищён.

Защита сайта Joomola путём обновления самой CMS более важный вопрос, чем скрытие следов системы управления содержимым. Даже не смотря на то, что многие статьи в интернете начинаются с фразы «убираем следы Joomla», считаю её обновление важнее.

В следующей статье «Защита Joomla (часть 4). Резервное копирование сайта» я рассмотрю более подробно назначение прав доступа к файлам и папкам сайта, организацию доступа к административной зоне сайта, важность и необходимость резервного копирования и логов.

 

Полезные ссылки:

Похожие статьи: