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

 

 

RSFirewall – комплексный компонент для защиты Joomla от SQL, PHP, LFI, XSS инъекций (RCE – удалённое выполнение кода), спама, DoS атак, подбора паролей (brute-force) и доступа к админке сайта в режиме реального времени. Также расширение укомплектовано специализированным антивирусом и анализатором целостности файлов самой CMS Joomla. В его арсенале есть журнал попыток атак, модуль проверки защищённости сайта от взлома и чёрный/белый списки. RSFirewall весьма гибко настраивается в плане исключений компонентов, URL адресов и браузеров (user agent). Плюс, он позволяет блокировать доступ к сайту по IP, странам/континентам или по юзер агентам (user agent). И это не исчерпывающий список возможностей компонента по защите сайта от взлома. Бонусом является наличие хорошей технической поддержки и документации на английском языке. Сам компонент, его плагины и модуль переведены на русский язык.

Использую RSFirewall с января 2012 (ещё на Joomla 2.5) на своих и клиентских сайтах. Пробовал расширение на сайтах под управление Joomla 1.5. За всё это время компонент отлично себя зарекомендовал в плане защиты сайтов. А когда появился антивирус, то компонент стал помогать в плане поиска подозрительного кода (поиск вирусов). Отмечу, что 100% гарантии защиты это или другое программное обеспечение не даёт. Не надо ждать от RSFirewall чуда. Он не сделает всю работу по защите за Вас и, тем более, не вылечит уже заражённые сайты. Безопасность сайта – это комплексный регулярно проводимый набор мероприятий. Часть этих мероприятий описаны в 12-ти статьях, начиная с «Защита Joomla (часть 1). Безопасный пароль». И даже всё описанное не гарантирует 100% защиты.

В предыдущих статьях «Обзор RSFirewall (часть 1). Защита от SQL инъекций» и «Обзор RSFirewall (часть 2). Защита от SQL инъекций» уже рассматривалась ранняя версия компонента – 1.0.0.34. Но с тех пор прошло более 6 лет. За это время расширение изменилось.

В обзоре будет участвовать последняя, на момент написания статьи 21.10.2018, русскоязычная версия RSFirewall 2.11.20 (рисунок ниже) в Joomla 3.8.13. Для наглядности буду приводить примеры с разных сайтов на разных серверах, с разными, не слишком старыми версиями Joomla и RSFirewall.

На официальном сайте расширений Joomla 109 отзыв, расширение добавлено 22 июня 2009.

  • Общий рейтинг – 100 из 100.
  • Функциональность – 100 из 100.
  • Простота использования – 100 из 100.
  • Документация – 99 из 100.
  • Поддержка – 98 из 100.
  • Соотношение цена\качество – 100 из 100.
RSFirewall
RSFirewall

На 21.10.2018 стоимость расширения от 49€ (техническая поддержка и обновления на 12 месяцев для одного сайта). Код расширения не зашифрован. После окончания лицензии Вы сможете использовать его точно так же, как и с активной лицензией, просто не будет обновлений и технической поддержки. Помимо отсутствия обновлений самого компонента, после истечения лицензии не будет обновлений антивирусных баз и списка файлов для новых версий Joomla. Без списка файлов, если Вы обновите Джумла, RSFirewall не сможет проверять целостность файлов CMS Joomla. Также стоит отметить, что код лицензии, рассчитанный на один домен, не позволит Вам загружать обновления компонента, баз и списки файлов Joomla для других доменов.

Основные возможности и особенности.

Данный список не является полным.

  • Защиты Joomla от SQL (SQLi), PHP, LFI (Local file inclusion), XSS (HTML, CSS, Javascript фильтрация) инъекций, RCE (удалённого выполнение кода), RFI (удалённого включения файла) и локального включения файлов. В режиме реального времени.
  • Отслеживание POST и GET параметров.
  • Отслеживание критичных файлов Joomla и уведомления в случае их изменений.
  • Проверка загружаемых на сайт файлов через различные формы. Во время проверки анализируется расширение файла (можно задавать список запрещённых расширений), наличие двойного расширения у файла, наличие вредоносного кода в файлах (антивирус для Joomla).
  • Проверка целостности файлов самой CMS Если в них были внесены изменения, то Вы увидите список этих файлов. Можно сравнить содержимое изменённого и исходного файлов, а также восстановить исходный файл в одно нажатие. Это не распространяется на файлы сторонних расширений.
  • Комплексная проверка защиты Joomla по 21 критериям (рисунок ниже). Если сайт не соответствует каким-то критериям, то по каждому из несоответствий будет дана краткая рекомендация на русском языке. По некоторым даже возможно исправление в одно нажатие.
  • Сканирование файлов на наличие вирусов. Компонент оснащён специализированным сканером вирусов именно для Joomla. Проверяются все файлы внутри корневой папки сайта, включая все подпапки. Есть возможность задавать ограничения и исключения на проверяемые объекты. Антивирус может обнаружить обфускацированные, закодированные и потенциально опасные файлы (например, base64encode, eval, gzinflate и т.д.).
  • Проверка наличия новых версий Joomla и RSFirewall.
Проверка Joomla
Проверка Joomla
  • Автоматическая блокировка IP адресов, с которых идёт атака на Ваш сайт.
  • Блокировка доступа к сайту пользователями из определённых стран или континентов на основании базы GeoIP Lite Country. Поддерживается блокировка анонимных прокси.
  • Блокировка доступа к сайту пользователями с определённых сайтов.
  • Системный журнал (рисунок ниже). В нём собраны записи о заблокированных попытках атак на Ваш сайт (удалённое включение файла – RCE от англ. remote code execution). Вы сможете проанализировать их и заблокировать IP адрес атакующего.
Безопасность Joomla
Безопасность Joomla
  • Защита админки сайта дополнительным паролем.
  • Защита учётных записей администраторов сайта от любых изменений.
  • Запрет на создание новых администраторов.
  • Защита админки сайта от подбора паролей методом перебора (brute-force). В случае нескольких попыток ввода неправильного логина или пароля, будет показана капча. Если попытки продолжатся, то IP адрес пользователя будет заблокирован.
  • Защита форм от спама. Перед отправкой данных из формы происходит их проверка и проверка IP адреса отправителя в списках Spamhaus XBL и SBL.
  • Ограничения доступа к менеджеру расширений Joomla даже для администраторов. Таким образом нельзя будет устанавливать расширения, не отключив перед этим блокировку.
  • Наличие чёрного и белого списка для блокировки как одного IP так и диапазонов.
  • Поддержка IPv4 и IPv6.
  • Гибкие возможности по настройке исключений из защиты на основании юзер агента, URL или названий компонентов (с поддержкой регулярных выражений).
  • Проверка и оптимизация таблиц базы данных сайта.
  • Совместим с Joomla Есть старые версии, которые поддерживают Joomla 1.5-2.5 (старые версии давно не поддерживаются).
  • Экспорт и импорт настроек RSFirewall.
  • Наличие технической поддержки и документации на английском языке.
  • Переведён на русский, английский и другие языки.

Проверка Joomla

Перечислю, что проверяет RSFirewall в разделе Проверка системы (рисунок ниже).

  1. Проверка использования последней версии Joomla!.
  2. Проверка использования последней версии RSFirewall!.
  3. Проверка сложности пароля доступа к базе данных.
  4. Проверка использования стандартной учётной записи с логином «admin».
  5. Проверка заданного FTP пароля. Если Вы храните пароль доступа к FTP в файле configuration.php, тем самым существенно снижается защищённость сайта. Любой, получивший доступ к файлу configuration.php, сможет без труда заполучить полный доступ к Вашему хостингу (FTP).
  6. Проверка, включена ли поддержка ЧПУ. Включив ЧПУ (SEF) на своём сайте, Вы повышаете защищённость от анализа хакерами уязвимых компонентов на Вашем сайте при помощи Google (например, «option=com_dummy»).
  7. Проверка целостности файла configuration.php.
  8. Проверка слабых паролей у администраторов.
  9. Проверка времени жизни сессии. Если Вы устанавливаете большое время длительности сессии, этим повышаете вероятность взлома Вашего сайта. Рекомендованное время сессии - не более 15 минут. Изменить его можно в Система – Общие настройки – Система – Время жизни сессии.
  10. Проверка наличия файлов во временной папке Joomla.
  11. Проверка файла .htaccess. Проверка наличия файла .htaccess на сайте. Поместив файл .htaccess в корневую папку сайта, у вас появляется базовая защита против «общих» атак.
  12. Проверка обработчика сессии. Рекомендуется значение Нет для опции Обработчик сессий в Система – Общие настройки – Система.
  13. Проверка, находится ли Ваш сайт в чёрном списке. Проверка наличия домена сайта в базе Google Safe Browsing. Для этого необходимо получить API ключ и указать его в настройках фаервола на вкладке Проверка системы, опция API ключ Google Safe Browsing - Ключ сервера.
  14. allow_url_include. Она должна быть отключена. Allow_url_include позволяет хакеру загрузить свои собственные PHP скрипты на сервер. В итоге он сможет получить полный доступ к серверу.
  15. open_basedir. open_basedir ограничивает доступ только к определённым папкам. В статье «Обзор RSFirewall (часть 2). Защита от SQL инъекций» рассмотрены особенности работы с данной настройкой. Так как при неправильной настройке можно нарушить работу сайта или вывести его полностью из строя. Также неверно настроенная open_basedir лишит Вас возможности нормальной установки расширений на сайт.
  16. disable_functions. Рекомендуется отключить следующие PHP функции: system, shell_exec, passthru, exec, popen, proc_open. Однако отключение данных функций может привести к потере функциональности некоторых расширений. Например, отключив shell_exec, Вы не сможете использовать YUI Compressor для сжатия JavaScript файлов (при оптимизации сайта).
  17. expose_php. Рекомендуется отключать данную опцию, так как она позволит атакующему узнать версию PHP Вашего сайта.
  18. Проверка целостности файлов CMS Joomla. RSFirewall знает хэш всех файлов Joomla и сравнивает файлы на вашем сайте с эталоном. Если найдены отклонения, то он обязательно их выведет в результатах проверки и даст возможность отметить эти файлы как доверенные, если это Вы их изменили. Это может очень сильно помочь при поиске вредоносного кода на сайте.
  19. Сканирование папок. RSFirewall проверяет наличие папок с правами доступа выше чем 755 (это можно изменить в настройках фаервола на вкладке Проверка системы, опция Права на папки). Если такие найдены, то при помощи одного нажатия кнопки можно исправить эту уязвимость. Возможность исправления прав доступа к папкам зависит от серверного окружения и настроек.
  20. Проверка файлов. RSFirewall проверяет наличие файлов с правами доступа выше чем 644 (это можно изменить в настройках фаервола на вкладке Проверка системы, опция Права на файлы). Если такие найдены, то при помощи одного нажатия кнопки можно исправить эту уязвимость. Возможность исправления прав доступа к файлам зависит от серверного окружения и настроек.
  21. Сканирование файлов на наличие вредоносного кода. Это и есть антивирус Joomla.
Проверка Joomla
Проверка Joomla

Проверка базы данных

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

Проверка базы данных
Проверка базы данных

Системный журнал

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

Безопасность Joomla
Безопасность Joomla

Чёрный/Белый списки

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

Защита Joomla
Защита Joomla

Также можно задавать список заблокированных адресов вручную. Можно задавать одиночные адреса, диапазоны или списки адресов/диапазонов (рисунок ниже).

Блокировка доступа по IP
Блокировка доступа по IP

Также можно задать IP адрес или адреса, к которым не будет применяться защита Joomla. Так называемый «белый список».

Исключения

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

Исключения из защиты
Исключения из защиты

При создании исключения (рисунок ниже) можно основываться на браузере (юзер агенте), URL адресе или компоненте Joomla. Можно использовать регулярные выражения и отключать не всю, а некоторые защиты: PHP, SQL, JS и защиту загрузки файлов. Рекомендую максимально тонко настраивать исключения, чтобы не снижать защиту сайта. Записывайте подробное описание причины исключения, чтобы в дальнейшем проще было разбираться.

Настройка исключений для защиты
Настройка исключений для защиты

Настройки фаервола

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

Вкладка Блокировка страны (рисунок ниже). Тут собраны настройки, позволяющие блокировать доступ к сайту по странам или континентам. Блокировка происходит на основании IP (v4 и v6). Данные об IP берутся из базы данных maxMind GeoLite Legacy. Она обновляется ежемесячно и если сервер Вашего сайта не поддерживает её, то придётся обновлять вручную, нажав на соответствующую кнопку в админке.

Блокировка страны
Блокировка страны

На рисунке выше показан не полный список стран. Всего их 246.

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

Защита админки Joomla
Защита админки Joomla

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

  • Количество файлов/папок для проверки. Количество файлов/папок для проверки. Если Вы установите более высокое значение, то исчерпаете оперативную память и проверка системы не будет закончена. Если возникла ошибка в ходе проверки, то следует уменьшить число проверяемых объектов. Значение по умолчанию 300.
  • Игнорировать следующие файлы и папки. Во время проверки системы эти папки и/или файлы будут игнорированы. Если Вы выберете папку, то файлы и подпапки внутри неё будут соответственно проигнорированы
  • Включить запись логов. Выберите да, если хотите включить отладку системной проверки RSFirewall. Отладочная информация будет записана в директорию логов Joomla в файл с именем «rsfirewall.log».
  • Права на файлы. По умолчанию, рекомендуются права 644 на файлы. Однако, если Ваш сервер требует что-то другое, измените это значение, чтобы во время проверки системы происходила сверка указанных Вами прав.
  • Права на папки. По умолчанию, рекомендуются права 755 на папки. Однако, если Ваш сервер требует что-то другое, измените это значение, чтобы во время проверки системы происходила сверка указанных Вами прав.
  • Пауза между запросами (в секундах). Паузу между запросами. Это необходимо на некоторых серверах, чтобы проверка не была распознана фаерволом хостинга как атака.
  • Максимальное количество попыток (проверка на вирусы). Укажите количество попыток, после которого будет признана ошибка сервера. Это нужно, чтобы обойти ограничения сервера при выполнении шага проверки на вирусы.
  • Пауза между попытками (в секундах). Пауза между попытками проверки на вирусы.
  • Использовать MD5 хэши БД. Если для этой опции выбрано Да, то во время системной проверки будут учитываться MD5 хэши базы данных для проверки PHP файлов на наличие вирусов. Обратите внимание, что это ресурсоёмкая операция. По сути это активирует антивирусную проверку Джумла.
  • API ключ Google Safe Browsing - Ключ сервера. Это API ключ сервис Google, который позволяет приложениям проверять ссылки в постоянно обновляемой базе списков Google по фишингу, вредоносным программам и нежелательным страницам программного обеспечения. Нужен для проверки нахождения URL адреса Вашего сайта в этой базе.
Антивирус для Joomla
Антивирус для Joomla

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

  • Включить активный сканер. Если опция выключена, то RSFirewall не защищает Ваш с сайт.
  • Включить активный сканер для административной панели. Активируя данную опцию, защита от PHP, JS и SQL инъекций будет распространяться и для административной зоны сайта. Данную опцию необходимо включать только в том случае, если к административной зоне сайта имеют доступ люди, которым Вы доверяете не полностью.
  • Записывать в журнал все заблокированные попытки. Если выбрать Да, то каждая отдельная попытка, заблокированная RSFirewall, будет занесена в журнал. Это полезно в случае отладки Вашего сайта, если есть ложные предупреждения. Рекомендуется задать для этой опции Нет, как только Вы закончили отладку, чтобы информация об автоматических атаках не переполнила Ваш журнал.
  • Контролировать следующие файлы на изменения. Если любой из указанных файлов будет изменён, Вы будете предупреждены по электронной почте и в системном журнале появится запись об изменении.
  • Получить IP адрес из заголовков прокси. Некоторые сервера, находящиеся за прокси или фаерволом, не будут предоставлять корректный IP. Если это Ваш случай, то свяжитесь с прокси-провайдером и спросите у них, через какой заголовок они посылают настоящий IP. В противном случае, просто оставьте всё включённым по умолчанию и RSFirewall попытается получить IP путём поиска среди всех этих вариантов.
  • Локальное включение файлов. Это запрещает использование методов (таких как «controller=../../../etc/passwd»), которые позволяют атакующему прочесть конфигурационные файлы, используя уязвимости в плохо написанных расширениях.
  • Удалённое включение файлов. Это запрещает доступ к URL адресам (таких как «controller=http://www.vredonosny-sajt.com/exploit.txt»), которые позволяют атакующему загрузить вредоносный скрипт, используя уязвимости в плохо написанных расширениях.
  • Включить защиту для PHP, SQL, Javascript. Вариант Данные форм (POST) активирует фильтрацию информации, которая отправляется через формы (например, редактирование статей, регистрация пользователей и так далее). Вариант Данные URL (GET) активирует фильтрацию параметров, которые содержаться в URL адресах (например, «http://www.vashsajt.com/index.php?option=com_test&parameter1=value1»).
  • Запретить доступ для следующих браузеров. Доступ к Вашему сайту будет закрыт для указанных браузеров. empty User Agents (пустой юзер агент) как правило, c таких браузеров происходят DoS атаки и авто подключения к Вашему сайту. perl, cURL, Java – скрипты для автоматического подключения к Вашему сайту.
  • Защитить формы от IP адресов, с которых приходят оскорбительные сообщения. Активация данной опции защитит ваши формы от IP адресов, с которых приходят оскорбительные сообщения, если эти адреса есть в списке PBL.
  • Запретить доступ следующим рефералам. Рефералы – это посетители, которые приходят с другого сайта (домена). Вы можете заблокировать несколько доменов, указав каждый из них с новой строки. Вы также можете использовать маску, например, «*.domain.com» (без кавычек) – это заблокирует все запросы, которые идут со всех поддоменов домена domain.com (например, «www.domain.com», «images.domain.com» и так далее). Не забудьте также добавить в список сам домен «domain.com», в противном случае, при использовании маски будут блокироваться только поддомены. Также Вы можете использовать маску где угодно в имени домена, например, «blocked-domain.*», «blocked*domain.com» (без кавычек).
Активный сканер
Активный сканер

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

Защитить следующих пользователей от любых изменений. Создаётся «точка восстановления» выбранных Вами пользователей. Если произойдут какие-либо изменения с одним из них, то система вернёт все обратно. Если хотите внести какие-либо изменения, Вы должны убрать из этого списка пользователей, которых хотите изменить, затем нажать Применить и внести изменения в учётные записи пользователей и, наконец, снова сохранить конфигурацию.

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

Блокировка
Блокировка

Вкладка Журнал событий (рисунок ниже). Позволит настроить уведомления по e-mail о разных событиях, связанных с защитой Joomla.

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

Вкладка Импорт. Позволяет импортировать настройки RSFirewall с другого сайта. Импортировать их можно по нажатию на одноимённую кнопку в верхней части страницы.

Вкладка Обновления. Даёт возможность ввести код лицензии на RSFirewall для получения обновлений компонента, базы данных антивируса Joomla и данных сравнения файлов инсталляции Джумла с оригинальной версией.

Вкладка Права (рисунок ниже). Позволит ограничить доступ пользователей к самому компоненту RSFirewall.

Права
Права

На мой взгляд, данный компонент является обязательным для любого сайта на Joomla. При этом не важен тип, размер или посещаемость сайта. Взламывают любые сайты. Как правило, это происходит в результате автоматических/массовых атак. RSFirewall, в сочетании с дополнительными мерами защиты, весьма хорошо противостоит таким атакам. Ещё раз хочу подчеркнуть, что 100% защиты Вы не получите, особенно от целевых атак, но минимизировать риски взлома можно и нужно.

Кстати говоря, недавно появилась версия RSFirewall для WordPress.

 

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