Joomla-Безопасность Сегодня, большинство вэб-ресурсов во всемирной паутине строятся на CMS Joomla. И это не удивительно, поскольку она занимает первые позиции в рейтинге бесплатных и практичных систем управления. Но такая популярность вызывает очень неприятные моменты – это взлом, заражение сайта. Как и какими способами можно обезопасить сайт от хакерской атаки? 

Время и технологии не стоят на одном месте, они тесно связаны между собой, поскольку современем, технологии развиваются, усовершенствуются. Существующие способы и методы безопасности вэб-ресурсов становятся уязвимыми, так как «недоброжелатели» так же не спят, они же так же разрабатывают все новые пути взлома сайта, методы обхода систем безопасности.
Чтобы усложнить подбор вариантов взлома вэб-ресурса, сердцем которого есть CMS Joomla, нужно воплотить в реальность несколько этапов. И начать необходимо с удаления названий установленных компонентов и их версий.

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

Повышению безопасности вэб-ресурса может служить простое, до крика банальное правило – использую только самое свежее! Это относится и как к самой CMS Joomla так и к ее расширениям.
Объясню на примере. Для поиска возможных путей подступа к сайту, хакеры используют так называемый «Google inurl: команду». Предотвратить этот вариант взлома можно с помощью SEF-приложений – это Artio или SH404SEF результатом работы которых является измененный вид ссылки.
Также, не забываем удалять «хвосты» тех компонентов, которые не могут выполнить или с помощью которых, Вы хотели добиться желаемого результата. Ведь они могут послужить дополнительной «лазейкой» для хакера. Деинсталлируйте их, не оставляйте их не опубликованными.

Не лишним будет в очередной раз проверить права папок, файлов – CHMOD . Значение 777 или 707 для файла устанавливаются только в том случаи, когда какое-то приложение должно его редактировать, изменять его содержимое. Для всех других, которые в ходе работы сайта не редактируются/изменяются системой CHMOD должен отвечать значению:
* PHP-файлы: 644
* файлы конфигурации: 666
* другие папки: 755

Если приведенные выше способы вряд ли могут повлиять на работу сайта, разве, что неверные параметры файлов и папок – CHMOD, то к следующим этапам нужно отнестись более внимательно и быть более осторожным. И так, изменение содержания файла .htaccess послужит хорошим препятствием для хакера. Чтобы заставить этот файл работать во благо безопасности, необходимо добавить следующие строки:

########## Начинаем запись правил чтобы заблокировать основные эксплойты
#
# Блокируем любой скрипт пытающийся получить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]
# Блокируем любой скрипт пытающийся отправить любое дерьмо чере base64_encode по URL
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
# Блокируем любой скрипт который содержит тег < script> в URL
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
# Блокируем любой скрипт, который пытается установить глобальную переменную PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
# Блокируем любой скрипт пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) [OR]
# Блокируем любой скрипт, который пытается установить CONFIG_EXT (баг в com_extcal2)
RewriteCond %{QUERY_STRING} CONFIG_EXT([|%20|%5B).*= [NC,OR]
# Блокируем любой скрипт, который пытается установить sbp or sb_authorname чере URL (баг simpleboard)
RewriteCond %{QUERY_STRING} sbp(=|%20|%3D) [OR]
RewriteCond %{QUERY_STRING} sb_authorname(=|%20|%3D)
# Отправляем все заблокированный запросы на главную с ошибкой 403 Forbidden!
RewriteRule ^(.*)$ index.php [F,L]
#
########## Заканчиваем запись правил чтобы заблокировать основные эксплойты

И в завершении создания неприступной преграды изменим стандартный префикс (jos_) таблиц базы данных , поскольку большинство SQL инъекций для получения необходимой информации для взлома используют именно это свойство Joomla, которое устанавливается поумолчанию, например данные таблиц — jos_users.
Другой префикс для таблицы можно задать непосредственно при установке Joomla, но если система установлена и работа сайта настроена, то в таком случае, нужно:
** войти в панель управления Joomla!. Открыть «Общие настройки» —> «Сервер» и отыскать панель «Установка базы данных».
Именно в этом пункте можно изменить установленный префикс таблиц на любой другой. После того, как записали значение нового префикса, жмем кнопку Сохранить.
Внимание! Если после такого изменения сайт не работает – это нормально и для восстановления работы нужно выполнить:
** войти в PhpMyAdmin. Переходим в кладку экспорт, оставляем все значения по умолчанию и нажимаем кнопку «Пуск/Пошел». Не стоит волноваться, если экспорт данных займет много времени.
Как экспорт будет завершен, выделяем весь код и копируем его в блокнот (или другой текстовый редактор), сохраняем файл. Копию сделали, можем двигаться далее.
Возвращаемся в PhpMyAdmin. Выбираем все наши таблицы, и удаляем.
Еще раз, обязательно убедитесь, что сохранили экспортированный до этого код, иначе потеряете данные сайта!!!
Теперь возвращаемся к текстовому редактору, в котором производим поиск – ключ «jos_» и заменяем этот стандартный префикс на новый (установленный ранее в панели управления Joomla).
Теперь, полученный результат замены префикса, копируем (копируем все!), переходим в PhpMyAdmin, вкладка SQL и вставляем запросы (то, что скопировали в редакторе) и жмем кнопку Пуск.

И на последок, не храните пароли к ФТПИ или к панели управления сайтом в файловых менеджерах, браузерах. Они могут стать легкой добычей для хакера!
А для того, чтобы знать все возможные уязвимые места Joomla следите за обновлениями на сайтах
Securitylab
FrSIRT
Milw0rm
Secunia