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

 

 

Учитывая, что XSS инъекция является серьёзной угрозой для сайтов, защита от неё так же важна как и защита от SQL инъекций. RSFirewall поможет Вам минимизировать вероятность XSS инъекции.

Основные настройки

Настройки Joomla RSFirewall разделены на семь вкладок.

  1. Доступ к RSFirewall.
  2. Чёрный список.
  3. Административный пароль.
  4. Доступ в админ панель.
  5. Проверка системы.
  6. Активный сканер.
  7. Журнал событий.

Рассмотрим их более детально.

Доступ к RSFirewall

Если к административной части сайта имеют доступ несколько людей, то полезно будет защитить параметры RSFirewall от изменений при помощи пароля. Для этого в компоненте предусмотрена вкладка Доступ к RSFirewall (рисунок ниже).

Доступ к RSFirewall

Для доступа к настройкам расширения, необходимо будет ввести пароль. Его минимальная длина должна быть 6 символов. Все попытки доступа к RSFirewall фиксируются в журнале событий.

Чёрный список

На вкладке Чёрный список (рисунок ниже), Вы можете указать список IP адресов, для которых будет заблокирован доступ к Вашему сайту. Это могут быть IP адреса, с которых были зафиксированы попытки вредоносных действий относительно Вашего сайта.

Чёрный список

Административный пароль

На вкладке Административный пароль (рисунок ниже) Вы сможете добавить дополнительную форму авторизации для доступа к административной части сайта.

Административный пароль

Перед тем, как ввести пароль в форму авторизации непосредственно на странице входа в административную часть сайта, Вам будет необходимо ввести дополнительный пароль. Его минимальная длина должна быть 6 символов. Также есть возможность создать «белый список» IP адресов, для которых ввод дополнительного пароля будет отключён. Можно задавать диапазон. Например, 192.168.0.* это означает, что все IP адреса от 192.168.0.1 до 192.168.0.256 будут в «белом списке».

Доступ в админ панель

Вкладка Доступ в админ панель (рисунок ниже) позволяет определить возможность доступа к административной зоне сайта того или иного пользователя. А так же назначить доступ этого пользователя к различным компонентам.

Доступ в админ панель

Обязательно добавьте себя в список пользователей, которым разрешён вход в административную панель сайта.

Помимо этого рекомендую ознакомиться с описанием компонента защиты админки Joomla jSecure Authentication.

Проверка системы

Вкладка Проверка системы (рисунок ниже) даёт возможность указать, какое количество файлов и папок нужно учитывать при проверке системы наличия уязвимостей (описано в статье выше).

Проверка системы

Учтите, что указав папку в исключениях, Вы тем самым исключите из проверки все вложенные файлы и папки. По умолчанию количество проверяемых файлов\папок 300. Если указать слишком большое значение, то проверка может быть слишком длительной и потребовать много серверных ресурсов. Для решения проблем, возникших в ходе проверки системы, рекомендуется понизить данное значение.

Активный сканер

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

Активный сканер

  • Если у Вас возникли проблемы с Активный сканер, то есть возможность полностью отключить все активные функции защиты сайта.
  • Активировать CAPTCHA после определённого количества неудачных входов. Можно задать значение неудачных попыток доступа к административной панели сайта. Это поможет защитить сайт от автоматического подбора логина и пароля доступа. Для добавления капчи к другим частям сайта можно использовать osolCaptcha.
  • Защищать от DoS атак. Защита от роботов (ботов), которые делают множество одновременных запросов к Вашему сайту. Поможет защитить сайт от перегрузки и выхода из строя.
  • Проверять юзер-агенты на общие вирусы. Блокирует попытки автоматического анализа сайта скриптами на наличие известных уязвимостей.
  • Преобразование адресов электронной почты из простого текста в изображение. Позволяет автоматически преобразовывать указанные на сайте адреса электронной почты в изображения. Это защитит от сбора и помещения адресов в спам базы.
  • Удалять генератор мета тегов из шаблона. Автоматически убирает мета тег Joomla из кода сайта. Поможет защитить от автоматического определения того, что Ваш сайт сделан на Joomla. В свою очередь это снизит вероятность взлома сайта роботом при помощи известных уязвимостей в Joomla.
  • Проверять системные переменные на SQL-инъекции. Проверка параметров GET и POST на наличие SQL команд. Повысит защищённость Вашего сайта от SQL-инъекций.
  • Пропустить следующие компоненты во время проверки на SQL-инъекции. Если у Вас есть компонент для управления базой данных, который позволяет Вам использовать SQL команды (например. SELECT * FROM zrn_users), Вы можете указать его для того, чтобы Joomla RSFirewall не принял действия этого расширения за атаку с использованием SQL кода.
  • Проверять системные переменные на PHP-инъекции. Переменные GET и POST будут проверены, если они содержат атаки директивного пересечения (../../) или ссылки на другие сайты. Независимо от использования протокола HTTP или HTTPS. Повысит защищённость Вашего сайта от PHP-инъекций.
  • Пропустить следующие компоненты во время проверки на PHP инъекции. Если Вы используете компоненты управления баннерами, которые используют адреса веб-сайтов (например: com_something?goto=http://aleksius.com), то Вы можете выбрать их из списка для того, чтобы RSFirewall не рассматривал их действия как PHP инъекцию.
  • Проверять системные переменные на Javascript инъекции. Проверка переменных GET и POST на наличие тега AND. Повысит защищённость Вашего сайта от Javascript-инъекций.
  • Пропустить следующие компоненты во время проверки на Javascript инъекции. Если Вы используете компонент, который позволяет пользователям использовать WYSIWYG редактор, то Вы можете выбрать его из списка для того, чтобы RSFirewall не рассматривал его действия как Javascript инъекции.
  • Проверять, есть ли у загруженных файлов несколько расширений. Файл с несколькими расширениями – это попытка скрыть вредоносную программу. Которая может маскироваться под легальную и безвредную. Двойное расширение затрудняет анализ файла. Загрузив файл с несколькими расширениями, Вы или любой пользователь можете принять его за «полезный». Но на самом деле это будет вирус. Для создания вложений к статьям можно использовать, например, компонент Attachments. В нём есть ряд возможностей, которые помогут обезопасить загружаемые на сайт файлы.
  • Проверять загруженные файлы на наличие известных вредоносных программ. Проверять загруженные файлы на наличие известных вредоносных программ, таких как PHP шелл скриптов.
  • Не загружать файлы со следующими расширениями. При помощи данной функции Вы можете запретить загрузку файлов с определёнными расширениями на Ваш сайт.
  • Проверять целостность базовых файлов Joomla. Проверка целостности файлов ядра Joomla. Поможет предотвратить их изменение.
  • Контролировать следующие файлы на изменения. Вы можете указать список файлов, изменения которых следует отслеживать. Если RSFirewall обнаружит изменения, то Вам будет отослано уведомление на адрес электронной почты, и событие будет записано в системном журнале. Это очень полезно, если Вы хотите, например, предотвратить заражения Ваших пользователей в результате инфицирования загружаемых с Вашего сайта файлов.
  • Защитить следующих пользователей от любых изменений. RSFirewall будет отслеживать учётные записи всех пользователей, которые имеют доступ к административной панели сайта, на наличие изменений. И не даст их сохранить. Если Вам необходимо внести изменения в учётную запись администратора, то, сперва, необходимо отключить его отслеживание в Joomla RSFirewall.

Журнал событий

Вкладка Журнал событий (рисунок ниже) содержит настройки, которые дают возможность указать один или несколько адресов электронной почты, на которые будут приходить оповещения по безопасности.

Журнал событий

На этой же вкладке можно задать уровень события (Низкий, Средний, Высокий, Критический) для которого необходимо высылать оповещение. Рекомендуется выбрать низкий уровень. Это даст возможность быть в курсе всех событий, касающихся RSFirewall. И как следствие, большинства событий, касающихся безопасности Вашего сайта. На рисунке ниже показан пример такого письма.

Пример письма

Также Вы можете указать количество дней для хранения событий в журнале и количество событий, которые будут показаны в Обзоре системы и модуле на главной странице административной панели (рисунок ниже).

Модуль на главной странице административной панели

Настройки RSS-каналов и обновления

Для того, чтобы оставаться в курсе всех событий о Joomla RSFirewall, в нём есть вкладки Настройки RSS-каналов и Обновления (рисунки ниже).

Настройки RSS-каналов

Обновления

На вкладке Настройки RSS-каналов можно добавить, удалить или изменить новостной канал. А вкладка Обновления поможет легко отслеживать новые версии RSFirewall, акции и новости по продуктам RSjoomla.

На сайте RSjoomla можно скачать дополнительный модуль для RSFirewall. Он выводит логотип расширения во фронтальной части сайта (рисунок ниже).

Модуль RSFirewall

В целях конфиденциальности (сохранения информации о том, на чём сделан Ваш сайт и какие расширения на нём используются) советую отказаться от его размещения. Так как в противном случае есть возможность выяснить, что сайт сделан именно на Joomla (и на какой из 4-х версий 2.5, 1.7, 1.6, 1.5).

Примечания по работе с RSFirewall

При проверке на наличие уязвимостей безопасности RSFirewall анализирует настройки PHP и рекомендует использовать open_basedir. Но не всё так просто. Если настройка open_basedir будет произведена некорректно, то Ваш сайт перестанет работать. Необходимо указать в разрешённых для записи директориях следующие: временная папка файлов сервера, корневая папка Вашего сайта, временная папка файлов сайта, папка логов сайта, папка с файлом конфигурации сайта (если он (configuration.php) находится за пределами папки с сайтом). Рассмотрим пример настройки файла конфигурации PHP (php.ini). Папка «dannue» выступает аналогом папки «public_html».

  • Путь к временной папке файлов сервер «/tmp». Для многих серверов по умолчанию он именно такой. Его можно уточнить в службе технической поддержки Вашего хостинга.
  • Папка с Вашим сайтом находится по адресу «/caytu/myak/dannue/aleksius.com». Где aleksius.com – папка, в которой непосредственно находится Ваш сайт. caytu/myak/dannue – путь к папке с сайтом на сервере. Его можно уточнить в панели управления хостингом или в службе технической поддержки Вашего хостинга.
  • Папка временных файлов Вашего сайта «/caytu/myak/dannue/aleksius.com/tmp». Лучше держать её за пределами папки с сайтом.
  • Папка с логами Вашего сайта «/caytu/myak/dannue/aleksius.com/log». Лучше держать её за пределами папки с сайтом.

Тогда строка в php.ini для настройки корректной работы сайта будет выглядеть так (разделитель знак двоеточия «:»).

open_basedir=/tmp:/caytu/myak/dannue/aleksius.com: /caytu/myak/dannue/aleksius.com/tmp:/caytu/myak/dannue/aleksius.com/log

Теперь рассмотрим вариант, когда файл configuration.php находиться за приделами паки с сайтом в папке «sekret». Также поместим в эту папку папки «tmp» и «log». В этом случае.

  • Путь к временной папке файлов сервер «/tmp».
  • Папка с Вашим сайтом находится по адресу «/caytu/myak/dannue/aleksius.com».
  • Папка временных файлов Вашего сайта «/caytu/myak/sekret/tmp».
  • Папка с логами Вашего сайта «/caytu/myak/sekret/log».
  • Путь к конфигурационному файлу сайта (configuration.php) «/caytu/myak/sekret».

Тогда строка в php.ini для настройки корректной работы сайта будет выглядеть так.

open_basedir=/tmp:/caytu/myak/dannue/aleksius.com: /caytu/myak/sekret/tmp:/caytu/myak/sekret/log:/caytu/myak/dannue/aleksius.com/../../secret

В данном случае конструкция «/../../» указывает на то, что файл configuration.php для сайта находится на два уровня выше.

В случае, если настройки PHP производятся не для конкретного сайта, а для всего хостинг-аккаунта, на котором расположено два, три и более сайтов, то в файл php.ini нужно прописать исключения для всех корневых папок сайтов, временных папок файлов каждого сайта, папок логов сайтов, папок с файлом конфигурации каждого отдельного сайта (если они (configuration.php) находится за пределами папки с сайтом).

Но даже сделав это и проверив работоспособность всех сайтов, Вы можете столкнуться с тем, что установка расширений и шаблонов на сайт, а также их автоматическое обновление, невозможно. В этом случае Вам придется загружать инсталляционный файл расширений и\или шаблона на сервер через, например, FTP, а затем производить установку, указав папку-источник («Установить из каталога»). Но возможно, что причина в отказе доступа к временной папке сервера. Это можно обойти, указав свою собственную папку временных файлов сервера для Вашего сайта или хостинг-аккаунта. Для этого, например, создайте папку в корне вашего хостинг-аккаунта и назовите её «moyvremtnnay». Добавьте в файл конфигурации PHP (php.ini) следующую строчку.

upload_tmp_dir=/caytu/myak/moyvremtnnay

Где «/caytu/myak» - это путь к Вашему хостинг-акаунту на сайте.

Также рекомендуется вынести файл с настройками Joomla «configuration.php» за пределы public_html. В интернете есть множество способов, как это сделать. Рассмотрю один из них (на примере Joomla 1.6, 1.7, 2.5). До того как, приступить к выполнению указанных ниже действий, убедитесь в том, что у Вас есть актуальная рабочая копия всего сайта на локальном компьютере. Лучше потренироваться на копии сайта.

  1. Создайте в корне Вашего хостинг-аккаунта папку «nastroyka».
  2. Скопируйте в неё файл «configuration.php». Можете сразу назначить ему права 444, а для папки - 555.
  3. Перейдите в папку с Вашим сайтом и зайдите в \administrator\includes (НЕ в папку includes в корне сайта). Откройте файл defines.php.
  4. В нём найдите строку (приблизительно 21-я) «define('JPATH_CONFIGURATION', JPATH_ROOT);» и замените на «define('JPATH_CONFIGURATION', JPATH_ROOT.DS.'..'.DS.'..'.DS.'nastroyka');». Конструкция «'..'.DS.'..'.DS.'» указывает на то, что файл configuration.php для сайта находится на два уровня выше. Сохраните изменения. Откройте файл заново и убедитесь в том, что изменения сохранились.
  5. Можно проверить, всё ли Вы сделали правильно. Для этого зайдите в административную зону сайта. Если это удалось, то, скорее всего, всё работает нормально.
  6. Перейдите в папку с Вашим сайтом и зайдите в \administrator\includes. Откройте файл defines.php.
  7. Перейдите в папку с Вашим сайтом и зайдите в папку includes в корне сайта (НЕ в \administrator\includes). Откройте файл defines.php.
  8. В нём найдите строку (приблизительно 25-я) «define('JPATH_CONFIGURATION', JPATH_ROOT.DS.);» и замените на «define('JPATH_CONFIGURATION', JPATH_ROOT.DS.'..'.DS.'..'.DS.'nastroyka');». Сохраните изменения. Откройте файл заново и убедитесь в том, что изменения сохранились.
  9. Можно проверить, всё ли Вы сделали правильно. Для этого зайдите на сам сайт. Если это удалось, то, скорее всего, всё работает нормально.
  10. Теперь можно удалять файл configuration.php из корня сайта. Ещё раз убедитесь в работоспособности сайта и административной панели.

На официальном сайте RSjoomla Вы получите превосходную техническую поддержку (на английском языке). Вплоть до того, что сотрудники предложат Вам дать им доступ к Вашему сайту и помочь в решении возникшего вопроса по работе с их продуктом. На сайте много документации по RSFirewall, несколько (пять) обучающих видеоуроков и форум. К сожалению, всё это на английском языке. Также стоит отметить, что после выхода Joomla 2.5 прошло всего около восьми часов и разработчики Joomla RSFirewall выпустили новую версию своего расширения с полной поддержкой новой версии системы управления контентом.

Ещё раз отмечу, что XSS инъекция является серьёзной угрозой для сайтов, защита от неё так же важна как и защита от SQL инъекций.

Несмотря на то, что расширение платное и стоит относительно дорого, рекомендую обратить на него внимание всем владельцам и веб-мастерам коммерческих сайтов. Так как расширение того стоит и постоянно обновляется (с июня 2009 (по данным)), о чём свидетельствует активно изменяющийся список обновлений RSFirewall.

 

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