Joomla практика защиты от взломов

Реальная ситуация взломан сайт на Joomla.

Надо провести анализ, и выяснить что это за инъекции такие.
И для чего и кто ломает мои сайты.
Вообще нужно понять природу этих проникновений и цели злоумышленников, чтобы, эффективно противостоять им.
Ты сможешь это сделать? Надо усиливать защиту, продолжать так работать — это очень плохо.

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

Joomla практика защиты от взломов

Просто как бы у меня не супер-пупер интернет-магазин, чего меня ломают то? Мне все таки хочется поспокойнее работать.
Обороты не те у меня, чтобы меня ломать каждый день. Зачем? Неужели нет способа избавиться от атак?

Сайты восстановил. Спецслужбы конечно же такими вопросами заниматься не будут, это не их масштаб. Ломает тут какая то программа-скрипт который написал хакер, (физически нельзя взломать все папки сайта в одно и то же время), а может быть это и человек даже вероятно группа лиц преследующая какие то непонятные интересы. Если закрываешь дыру, они используют новый способ. К сожалению joomla это типа windows на компьютерах очень ненадежная система относительно взломов и вирусов.
Я сталкивался со взломом сайтов, которые делал клиентам, но там обычно или на главной был какой нибудь хакерский лозунг или вообще сайт не грузился, обычно с этим справлялся сменой префикса и защитой админки. 100% ломали джумлу.
С такими взломами как у тебя не сталкивался.

Думаю переход на более защищенную систему для магазинов типа битрикс (но там одна лицензия стоит порядка ..тр) или ее свободный аналог opencart (могу перевести магазин за ..тр и примерно 15-30 дней) мог бы решить такую проблему. Но конечно гарантировать не могу, т.к. ломают любые системы.

Joomla практика защиты от взломов

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

  • Вирус — один из самых опасных. При попадании на Ваш компьютер, вирус сканирует его на наличие FTP менеджера ити Total Commander. В этих программах хранятся Ваши пароли и адреса серверов, которые скрипт отправит злоумышленнику. Этого будет достаточно, чтобы потерять сайт. Самым опасным этот метод считается потому, что Вы рискуете остаться без всех своих сайтов сразу! Последствие попадания вируса — в код сайта вставляется iframe с вредоносным кодом, различные JS скрипты или ссылки на другие сайты и т.д.. После этого на Ваш сайт начнут ругаться все антивирусы и поисковые системы.
  • SQL инъекция — довольно распространённый способ взлома. Основан на получении доступа к файлам базы данных. А если точнее, то к логину и паролю администратора. Таким образом злоумышленник может не только увидеть Ваш логи и пароль или другие данные, но и изменить их под свои нужды. Последствие SQL инъекции — взлом пароля Joomla к административной панели сайта. Так же злоумышленник может вообще удалить всю информацию Вашего сайта.
  • Восстановление пароля администратора — в последнее время сайты на Joomla всё чаще пытаются взломать именно этим способом. Даже если у Вас на сайте стоит компонент генерации ЧПУ, можно всё равно прописать в адресной строке такой код: your_site/index.php?option=com_user&view=reset и Вам откроется окошко для восстановления пароля. Хакеры вводят туда специальный код и изменяют Ваш пароль. Последствия потери пароля администратора — думаю, тут и так всё понятно. Полный доступ злоумышленника в административную панель Вашего сайта. Только представьте, что может сделать , к примеру, Ваш конкурент?
  • Через дыры в расширениях — взлом сайта через дырки в различных компонентах, используя ввод методом POST на определённые страницы. Последствия взлома через дырки в расширениях — в папке с компонентом, который взломали, будет лежать много «левых» файлов. Такие сайты скорее всего заблокирует хостер. И поисковые системы тоже будут ругаться на то, что на сайте вирус.
  • PHP инъекция — внедрение вредоносного кода через Вашего сервера.
  • XSS или межсайтовый скриптинг — возникает во время генерации сервером страниц, в которых содержится «вражеский» скрипт. Эта атака так же может произойти из-за Вашего сервера. Например, если с Вами на сервере находится зараженный объект или сайт, то Вы так же подвержены опасности.

Как защитить сайт на Joomla от взломов и хакерских атак

  • Установите хорошее антивирусное программное обеспечение. Но кроме этого нужно ещё регулярно проводить обновления базы вирусов.
  • Не скачивайте расширения с непроверенных источников и старайтесь их не использовать. Я, например, однажды скачал какой-то шаблон для тестирования и обнаружил на нём чужие ссылки на разные сайты. Этого урока мне хватило, чтобы больше не лазить по таким говно-порталам, а качать всё с официальных источников. Но если уж Вы скачали что-то с ненадежного сайта, то перед установкой сначала проверьте антивирусом на наличие сюрпризов, просмотрите файлы расширения на наличие чужих ссылок. Не рекомендую непроверенные расширения ставить на рабочий сайт, сначала лучше проверить на каком-нибудь демосайте на локальном хостинге. А потом, убедившись что всё в порядке, ставьте на рабочий.
  • Обязательно делайте резервные копии сайта и базы данных. Для этого можно использовать компонент резервного копирования Akeeba backup. Это поможет Вам защититься не только от хакеров, но и от своих собственных ошибок. Я делаю резервные копии после каждого изменения на блоге (написал статью — сохранился!). Только не забывайте скачать файл бэкапа на компьютер, а то хакеры могут его просто удалить с сервера.
  • Для того, чтобы спрятать свой сайт от глаз хакеров, нужно использовать SEF компоненты для генерации понятных ссылок. Можно пользоваться стандартным SEF или, любым сторонним. Дело в том, что Joomla по своему генерирует ссылки, и они выглядят вот так: _http://localhost/yoursite/index.php?option=com_content&view=category&layout=blog&id=4&Itemid=3. И хакер может просто вбить в поиске «com_content» (если в нём есть «дырки») или другое уязвимое расширение и ему откроется список сайтов, в котором можете быть и Вы со своим сайтом.
  • Кроме этого лучше вообще скрыть, какой CMS Вы пользуетесь. Тогда риск попадания Вашего сайта в поле зрения хакера резко снижается. Для этого необходимо удалить из кода Вашего сайта строчку:
<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

Заходите на свой сайт (Как подключиться к сайту через FTP клиент FileZilla?) и идёте по этому пути your_site/libraries/joomla/document/html/renderer/. В этой папке находите файл head.php и открываете его, например, блокнотом. С помощью поиска ищете эту строку (joomla 1.5):

$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;

Удалите её и скопируйте файл обратно на сайт. Теперь у Вас уже стало на одну лишнюю строку кода меньше.

  • Установите плагин plgSystemJSecure. Используя этот плагин, злоумышленник не сможет даже увидеть вашу административную панель, введя просто your_site/administrator. Так как в этом плагине нужно будет ввести кодовое слово. После того, как Вы его введёте, ссылка на админ-панель Вашего сайта будет выглядеть так: your_site/administrator/?ваше_кодовое_слово. Это достаточно хорошая защита админки Joomla.
  • Ищите всегда только самые новые версии используемых Вами расширений. Или обновляйте те, которые уже стоят. Разработчики часто выпускают обновления своих продуктов, ибо хакеры вечно находят в них какие-нибудь изъяны.
  • Все неиспользуемые компоненты, модули, плагины, шаблоны и прочее лучше удалять полностью. Даже базу данных желательно почистить. Например, на каком-то компоненте хакеры нашли уязвимость. Если у Вас стоит именно этот компонент, а Вы им даже не пользуетесь и, естественно, не обновляли его (пусть он даже и выключен), то это всё равно не спасёт Вас от атаки. Так что лучше удалять всё подчистую. Оставляйте только самое необходимое и не ставьте все подряд для различных тестов на рабочий сайт.
  • Для того, чтобы хакеры не знали, какая версия уязвимого компонента установлена (версии постоянно обновляются и избавляются от «дырок»), нужно удалить номера версий всех сторонних расширений. Для этого скачайте себе на компьютер все сторонние компоненты, модули, плагины и шаблоны с помощью FTP менеджера FileZilla или другого клиента и с помощью любого текстового редактора удалите в этих файлах любые упоминания о версиях расширений.
  • Если Вы не используете на своем сайте модуль регистрации пользователей (у меня его тоже нету, кстати), то лучше удалить файлы, которые отвечают за восстановление пароля и его сброс. Можно удалить или всю папку com_user (которая находится по пути your_site/components) или отдельный файл, отвечающий за сброс — reset.php. Этот файл находится по пути your_site/components/com_user/models.
  • Для борьбы с SQL инъекциями есть два основный способа. Первый — это установка компонента jFireWall (есть бесплатная версия jFireWall Lite). Второй — это смена префикса к таблицам в базе данных. Второй способ я опишу поподробнее, так как изменение этого префикса может защитить Вас практически от всех SQL инъекций. Сначала рекомендую Вам отключить сайт в общих настройках joomla, так как он всё равно выйдет из строя на некоторое время и обязательно сделать резервную копию сайта и базы данных. А теперь поехали по порядку:

— заходите в админа панель своего сайта, переходите в общие настройки/сервер. В правой части экрана ищите «Префикс базы данных», там будет написано faqj_. Заменяете его на любую надпись, например, на asd_ и сохраняете;

— заходите в PhpMyAdmin и делаете экспорт своей базы данных на компьютер и сохраняете её. Для сохранения базы выберете её и в правой части экрана вверху ищите «Экспорт». Выделяете все части базы, внизу ставьте SQL и ещё чуть ниже «Сохранить как файл». Справа внизу нажимаете на кнопочку «Ok». Сделайте ещё одну копию на всякий случай и сохраните куда нибудь в другое место;

— после того, как Вы убедились в том, что база данных успешно сохранена, можно приступить к удалению базы из PhpMyAdmin. Для этого выберете Вашу базу, промотайте мышь в низ экрана и найдите там «Отметить все». Отмечаете и чуть правее ищите «С отмеченными» и выбирайте удалить;

— теперь открывайте сохранённый файл с базой данных, к примеру, блокнотом. Нажимайте Ctrl+H и в появившемся окне можно одним махом изменить все префиксы в Вашей таблице, нажав на «Заменить все»;

— на а теперь заходите опять в PhpMyAdmin и нажимайте справа вверху «Импорт» и выбирайте Ваш файл с новыми данными. Кодировку поставьте UTF-8.

  • Необходимо правильно выставить права на файлы и папки. Сделать это можно с помощью FileZilla. Вообще для каждого сервера нужны свои определённые настройки, которые лучше узнать у своего хостера. Но обычно права ставят такие: на файлы, которые находятся в корневой директории 444, на папки в корневой директории ставят 755, на папки tmp и logs ставят 705, на паку своего шаблона поставьте 555, на папку image/stories можно поставить 755, на папку Cache 777.

Joomla практика защиты от взломов

Рекомендации по снижению риска взлома Joomla сразу после установки системы

1. После установки не забудьте удалить каталог installation.

2. Смените логин — admin, который используется для доступа в панель администратора по умолчанию. Также не будет лишним поставить пароль посложнее в котором должны присутствовать буквы и цифры.

3. Измените установленный по умолчанию префикс (jos_) к таблицам в базе данных.

4. Удалите номера версий — название расширений.

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

  •     Скачайте нужные файлы расширений с вашего сервера.
  •     Откройте редактор кода.
  •     Откройте любой из файлов расширений, которые Вы только что загрузили на Ваш компьютер.
  •     И начните поиск необходимого Вам словосочетания, где указана версия расширения. Если Вы не знаете в каком конкретно файле искать, то можно воспользоваться поиском по всему каталогу расширений.
  •     Установите параметры поиска по словосочетанию «Версия мое расширение 2.14» (это пример) и нажмите «ОК».
  •     Когда найден искомый запрос, удалите номер версии.
  •     Загрузка измененный файл на сервер и убедиться, что были внесены изменения.

5. Используйте SEF компоненты.
6. Права на папки.

Один немаловажный элемент защиты это установление прав доступа к тому или иному файлу или каталогу.
Установите:

  •     на файл конфигурации выставить права 444
  •     php файлы – 644
  •     прочие каталоги – 755

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

7. Поставьте пароль на каталог administrator. Это можно сделать через панель управления практически любого хостинга. Заходим в Файл-менеджер, внутри панели управления, ставим галочку, напротив нужно каталога, кликаем по изображению замка, пишем логин с паролем, на этом установки закончены. Таким образом админка защищена сразу двумя паролями.

8. Удаляйте остатки файлов.

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

9. Для того чтобы заблокировать некоторые основные эксплойты добавьте следующие строки в .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]
 

хостинг

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

3 × пять =