Как защитить Joomla 1.5 от взлома хакерами |
Целью написание данной статьи явилась потребность защиты CMS Joomla 1.5 от взлома забугорными хакерами. Так как в 2010 году участились массовые взломы сайтом работающие на Joomla 1.5 в доменной зоне RU. Рассказ про то что Joomla бесплатная и у неё открытый исходный код , который известен всем в том числе и хакерам я упущу. Думаю эту подноготную вы и так сами знаете, так что сразу перейдём к техническим моментам. Часть 1 Как хакеры находят свою жертву Давайте начнём с того , что на сегодняшний день хакерам известны ряд способов взлома Джумлы (об этих способов я расскажу позже детально), и из этого можно сделать вывод если хакеры знают уже готовые способы взлома сайта им остаётся найти всего лишь своё жертву работающую на CMS Joomla чтобы воплотить свой ритуал. Каким образом они это делают ? Способов очень много один из самых распространённых способов - это поиск через поисковую систему с указанием особых параметров ( которые отвечают за cms) и региона сайта. После чего им выдаются результаты поиска где в списке все сайты работающие Joomla такой то версии в такой то стране. Вот так ваши сайты попадают в поле зрение хакеров. Из этого можно сделать вывод самое первое средство защиты от взлома это скрыть информацию о cms работающей на вашем сайте от различных публичных сервисов и поисковиков, чтобы не попасть в список потенциальных жертв. Теперь каким образом наш сайт на Джумле сообщает поисковикам и прочим сервисам интернета что «Я Джумла 1.5» а самым простым если вы откроете исходный код в страничке браузера любого сайта на Джумле то в самом верху кода вы найдёте такую строчку <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" /> да это именно мета тег, который сообщает с помощью какого скрипта была создана (сгенерирована страница), именно по этому мета тегу злоумышленники и находят ваш сайт и тысячи других. Конечно существует ещё способы нахождения сайта работающего на CMS Joomla но эти способы более сложны и применяются очень редко хакерами для поиска жертвы. И так как скрыть ярлык что наш сайт работает на Джумле, для этого нам надо отредактировать файл head.php который даёт именно этот выхлоп в шаблон джумлы, он находиться /libraries/joomla/document/html/renderer/head.php Открыв его находим код (район 83 строки) $strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd; и удаляем его от греха подальше. После того как вы удалили этот код то можно сказать на 90% вы обезопасили себя от попадания вашего сайта в поле зрение хакеров а значит от взлома. Ну если конечно ваш сайт не заказали кто нибудь то данная процедура вам не поможет. (это моё личное мнение) P.S. Моя компания обслуживает множество сайтов на Джумле и когда какой нибудь сайт взламывают хакеры то владелец сайта спрашивает меня чем же мой сайт так привлёк хакеров? Я всегда отвечаю ваш сайт не имеет глобального политического или экономического значение , а значит его хакеры взломали «просто так для спортивного интереса» а взломали ваш именно потому что он просто попался в поиске как потенциальная жертва вот и всё. Часть 2 Основные методы взлома сайта И так если ваш сайт всё таки хакеры обнаружили и решились взяться за взлом они начнут его через уязвимости которые больше всего известны им. Получение административного доступа (Метод сброса пароля) SQL инъекция Ввод методом POST через CURL кода на определённую страницу(по заранее известному коду) Самый распространённый способ взлома это получение доступа к учётной записи администратора , методом восстановление пароля .Как это происходит ? В джумле есть функция восстановления пароля, даже если у вас на сайте на стороне фрондтенда нету опубликованной ссылки на восстановления пароля простая ссылка всегда работает сама /index.php?option=com_user&view=reset Именно по этой ссылки хакеры и могут удалённой методом POST ввести напрямую на сервер свой код, в последствии чего им будет предложено ввести новый пароль и всё пароль от учётки администратора получен. За эту операцию отвечает файл reset.php который находиться в данной директории /components/com_user/models Что бы исключить эту возможность за получение административной учётки хакерами я предлагаю этой файл удалить ,ну это на тот случай если на фронтенде сайта нету сервиса авторизации , ну бывает же много сайтов визиток где нет авторизации и регистрации а удаление этого файла самый верный способ сократить шансы на взлом. Следующий вариант взлома Джумлы это SQL инъекция , про него я особо много я рассказывать не буду, так как это отдельная тема дя разговора. Но отмечу что почва для взлома сайта таким методом есть , так как дырки в коде всегда найдутся. Те кому интересна эта тема могут почитать про SQL инъекции тут http://webew.ru/articles/2078.webew И как же вы скажете с этой порукой бороться ? Простому обывателю мало разберющемся в php и sql есть один подходящий вариант это компонент jFireWall Lite (http://www.jfirewall.com/) на сегодняшний день именно только этот компонент может сам бороться с SQL инъекциями и блокировать нападающего. От себя хочу сказать что работает данный компонент очень эффективно , особенно требуется установка такого компонента на сайты на которых крутятся различные стронции расширения, которые создаются одним или несколькими программистами и в процессе создания не особо уделяется сторона безопасности и грамотного алгоритмического написания кода. Часть 3 Защита файлов и доступа Одним из важных моментов защиты Джумлы является правильное выставление прав доступа к папкам и файлам на хостинге (сервере). Выше я описывал различные методы взлома и получения доступа к сайту, обычно все те действия которые я рассказал сопровождаются загрузкой различных хакерских вредоносных файлов и прочих утилит которые помогают злоумышленнику получить доступ. Ниже я приведу оптимальные права доступа папки и файлы Джумлы которые усложнят хакерам работу и укрепят защиту вашего сайта. Первым делом на все папки и файлы выставляем права доступа 755 и 644 соответственно (рекурсивно). На на отдельные папки я рекомендую поставить следующие права templates 555 (рекурсивно) на файлы в корневой директории 444 на папку tmp 705 на папку logs 705 После защиты прав доступа я предлагаю ввести доступ к папки administrator по паролю который будет осуществляться самим веб сервером апатч. Для этого вам надо создать в папки администратор два файла текстовых это .htaccess в котором будет содержаться директивы доступа к папки administrator и указывать место положение файла с паролями на эту папку в этом файле должен присутствовать следующий код AuthType basic /*тип аунтификации, он у нас один*/ AuthName "123456" /*сообщение при обращении*/ AuthUserFile /абсолютный путь до папки администратор/administrator/.htpasswd /*указание на файл с паролями*/ Require valid-user Как вы ведите нам осталось ещё создать один файл в котором только будет указанно имя пользователя и пароль чтобы происходила аутентификация. Файл .htpasswd тоже должен располагаться в папки администратор но в нём имя пользователя и пароль должни быть написаны в MD5 шифре. Для облегчения данной работы я нашёл сайт где в режиме он лайн можно создать эти два файла автоматически а потом поместить их себе на сайт вот http://www.ifstudio.org/seo/crypt.php В итоги что надо сделать чтоб защитить свой сайт на Джумле 1.Удалить reset.php (чтоб исключить угон учётки админа) 2.Удалить <meta name="generator" content="Joomla! 1.5 - Open Source Content Management" /> чтобы исключить попадания вашего сайта в область поиска хакеров своей жертвы 3.Установить и настроить jFireWall Lite 4.Выставить нужные права на файлы и папки 5.Установить пароль на директорию посредством веб сервер апатч |