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

Редактор: Дмитрий Сокол 11082 17 мин Аудио

Joomla -  одна из самых популярных CMS. Это универсальный “движок”, подходящий для создания как небольших тематических сайтов, так и крупных интернет-магазинов.

Joomla распространяется в виде открытого исходного кода на языке PHP. 

Достоинства открытого исходного кода: для движка создаются разнообразные расширения и дополнения (плагины). Это придает CMS гибкости и обеспечивает ее популярность.

Недостатки открытого исходного кода: потенциальные взломщики могут изучить архитектуру CMS и найти уязвимости. 

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

Безопасность web-сервера

Обычно сайты на Joomla работают под управлением web-сервера Apache.

Существует специальное программное обеспечение, которое проверяет все запросы к сайту и блокирует потенциально опасные из них. Такая защита на уровне web-сервера хорошо себя зарекомендовала в вопросе повышения безопасности работы сайта. Эта технология называется Web Application Firewall (WAF).

Одним из популярных вариантов WAF является расширение для web-сервера Apache под названием mod_security

Это расширение входит в состав некоторых панелей управление хостингом, например, Plesk. 

Владельцы VPS/VDS и выделенных серверов могут установить mod_security самостоятельно.

На виртуальном хостинге не применяется!

 .htaccess

В служебном файле .htaccess находятся  настройки для web-сервера Apache. Они используются в работе страниц сайта, расположенных в конкретной папке. Если файл .htaccess расположен в корневой папке сайта, то настройки применяются ко всему сайту целиком. 

С помощью настроек  в этом файле можно повысить безопасность работы сайта на Joomla.

Например, следующие настройки в файле .htaccess помогут отфильтровать известные атаки на Joomla, связанные с внедрением скриптов и просмотром значений переменных PHP. Эти настройки являются стандартными для Joomla и находятся в файле .htaccess по умолчанию. 

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

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

Настройка PHP

Правильная настройка конфигурации PHP на сервере хостинга поможет обезопасить сайт. 

Настройка PHP осуществляется при помощи изменения директив в .htaccess или в файле php.ini (для VPS/VDS и выделенных серверов). 

Конфигурация PHP настраивается в этом файле с помощью добавления строк, начинающихся с команды “php_flag” (или “php_value”).

Например,  добавление в .htaccess строки:

php_flag register_globals off

отключает для PHP директиву “register_globals”.

Также установите следующие конфигурационные директивы PHP:

Эта команда скрывает версию PHP от наблюдателя:

expose_php = 0 

Настройка ограничения доступа к каталогам. Ее стоит настроить на значение “/var/www/имясайта.ru:/tmp/”, где указан путь к папке сайта и каталогу “/tmp” для временных файлов:

open_basedir 

Не показывать сообщения об ошибках:

display_errors = 0 

Эта настройка отключает все потенциально опасные функции PHP, которыми могут воспользоваться злоумышленники в попытке внедрить на сайт вредоносный код;

disable_functions = exec,passthru,shell_exec,system, proc_open,proc_close,proc_terminate,popen,curl_exec,curl_multi_exec, show_source,posix_kill,posix_getpwuid,posix_mkfifo,posix_setpgid, posix_setsid,posix_setuid,posix_setuid,posix_uname,php_uname,syslog 

Эти директивы отключают возможность загружать файлы с удаленных серверов, что полезно для безопасности:

allow_url_fopen = 0 

allow_url_include = 0

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

В процессе настройки для проверки конфигурации PHP создайте в корневой папке сайта файл “info.php” со следующим содержанием:

<?php
php_info();
?>

Затем откройте в браузере страницу http://имясайта.ru/info.php, на которой будут видны все установки PHP для сайта:

Не забудьте удалить этот файл после окончания настроек, чтобы злоумышленники не могли с его помощью определить конфигурацию PHP.

Внедрение протокола HTTPS

Мы рекомендуем использовать защищенный протокол HTTPS  для любого сайта.

Для сайтов на Joomla, хранящим информацию пользователей, поддержка HTTPS также является важным компонентом безопасности.

Настройка обмена информацией с сайтом по зашифрованному каналу затруднит возможность перехвата данных посетителей и даст возможность использовать сайт в области электронной коммерции.

Важный этап перевода сайта на HTTPS - это выпуск SSL-сертификата.

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

Найдите  директиву live_site и пропишите:

$live_site = ‘https//имясайта.ru’

Не ставьте слеш (/) в окончании названия сайта.

Найдите директиву force_ssl и укажите для нее значение 2.

Это означает, что и админка, и сайт будут открываться по протоколу https.

Ведение резервных копий

Регулярно создавайте резервные копии файлов сайта на Joomla и его базы данных.

Большинство провайдеров виртуального хостинга поддерживает такую возможность в своих панелях управления хостингом.

Например, так выглядит раздел управления резервными копиями у провайдера Beget:

Мы рекомендуем иметь в запасе несколько резервных копий сайта с разными датами. 

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

Своевременное обновление CMS

Для поддержания безопасности сайта важно вовремя обновлять Joomla до самой последней версии.

Версии CMS 1.0.x и 1.5.x уже не поддерживаются сообществом Joomla. Обновления безопасности для них не выходят, поэтому откажитесь от использования этих версий.

Для версий 2.5.x и 3.0.x регулярно выпускаются обновления. Как правило, они содержат в себе улучшения безопасности и исправления ошибок. Рекомендуем производить регулярное обновление Joomla внутри соответствующей ветки версий.

Если вы стоите перед выбором, какую версию Joomla использовать, то необходимо начинать работу с самой последней версии CMS, относящейся к ветке 3.0.

Функция автоматического обновления CMS встроена в панель администратора Joomla:

Контроль за плагинами

Исходный код основной части Joomla максимально подробно проверяется разработчиками и не содержит уязвимостей.

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

Основные правила работы с плагинами:

1. Загружайте расширения только с официального сайта Joomla или с сайта проверенного разработчика плагина. 
2. Следите за обновлениями. Для большинства популярных плагинов регулярно выходят обновления, которые рекомендуется сразу же устанавливать. 
3. Ознакомьтесь со списком уязвимостей, найденных в расширениях и плагинах, на официальном сайте Joomla (доступен на английском языке). Уточните, не попал ли в данный список какой-либо из установленных на сайте плагинов и выпущено ли для него обновление, исправляющее данную уязвимость.
4. Удалите не используемые на сайте плагины. Своевременное удаление устаревших и ненужных расширений и дополнений  убирает потенциальные дыры в безопасности и ускоряет работу сайта.

Пример: механизм управления плагинами в административной панели Joomla

Страница входа в панель администратора

Панель администратора в Joomla открывается по адресу: https://имясайта.ru/administrator. Знание точного адреса входа в панель может помочь потенциальному хакеру при попытках взлома сайта. 

Мы рекомендуем  для повышения безопасности изменить этот адрес на какую-то непредсказуемую ссылку из набора букв и цифр. Например, такой адрес страницы входа в панель администратора злоумышленник никогда не угадает: https://имясайта.ru/hik482nbr814mo3f7.
 
Чтобы вы сами не забыли адрес страницы для входа, добавьте его в закладки браузера у себя на локальном компьютере.

Если вы не хотите вручную переименовывать каталоги и редактировать код Joomla, то используйте плагин jSecure Authentication, через который можно настроить специальный адрес панели администратора.

Права на запись для файлов Joomla

При установке CMS на хостинг нужны права на запись в домашний каталог сайта.  

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

1. Оставьте разрешение на запись только для владельца файлов. 
2. Для этого найдите в  FTP-клиенте Filezilla файл index.php и нажмите на него правой кнопкой мыши.
3. В выпадающем списке найдите пункт “Права доступа к файлу” и кликните на него.
4. Появится окно “Изменить атрибуты файла”.
5. Измените числовое значение прав доступа. Поставьте значение 644 - для файлов.

Можно увеличить ограничения еще больше и запретить запись для всех файлов и каталогов, кроме специальных папок для хранения файлов кэша “/cache” и “/administrator/cache”. 

Таким образом, злоумышленник лишится возможности внедрять в файлы сайта вредоносный код.

Пример: изменение прав доступа файлов сайта с помощью FTP-клиента Filezilla

Использование специальных плагинов безопасности

Для Joomla разработаны специальные плагины для мониторинга безопасности сайта. Например, мы рекомендуем использовать  плагин RSFirewall, помогающий в защите сайта от взлома и атак хакеров.

Список отдельных возможностей RSFirewall:

  • защита сайта с помощью SQL-, XSS- и LFI-фильтров;
  • проверка загружаемых файлов (расширения, шаблоны) на наличие вредоносного кода;
  • сканер файлов сайта для поиска вирусов;
  • защита паролем папки администратора, а также - от подбора пароля;
  • черный список IP: запрет доступа для определенных IP-адресов;
  • автоматическая блокировка файлов при загрузке (.php, .js, .exe, .com, .bat, .cmd);
  • отправка логов событий безопасности на e-mail.

Стоит отметить, что данный компонент Joomla платный.

Капча при регистрации на сайте

Помимо стандартного модуля регистрации для пользователей сайта, у CMS Joomla есть еще скрытые страницы авторизации.

имясайта.ru/php?option=com_users&view=registration

Если поставить в начале ссылки адрес вашего сайта, вы попадете на форму регистрации.

Злоумышленники, знакомые с этой особенностью, могут воспользоваться ею, чтобы затем рассылать спам, который будет приходить вам через форму регистрации.

Чтобы обезопасить себя от роботов, которые через эту форму регистрируют “пользователей”, у которых вместо имени будет использоваться текст спам-сообщения, мы рекомендуем ставить под формой регистрации капчу, либо вовсе отключить форму. 

Использование ЧПУ URL

В движке Joomla предусмотрено включение дружественных URL (также известные как “человекопонятные URL” - ЧПУ, или SEF URL на английском). Это делается для лучшего индексирования сайта поисковыми системами. Этот механизм также улучшает безопасность сайта,  усложняя взломщикам возможность изучать и перехватывать внутренние параметры Joomla, передающиеся между страницами сайта, а также мешая им использовать методику взлома с помощью поисковых страниц Google.

Пример: включение функции ЧПУ в Joomla

Выводы

Для поддержания на должном уровне безопасности сайта на Joomla следует придерживаться ряда рекомендаций:

  • следить за обновлениями версий системы;
  • регулярно делать резервные копии;
  • внедрить поддержку HTTPS;
  • проверить настройки web-сервера и движка PHP;
  • настроить права доступа к файлам сайта;
  • максимально уменьшить количество установленных на CMS плагинов.

Использование специальных плагинов поможет владельцам сайтов на Joomla управлять настройками безопасности прямо из административной панели сайта.

Данные рекомендации подходят как пользователям виртуального хостинга, так и владельцам VPS/VDS и выделенных серверов.

Дмитрий Сокол

Хостинг для Joomla

Rank Хостинг Клиенты Оценка Отзывы
1
147000
5.0 387
2
577930
5.0 488
3
200000
4.9 158
Не нашли ответ на свой вопрос?
Задайте его экспертам! Ответ приходит очень быстро и прямо на ваш email.

Добавляя подтверждение "Я не робот" вы так же даете согласие получать сообщения от ru.hostings.info и принимаете его Политику конфиденциальности, позволяя ru.hostings.info хранить и обрабатывать вашу личную информацию, указанную выше, для предоставления вам запрашиваемого контента.

Рейтинги хостинг-провайдеров по задачам сайта
Марта
Панель управления

От панели управления зависит ваше удобство в настройке хостинге\сайта.

Большинство качественных хостингов из нашего ТОПа используют удобные панели управления, поэтому рекомендуем больше внимания уделить другим параметрам при выборе.

Вид хостинга

Облачный хостинг - распределение нагрузки на несколько серверов, если сервер с вашим сайтом перегружен или не работает. Это гарантия того что пользователи в любом случае смогут видеть ваш сайт. Но это дорогая, более сложная опция, которую предоставляют далеко не все провайдеры.

Виртуальный хостинг - подходит для большинства проектов начального уровня с посещаемостью до 1000 человек в сутки. В таком хостинге мощность сервера делится между несколькими хостинговыми аккаунтами. Услуга проста в настройке даже для новичков.

VPS - подходит для более сложных проектов с достаточно большой нагрузкой и посещаемостью до 10000 человек в сутки. Здесь мощность сервера фиксированная для каждого виртуального сервера, при этом сложность настройки увеличивается.

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

Размещение и обслуживание вашего собственного сервера в дата-центре хостинга - это не очень популярная услуга и требуется в исключительных случаях.

CMS

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

Тип виртуализации

Виртуализация - это создание виртуальной среды на физическом сервере, позволяющая запускать требуемые ПО без затрагивания процессов, совершаемых другими пользователями сервера.  С её помощью ресурсы физического сервера распределяются между виртуальными (VPS/VDS). Основные виды: аппаратная (KVM), паравиртуализация, виртулизация на уровне ОС (OpenVZ).

Прочее

Абузоустойчивый хостинг - компании, которые разрешают размещать практически любой контент, даже запрещенный (спам, варез, дорвеи, порнографические материалы). Такие компании не удаляют контент вашего веб-сайта при первой же жалобе (“абузе”).

Безлимитный хостинг - хостинг у которого отсутствуют лимиты на количество сайтов, БД и почтовых ящиков, трафик, дисковое пространство и т.д. Обычно это больше маркетинговый трюк, но можно найти что-то интересное для себя.

Безопасный хостинг - тот, где администрация постоянно обновляет ПО установленное на серверах, устанавливает базовую защиту от DDoS-атак, антивирус и файерволлы, блокирует взломанные сайты и помогает их "лечить".

Защита от DDOS - компании, которые предоставляют хостинг с защитой от DDoS-атак. Такие пакеты ощутимо дороже обычных, но они стоят своих денег, так как ваш сайт будет защищен от всех видов сетевых атак.

Бесплатный тест

Тестовый период - предоставляется хостером бесплатно на 7-30 дней, чтобы вы могли удостовериться в его качестве.

Moneyback - период на протяжении которого хостер обязуется вернуть деньги, если вам не понравится хостинг.

Региональные
Цена

Настоятельно рекомендуем не покупать слишком дешевый хостинг! Как правило с ним очень много проблем: сервер иногда не работает, оборудование старое, поддержка долго отвечает или не может решить проблему, сайт хостера глючит, ошибки в регистрации, оплате и т.д.

Также мы собрали тарифы от тысяч хостеров, чтобы вы могли выбрать хостинг по конкретной цене.

Технологии и ОС

На языке программирования PHP и базах данных MySQL сейчас работает большинство сайтов. Они же поддерживаются практически всеми современными хостингами.

ASP.NET - платформа для разработки веб-приложений от Майкрософт.

ОС - операционная система, установленная на сервере хостинга. Мы рекомендуем размещать на серверах с Linux, если нет особых требований у разработчиков сайта.

Тип диска