Основные приемы защиты достаточно просты и не вызовут проблем ни у новичков, ни тем более у опытных пользователей Джумла.
Прежде чем защищать свой сайт на Joomla, полезно узнать, а от чего собственно его нужно защищать и какие уязвимости чаще всего используют хакеры для взлома сайта.
Основные методы взлома сайта на Joomla:
- Вирус - один из самых опасных. При попадании на компьютер, вирус сканирует его на наличие FTP менеджера. В таких программах многие хранят пароли и адреса серверов, которые скрипт отправит злоумышленнику. Последствие попадания вируса - в код сайта вставляется iframe с вредоносным кодом, различные JS скрипты или ссылки на другие сайты и т.д.. После этого на Ваш сайт начнут ругаться все антивирусы и поисковые системы.
- SQL инъекция - довольно распространённый способ взлома. Основан на получении доступа к файлам базы данных. А если точнее, то к логину и паролю администратора, таким образом, злоумышленник сможет изменить их под свои нужды. Последствие SQL инъекции - взлом пароля Joomla к административной панели сайта.
- Восстановление пароля администратора - сайты на Joomla часто пытаются взломать именно этим способом. Даже если у Вас на сайте стоит компонент генерации ЧПУ, можно всё равно прописать в адресной строке такой код: vash-sait.ru/index.php?option=com_user&view=reset и Вам откроется окошко для восстановления пароля. Хакеры вводят туда специальный код и изменяют Ваш пароль. Последствия потери пароля администратора - думаю, тут и так всё понятно: полный доступ злоумышленника в административную панель Вашего сайта.
- Через «дырявые» расширения - взлом сайта через дырки в различных компонентах, используя ввод методом POST на определённые страницы. Последствия взлома через дырки в расширениях - в папке с компонентом, который взломали, будет лежать много «левых» файлов. Такие сайты, скорее всего, заблокирует хостер. И поисковые системы тоже будут ругаться на то, что на сайте вирус.
- PHP инъекция - внедрение вредоносного кода через Ваш сервер.
- XSS или межсайтовый скриптинг - возникает во время генерации сервером страниц, в которых содержится «вражеский» скрипт. Эта атака так же может произойти из-за Вашего сервера. Например, если с Вами на сервере находится зараженный объект или сайт, то Вы так же подвержены опасности.
Защита сайта на Joomla:
- Установите хороший антивирус на локальном компьютере и обязательно регулярно обновляйте базы вирусов.
- Не скачивайте расширения с непроверенных источников. Скачанные расширения сначала лучше проверить на каком-нибудь демо-сайте на локальном хостинге. А потом, убедившись, что всё в порядке, ставьте на рабочий.
- Обязательно регулярно делайте резервные копии сайта и базы данных. Для этого можно использовать компонент резервного копирования JoomlaPack. Это поможет Вам защититься не только от хакеров, но и от своих собственных ошибок. Если Ваш сайт и заразят, то вы легко сможете его восстановить.
- Для того, чтобы спрятать свой сайт от глаз хакеров, нужно использовать SEF компоненты для генерации человекопонятных ссылок. Можно пользоваться стандартным SEF или, к примеру, ARTIO JoomSEF. Дело в том, что Joomla по своему генерирует ссылки, и они выглядят вот так: http://localhost/sayt/index.php?option=com_content&view=category&layout=blog&id=4&Itemid=3. И хакер может просто вбить в поиске «com_content» (если в нём есть «дырки») или другое уязвимое расширение и ему откроется список сайтов, в котором можете быть и Вы.
- Кроме этого лучше вообще скрыть, какой CMS Вы пользуетесь. Тогда риск попадания сайта в поле зрения хакера резко снижается. Для этого необходимо удалить из кода строчку: <meta name="generator" content="Joomla! - Open Source Content Management" />
- Установите один из многих плагинов для защиты админки сайта, например, плагин plgSystemJSecure. Используя этот плагин, злоумышленник не сможет даже увидеть административную панель, введя просто vash-sait.ru/administrator. Так как в этом плагине нужно будет ввести кодовое слово. После того, как Вы его введёте, ссылка на админ-панель Вашего сайта будет выглядеть так: vash-sait.ru/administrator/?ваше_кодовое_слово.
- Используйте безопасные пароли. Проявите хоть немного фантазии при их составлении.
- Ищите всегда только самые новые версии используемых расширений. Или обновляйте те, которые уже стоят. В Джумла 2,5 механизм обновления компонентов работает достаточно надежно и уменьшает головную боль администратора об обновлении используемых расширений.
- Все неиспользуемые компоненты, модули, плагины, шаблоны и прочее лучше удалять полностью! Например, на каком-то компоненте хакеры нашли уязвимость. Если у Вас стоит именно этот компонент, а Вы им даже не пользуетесь и, естественно, не обновляли его (пусть он даже и выключен), то это всё равно не спасёт Вас от атаки. Оставляйте только самое необходимое и не ставьте все подряд для различных тестов на рабочий сайт.
- Не оставляйте «мусор» в доступных местах — старые php файлики, чего хуже — переименованные в какие нибудь .bak, .old и т.д.
- Так же не помешает взять за правило во все папки бросать пустой index.html (если нет не пустого).
- Если Вы не используете на своем сайте модуль регистрации пользователей, то лучше удалить файлы, которые отвечают за восстановление пароля и его сброс. Можно удалить или всю папку com_user (которая находится по пути vash-sait.ru/components) или отдельный файл, отвечающий за сброс - reset.php. Этот файл находится по пути vash-sait.ru/components/com_user/models.
- Чётко разграничьте права доступа для всех пользователей и групп.
- Необходимо обеспечить безопасность загружаемых пользователями файлов с\на сайт. Например, при загрузке изображений для новостей.
- Для борьбы с SQL инъекциями есть два основных способа. Первый - это установка компонента jFireWall (хороший и довольно мощный компонент, есть бесплатная версия jFireWall Lite). Второй - это смена префикса к таблицам в базе данных. В последних версиях Джумла 2.5 префикс таблиц баз данных генерируется автоматически.
- Необходимо правильно выставить права на файлы и папки. Сделать это можно с помощью FileZilla. Вообще для каждого сервера нужны свои определённые настройки, которые лучше узнать у своего хостера. Обычно права ставят такие: на файлы, которые находятся в корневой директории - 444, на папки в корневой директории ставят - 755, на папки tmp и logs ставят - 705, на паку своего шаблона поставьте - 555, на папку image/stories можно поставить - 755, на папку Cache - 777.
- Отдельное внимание уделить вопросам безопасности через .htaccess — запрет просмотра папок, по возможности доступ к админке с определенных IP адресов / областей.
- Организуйте оповещения администратора сайта на электронную почту и телефон о важных (с точки зрения безопасности) событиях на сайте. На многих хостингах это реализовано и не стоит этим принебрегать.
Надеюсь, что эти рекомендации помогут Вам уберечь сайт от проблем. Если все-таки сайт пал жертвой недоброжелателей, то изучите методику быстрой установки резервной версии сайта при помощи SSH доступа.