Защита сайта

Защита Joomla (часть 6). Файл configuration.php

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

Дополнение к защите

Настоятельно рекомендую использовать «оригинальный» префикс для базы данных сайта Joomla. При обновлении некоторых расширений для Joomla 1.5 были проблемы, если в базе данных был нестандартный префикс таблиц. Но для Joomla 1.7 эта проблема неактуальна. Лучше, чтобы это было сделано во время установки самой Joomla, но можно и потом. Если Вы делаете это уже на рабочем сайте, то лучше чтобы на нём было минимум пользователей. Так как на время проведения подобной работы сайт временно (до завершения работы) выйдет из строя. Замена префикса базы данных сайта поможет повысить устойчивость к SQL-инъекциям.

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

  • Создайте директорию вне папки public_html. Например, «hgaf» (которая расположена на 2 уровня выше).
  • Переместите в неё Ваш рабочий файл configuration.php из директории сайта.
  • В файле defines.php в папках includes и administrator/includes заменил строку
define('JPATH_CONFIGURATION', JPATH_ROOT);

на строку

define('JPATH_CONFIGURATION', JPATH_ROOT.DS.'..'.DS.'..'.DS.'hgaf');

Где hgaf - имя папки в которой лежит файл configuration.php.

Для всех конфигурационных файлов задайте права доступа 444. Для папки вне директории public_html, содержащей рабочий (переименованный) конфигурационный файл задайте права доступа 555. Обратите внимание на то, что для внесения изменений в файл конфигурации Вам необходимо будет править его (тот, который находиться вне директории public_html) «вручную». Не через панель администрирования сайтом Joomla. Если это делать при помощи самой CMS, то файл configuration.php Joomla в корне сайта будет перезаписан своим «родным» содержимым, которое Вы «прятали».

Файл configuration.php Joomla

И Вам необходимо будет производить повторно процедуру перемещения файла конфигурации. Не всю полностью, но как минимум последний этап. Этот метод защиты не очень удобен, особенно на стадии разработки сайта, но всё равно я рекомендую вынести Joomla файл configuration.php за приделы папки public_html.

Не лишним будет вынести такие папки как tmp и logs за пределы папки public_html.

Не стоит использовать в качестве имени пользователя, который имеет доступ к административной части сайта такие слова как: "test", "guest", "info", "adm", "mysql", "user", "administrator", "oracle", "root", "админ", "администратор" и так далее. Так как скрипты для автоматического подбора логина и пароля очень часто начинают подбор именно с этих имён (по материалам сайта Rsjoomla.com).

Проследите за тем, что бы в настройках Joomla (Общие настройки - Система) было указанно не большое время (около 15 минут, например) жизни сессии.

Не включайте поддержку FTP для Joomla (Общие настройки - Сервер).

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

Эти расширения позволят Вам настроить уведомления о выходе новых версий Joomla, защититься от сапм-ботов, шифровать данные между клиентом и сервером даже без SSL-сертификата, защититься от SQL, PHP инъекций, межсайтового скриптинга (XSS), атак типа «Shell», «Upload File», «URL», «Form», «Cookie», «Address Bar», «Live Script», скрыть «стандартный» способ доступа к административной панели и так далее.

Большинство из них – платные. Но есть много и бесплатных. Чтобы найти больше подобных расширений и немного детальнее с ними ознакомиться советую посетить соответствующий раздел расширений Доступ и безопасность на официальном сайте Joomla. Даже если Вы найдёте много бесплатных расширений, не стоит устанавливать их все и без разбора. Отнеситесь к выбору такого расширения (или расширений) обдуманно. Возможно, для «коммерческих» сайтов есть смысл приобрести одно-два комплексных расширения с технической поддержкой.

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

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

Для «коммерческих» сайтов настоятельно рекомендую задуматься над проведением всестороннего аудита безопасности. Это может быть очень дорогостоящим решением (в среднем, от 4000-8000 грн. и выше в зависимости от большого количества факторов). Очень часто предлагается следующий набор услуг:

  • анализ выполнения CGI-скриптов на возможность получения несанкционированного доступа к данным.
  • Анализ журнальных файлов при наличии инцидента взлома.
  • Анализ программного обеспечения сервера, под которым функционирует web-приложение.
  • Аудит исходного кода web-приложения.
  • Аудит форм регистрации, онлайн проплат, интернет магазинов.
  • Внешний аудит по методу blackbox.
  • Поиск существующих XSS, SQL-injection, PHP-injection, Remote File Include (RFI), Local File Include (LFI), Active XSS, Passive XSS, File Upload, Auth bypass, Information Leakage, Full Path Disclosure и других уязвимостей.
  • Полное сканирование сайта, включая Javascript / AJAX приложения на выявление уязвимостей.

Как правило, подобные фирмы предлагают помимо поиска уязвимостей безопасности ещё и их устранение. Но следует понимать, что это может быть очень дорогой мерой. Однако качественный и всесторонний аудит безопасности сайта, выполненный независимой профессиональной фирмой даст очень хороший результат, естественно, если ошибки будут не только найдены, но и исправлены. Цена – это не единственная проблема при проведении аудита безопасности. Стоит отметить, что есть вероятность того, что устранение найденных ошибок может повлечь за собой или ещё большие капиталовложения (расходы на хостинг, покупку обновлённых платных расширений, используемых на Вашем сайте (актуально для систем управления контентом), оплата работы программистов и так далее) или изменению (или отказу) прежней функциональности сайта. Аудит безопасности сайта и устранение найденных ошибок может растянуться на продолжительное время (в зависимости от Вашей способности и желания платить и серьёзности найденных ошибок). Более того, если Вы внесли изменения на сайт после проведения аудита, например, добавили новое расширение, то, по хорошему, аудит следует повторить, так как новое расширение – это вероятность новых «дыр» в безопасности сайта.

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

Хочу отметить, что в любом случае сайту нужен постоянный уход. За ним нужно следить 24 часа в сутки, 7 дней в неделю, 12 месяцев в году. Постоянно его проверяйте и посещайте, отслеживайте изменения в его работе, проверяйте целостность архивов сайта, следите за его репутацией в мировых системах оценки сайтов, отвечайте на письма пользователей и так далее. Ведь пока даже самая хорошо настроенная и продуманная защита на программно-аппаратном уровне не может обходиться без человеческого контроля. Для проверки доступности сайта можно использовать, например, такой платный сервис как Webopulsar. Этот сервис проверяет возможность доступа пользователей к вашему ресурсу с определённым интервалом времени. И в случае, если сайт не доступен, то Вы получите уведомление на электронную почту и\или СМС.

Защита Joomla 1.7 требует круглосуточного внимания внимания. Со стороны человека это обеспечить не получится. Именно по этому стоит задуматься над приобретением хорошего расширения по защите сайта от различного рода атак. Убрав Joomla файл configuration.php за пределы public_html Вы не обеспечите его 100% защиту от несанкционированного доступа, но снизите подобную вероятность.

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

Похожие материалы
Автор статьи – Хорошевский Алексей

Хорошевский Алексей Примерно с 2008 года и по сегодняшний день создаю сайты «под ключ» на Joomla и WebSite X5. Также занимаюсь их доработкой, SEO-продвижением, контекстной рекламой, защитой от взлома и оптимизацией скорости загрузки сайта.

Кандидат технических наук по специальности «Информационные технологии».

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

 

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