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

 

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

Права доступа к файлам и папкам

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

Итак, если Вы не предусмотрели загрузку пользователями каких-либо файлов на Ваш сайт, то я рекомендую выставить следующие права на файлы и папки. Права доступа к файлам Joomla 1.5 и 1.7 одинаковы.

  • Всем корневым файлам Joomla (например, configuration.php, robots.txt, .htaccess и так далее) назначьте минимальные права для всех групп – 444.
  • Всем директориям сайта, помимо исключения, назначьте права доступа 555. Исключения: cache (каталог кэша), administrator/cache (каталог кэша административной зоны), logs (каталог файлов лога), temp (каталог для временных файлов). Для них – 755.
  • Всем файлам во всех директориях, кроме исключения, советую назначить права 644. Файлам, в исключённых директориях, можно назначить права 755. Но в исключённых директориях есть файлы index.html. Для этих файлов можно назначить права 644.

Права доступа к файлам

Бысто изменить права доступа к файлам Joomla Вам помогут FTP клиенты (например, FileZilla FTP Client) или панель управления хостингом.

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

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

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

Во-вторых. При рекомендуемых мною атрибутах файлов и папок у Вас будут постоянные проблемы при обновлении расширений сайта и самой системы управления контентом. Если Вы часто выполняете обновления и Вам не удобно постоянно менять права доступа на файлы и папки ради обновления (это можно делать «автоматически» при помощи FTP клиентов, например FileZilla FTP Client), а затем возвращать их обратно (в некоторых случаях это может занимать большое количество времени), то Вам лучше разрешить на запись все директории для группы владельцев. То есть выставить права 755 на все папки.

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

Но при вводе сайта в «постоянный режим работы» обязательно смените права до минимально необходимых. А для корневых файлов считаю необходимых установить права 444.

Изменить права доступа к файлу

Изменить права доступа к файлу означает повысить или понизить для той или иной группы пользователей сайтом разрешения по изменению конкретного файла.

Если у Вас на хостинге хранятся файлы с резервными копиями сайта и базы данных, то поставьте на папку с ними права 700 и держите её выше папки public_html. Многие хостеры дают возможность организовать детальное ведение логов для всего Вашего хостинга. Советую поступить с папкой, содержащей эти отчёты, точно так же, как и с папкой с резервными копиями.

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

Если Вас заинтересовала тема резервного копирования сайта, рекомендую прочесть статью «Обзор Akeeba Backup Pro, Core».

Организация доступа к административной зоне сайта

Административная панель сайта, наряду с административной панелью хостинга, базой данных и FTP сайта, является ещё одним «слабым» местом, которое необходимо скрывать и защищать от несанкционированного доступа. Причём я настоятельно рекомендую сделать так, чтобы доступ к административной зоне сайта имело минимальное количество людей. Даже, если они являются модераторами сайта. Joomla обладает достаточно гибкими настройками прав пользователей и пользовательских групп. Поэтому, советую организовать работу модераторов так, чтобы им не нужно было входить в саму административную панель сайта (админка (backend)). Лучше, чтобы они работали с самого сайта («передней» части (frontend)). Также недостаточно установить надёжный пароль на административную зону сайта для администратора. Настоятельно рекомендую скрыть «явный» доступ к этой части сайта. То есть нужно сделать так, чтобы при вводе в адресную строку, например, http://aleksius.com/administratorне появлялась страница авторизации административной зоны сайта. Это можно сделать различными способами. При помощи различных расширений (детальнее будет рассмотрено в следующих статьях), как платных так и бесплатных, или при помощи правки кода ядра Joomla «вручную». Способ правки кода ядра Joomla «вручную» имеет несколько недостатков: нужно знать, что при обновлении Joomla до новой версии, файлы в которые Вы вносили правки могут быть заменены. Причём может быть заменима часть файлов. И есть вероятность того, что Вы потеряете доступ к административной зоне сайта пока всё не исправите. Более того, некоторые расширения критичны к смене пути к административной зоне сайта. Поэтому, предлагаю воспользоваться готовыми решениями.

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

Одно из таких я более детально рассмотрел в одной из предыдущих статей «Обзор jSecure Authentication. Защита админки Joomla». Оно обладает рядом достоинств, таких как: смена пути доступа к административной части сайта, ограничение по IP адресу, уведомления на электронную почту о доступе к административной зоне и внесению изменений в расширение, блокировка доступа к jSecure Authentication даже после входа в административную зону, совместимость с Joomla 1.5, 1.6, 1.7 и другое. Но это расширение платное (80 грн. на 15.10.2011). Ещё одно расширение подобного характера - RSFirewall.

Не лишним будет ограничить доступ к административной панели сайта при помощи фильтрации по IP адресу. Если есть возможность, то лучше использовать HTTPS, но организация этой меры требует от Вас небольших капиталовложений. Как минимум оплатить хостинг с поддержкой SSL. А лучше приобрести и сам SSL-сертификат, а не подключать бесплатные. Но это важно только для сайтов, которые косвенно или напрямую «приносят прибыль».

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

Для организации двухфакторной аутентификации Вам необходимо купить токен (например USB-токен). Причём, если Вы планируете организацию доступа к сайту при помощи USB-токена с нескольких компьютеров одновременно, то Вам необходимо купить несколько токенов. USB-токен — это по сути дела флэшка. Если описать работу с USB-токеном кратко, то Вы вставляете USB-токен в компьютер, переходите на страницу авторизации сайта (например, административной зоны), PIN-код (это «первый уровень авторизации»), затем происходит проверка USB-токена (это «второй уровень авторизации») и Вы заходите на сайт. Если в это время нужно, чтобы со второго компьютера кто-то ещё вошел на сайт при помощи USB-токена, то у него должен быть свой (второй) USB-токен. Если Вас заинтересовала эта тема, то Вы можете более детально ознакомиться с ней на примере продукта Рутокен Web в статье Михаила Картавенко «Обзор Рутокен Web». Стоимость одного USB-токен Рутокен Web на 15.10.2011 составляет 173 грн. без учёта доставки с Российской Федирации. К сожалению, на данный момент (15.10.2011), касательно Joomla, на официальном сайте поддерживается только версия 1.5. Но существует API, позволяющий самостоятельно настроить поддержку Рутокен Web на сайте Joomla. Но, думаю, что вскоре будут выпущены и готовые плагины.

Логи и резервные копии

Логи сайта (или отчёты) на прямую не влияют на защищённость Вашего сайта. Независимо от того, настроили Вы их или нет, это не повысит и не понизит безопасность. Логи сайта, касательно безопасности, понадобятся в том случае, если есть подозрение, или Вы точно уверены, что сайт взломали. Они, возможно, помогут разобраться, как, когда и откуда был сделан взлом. Безусловно, в них не будет написано, что «Иванов Иван Иванович 15.10.2011 в 18:19 взломал Ваш сайт путём эксплуатации уязвимости №123 в Joomla.». Но, например, в логах доступа к сайту можно посмотреть, например, следующую информацию:

ХХХ.ХХХ.ХХХ.ХХХ - - [14/Oct/2011:00:24:08 +0300] "GET /images/stories/article/virtuemart_emails_editor/virtuemart_emails_editor6.png HTTP/1.1" 200 49338 "http://aleksius.com/articles/miscellaneous/review-virtuevart-emails-manager" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1"

Где ХХХ.ХХХ.ХХХ.ХХХ – IP адрес пользователя, вошедшего на Ваш сайт. Установив приблизительное время взлома, при помощи логов можно пытаться делать какие-либо выводы. И, возможно, это поможет Вам в установлении способа взлома, что в дальнейшем позволит устранить подобные уязвимости. Однако, лучше ещё попросить у Вашего хостера более детальные логи сайта по Вашему аккаунту за интересующий период. Желательно ещё анализировать журнал ошибок. Возможно, что взлом сопровождался ошибкой в работе сайта и это будет зафиксировано. Очень важно получить данные о времени изменения всех файлов Вашего сайта и сравнить с «чистой копией». Но для этого логи сайта должны быть настроены и работать до того, как произойдёт взлом. Рекомендую производить регулярное сохранение архивов всех доступных логов на локальном компьютере (помимо самого хостинга). В случае, если Вас взломали, то лучше иметь доступ к максимально большому количеству отчётов для анализа, выявления и устранения уязвимости.

Логи сайта

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

Лучше, чтобы на сервере хранились копии сайта за некий временной период. Это поможет найти «чистую» рабочую копию в случае взлома. Также настоятельно рекомендую настроить резервное копирование сайта не только на том же сервере, что и он сам, но и на другом. А лучше, чтобы полные, рабочие, актуальные копии были у Вас на локальном компьютере. Но помните, что где бы они не находились, к ним должен иметь доступ крайне ограниченный круг лиц. Так как при помощи анализа полной копии Вашего сайта можно выяснить логины, пароли, настройки доступа и уязвимые места. И, конечно же, можно узнать при помощи какой системы управления контентом, какой её версии и с какими расширениями сделан Ваш сайт. Хочу сказать, что хорошо продуманное и реализованное резервное копирование может потребовать неких финансовых затрат. Так как место на сервере для резервных копий необходимо оплачивать. А если Вы решили выполнять резервное копирование сайта и на сервере, на котором находится он сам, и на другом, его также придётся оплатить и позаботиться о защите этих резервных копий от несанкционированного доступа. Это не нужно для личных сайтов и блогов, а вот для сайтов, которые «приносят деньги» – это важный вопрос. Можно арендовать место для хранения резервных копий сайтов у специальных фирм. А в настройках резервной копии указать параметры сохранения. Существуют фирмы, предоставляющие услуги резервного копирования и хранения данных на закрытых серверах (например, компания Kraftwork).

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

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

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

 

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

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