Вы здесь: Статьи Статьи о Joomla! Заметаем следы Joomla!


Заметаем следы Joomla!


В стремлении скрыть от хакеров все следы признаков CMS для затруднения ее идентификации и предотвращения неправомерных действий и посягательства на целостность интернет ресурса, пользователи часто забывают о многих признаках CMS Joomla! Попробую разложить по полочкам эти признаки и описать способы избавлений от них. Эта статья не претендует на полноту, но, по ходу поступлений комментариев и замечаний будет постоянно дополнятся и совершенствоваться.

Итак, сначала рассмотрим всевозможные признаки, по которым мы в первую очередь пытаемся идентифицировать систему управления контентом Joomla!

1.    Копирайты внизу страницы. Не все стремятся скрыть движок сайта и поэтому даже не убирают копирайты: например Joomla! is Free Software released under the GNU/GPL License.
2.    Ссылки на страницы. Стандартные ссылки у Joomla! выглядят подобным образом:
http://site.ru/index.php?option=com_frontpage&Itemid=1
http://site.ru/index.php?option=com_content&task=view&id=14&Itemid=1
http://site.ru/content/view/14/1/
и т.д. и т.п.
3.    Админка. Проверяем наличие админки по стандартному адресу Joomla! – site.ru/administrator
4.    Meta-теги. Некоторые доблестные сайтостроители забывают изменить описание сайта и его ключевые слова. В итоге в исходном коде страницы мы можем наблюдать следующее:

<meta name="description" 
content="Joomla - the dynamic portal engine and content management system" />
<meta name="keywords" content="Joomla, joomla" />

А также тег generator, который генерируется ядром:

<meta name="Generator" 
content="Joomla! - Copyright (C) 2005 - 2007 Open Source Matters. All rights reserved." />

5.    Просмотр позиций для модулей. При просмотре сайта по адресу site.ru/?tp=1 можно легко убедиться что сайт работает именно на CMS Joomla!
6.    Robots.txt. Просмотрев этот файлик по адресу site.ru/robots.txt можно также с большей долей вероятности определить CMS:

User-agent: * 
Disallow: /administrator/
Disallow: /cache/
Disallow: /components/

7.    Постраничная навигация сайта. Иногда достаточно одного взгляда на построение постраничной навигации:
<< В начало < Предыдущая 1 2 3 4 5 Следующая > В конец >>
8.    Содержимое папок сайта. На некоторых хостах можно посмотреть содержимое всех папок сайта: например site.ru/components/
9.    Стандартные пути к шаблону и название соответствующих классов (зашитых в ядро). 
10.  Стандартная иконка Joomla! Многие забывают о ней или не считают нужным сменить, но это ведь почти стопроцентный признак.
11. Ошибка 404. После ввода заведомо несуществующего адреса, Joomla! выдает стандартную, всем знакомую красненькую табличку с надписью 404 - Компонент не найден и пояснениями возможных причин.

 

Теперь способы избавления от вышеперечисленных следов:

1.Копирайты в подвале сайта
Joomla 1.0.x
После установки Joomla! внизу страницы мы можем наблюдать примерно такую картину:

© 2009 Site Name
Joomla! is Free Software released under the GNU/GPL License.

Изучив код шаблона (index.php вашего шаблона) мы обнаруживаем такую строку:

<?php include_once( $GLOBALS['mosConfig_absolute_path'] . '/includes/footer.php' ); ?>

Удалив ее, можно избавиться от вывода копирайтов в подвале сайта. Но только для этого шаблона. Если у вас есть вредная привычка часто менять шаблоны, есть смысл сделать небольшой хак, что б избавиться от этого раз и навсегда
Открываем файл includes/footer.php и видим следующие стоки:
Этот div выводит значок копирайта, текущий год и название вашего сайта.

<div align="center">
    &copy; <?php echo mosCurrentDate( '%Y' ) . ' ' . $GLOBALS['mosConfig_sitename'];?>
</div>

А этот div выводит версию движка и лицензию.

<div align="center">
    <?php echo $_VERSION->URL; ?>
</div>

Удаляем или редактируем как нужно.

Joomla 1.5.x
В линейке 1.5.x вывод копирайтов осуществляется в корне отличным способом и убрать его можно как минимум тремя способами:
а) В менеджере модулей отключить вывод модуля "Footer" (mod_footer). Но в этом случае исчезнуть все копирайты, а не только "joomla-овские".
б) В языковом файле \language\ru-RU\ru-RU.mod_footer.ini в строках:
FOOTER_LINE1=
FOOTER_LINE2=
Убрать все, что справа от знака равно
в) В файле \modules\mod_footer\tmpl\default.php отключить вывод 2-ой строки, удалив строку:

<div><?php echo JText::_( 'FOOTER_LINE2' ); ?></div>


2. Ссылки на страницы.
Чтобы изменить стандартный тип ссылок на внутренние страницы Joomla! сайта необходимо использовать сторонние компоненты, которые могут создавать любые ссылки на внутренние страницы вашего сайта – sh404SEF, ARTIO JoomSEF, NuSEF (бесплатные), SEF Advance (платный) и другие. Обзор этих компонентов выходит за рамки этой статьи.

3. Админка.
Всем известно что вход в административную часть сайта на CMS Joomla! осуществляется через site.ru/administrator
Есть два способа скрыть вход в админку.
а) Средствами сервера: поставить пароль на папку administrator
В папке administrator создаем такой .htaccess:

AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user
</Files>

где значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

Но! У этого способа есть один очень существенный недостаток: если используются расширения у которых файлы обращаются к папке администратора (например языковый файл или другие), то вместо требуемого пользователь столкнется с предложением ввести логин и пароль (по отзывам посетителей, а именно SadowXak)
Поэтому способ б) является более предпочтительным:

б) Средствами Joomla: поставить специально предназначенные для этого расширения.

Например плагин для Joomla! 1.5 jSecure Authentication. При переходе на страницу site.ru/administrator он включает заданную переадресацию. В админку можно попасть, только задав ключевое слово в адресной строке: site.ru/administrator/?password

Существует масса подобных расширений на JED.


4. Meta – теги сайта. Description, keywords и Generator.
Содержимое meta-тегов Description и keywords прописывается в глобальных настройках сайта и означает не что иное, как описание сайта и его ключевые слова. Просто не забывайте заполнять эти данные (встречается и такое). А вот на meta-тег Generator без хака мы повлиять не сможем.
Generator для Joomla! 1.0.x:
В исходном коде страниц видим:

<meta name="Generator" content="Joomla! - Copyright (C) 2005 - 2007 Open Source Matters. 
All rights reserved." />

Данная строка выводится в функции mosShowHead() файла includes/frontend.php, строка 195 (для Joomla 1.0.15):

 $mainframe->addMetaTag( 'Generator', $_VERSION->PRODUCT . ' - ' . $_VERSION->COPYRIGHT);

Для удаления этой информации из кода страниц сайта необходимо закомментировать или удалить эту строчку.

smart

Generator для Joomla! 1.5.x:
В исходном коде страниц видим:

<meta name="generator" content="Joomla! 1.5 - Open Source Content Management" />

Есть два способа влияния на мета-тег Generator: путем хака ядра и внесением кода в шаблон.
Первый способ (хак ядра Joomla!) подходит тем, кто не планирует постоянно обновлять ядро сайта и/или часто меняет шаблоны сайта.
Открываем следующие файлы:
libraries\joomla\document\document.php
libraries\joomla\document\html\renderer\head.php

Если хотим просто изменить эту строку, то в файле document.php находим примерно 85 строку:

var $_generator = 'Joomla! 1.5 - Open Source Content Management';

и вставляем свое внутрь кавычек ‘ ‘
Если хотим совсем удалить этот мета тег, то в файле head.php, комментируем // строку (примерно 83):

$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;
Второй способ (правка шаблона), более мягкий и не требует вмешательства в код ядра Joomla! (при обновлениях ядра можно не беспокоиться о хаках, так как их просто не будет).
Где-то между тегами <head> и </head> вставляем следующую строку:
<?php $this->setGenerator('Ваш мета-тег geneator');?>
Или же оставляем пустое значение мета-тега:
<?php $this->setGenerator(''); ?>

5. Исключаем возможность просмотра позиций для модулей через site/?tp=1
Для Joomla! 1.0.x
Для этого нам надо сделать небольшой хак.
Открываем файл /includes/frontend.php
Ищем примерно 129-135 строки (для Joomla! 1.0.15):

$tp = intval( mosGetParam( $_GET, 'tp', 0 ) );
    if ($tp) {
        echo '<div style="height:50px;background-color:#eee;
margin:2px;padding:10px;border:1px solid #f00;color:#700;">';
        echo $position;
        echo '</div>';
        return;
    }

Удаляем их, либо комментируем.

Для Joomla! 1.5.x
Открываем файл /libraries/joomla/application/module/helper.php
Ищем примерно 96-103 строки:

if(count($result) == 0) {
if(JRequest::getBool('tp')) {
$result[0] = JModuleHelper::getModule( 'mod_'.$position );
$result[0]->title = $position;
$result[0]->content = $position;
$result[0]->position = $position;
}
}

Комментируем их, добавляя в начало каждой строки //.
Далее ищем примерно 199-201 строки:

if(JRequest::getBool('tp')) {
$attribs['style'] .= ' outline';
}

Комментируем их, добавляя в начало каждой строки //.

За решение спасибо nikonor


7. Постраничная навигация.
Для изменения внешнего вида постраничной навигации необходимо немного переработать ее вывод. В этом поможет статья «Хак постраничной навигации сайта на CMS Joomla!»

8. Запрет просмотра содержимого папок вашего сайта.
Если набрать адрес существующей папки, например, http://example.org/components/com_content/ и вы видите ее содержимое, то это значит, что на Вашем сервере настроенная выдача список директорий.
Это дает возможность злоумышленнику дополнительные плюсы при изучении вашего сайта. Избежать открытого списка можно двумя способами:
1. В .htaccess или в конфигурации apache создать директиву:

Options -Indexes

2. В каждую директорию положить пустой файл index.html. По умолчанию загружается файл с названием index (.htm, .html, .php и т.д.).

Dutch

10.  Стандартная иконка Joomla!
В первую очередь иконка сайта favicon.ico ищется в корне сайта. Вы можете создать свою иконку (например с помощью сервиса http://favicon.ru) и загрузить ее в корень. Второй вариант - иконка помещается в папку вашего шаблона. Для большей уверенности можно также прописать в index.php шаблона в блоке <head>

<link rel="icon" href="http://ваш-сайт.ru/путь_к_иконке/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="http://ваш-сайт.ru/путь_к_иконке/favicon.ico" type="image/x-icon">

 

11. Ошибка 404.
Для скрытия этого признака нужно создать собственную страницу 404 ошибки и оформить ее в стиле шаблона либо как захочется. Все варианты решения этого вопроса приводить не буду а просто дам ссылку на тему из FAQ на joomlaforum.ru - Cобственная страница ошибок 404 в Joomla! 1.5

Заключение
Существуем множество ресурсов, которые в полуавтоматическом режиме определяют CMS, на которой построен сайт.
Если с помощью сервиса www.builtwith.com ваш сайт не определился, как сайт на Joomla!, значит, как минимум, статью вы прочитали не зря :)
Пример удачного скрытия следов Joomla! - http://builtwith.com/sanyzel-citi.ru
Пример определения сайта на CMS Joomla! - http://builtwith.com/eldia.org.ua

Комментарии  

 
-1 #81 Раиса 09.07.2011 11:25
Да, обновляться не получится. Во-первых, при обновлении появляются снова копирайты и всякая дополнительная чушь, а потом, что обновлять: модули, компоненты, шаблон, жумлу?
Садомазохизм какой-то.
Папку администратор не так просто переименовать.
Можно, конечно, переписать ядро жумлы, но это уже будет не жумла и ее потом не обновить.
Говорили - балакали і сіли заплакали.
Ото така стаття.
Цитировать
 
 
-1 #82 Ломалкин 12.07.2011 03:52
Цитирую Sergey:
А чем обновляться? Ставить новые модули? или что именно?


Обновлять нужно и саму Джумлу и те модули, которые вы в ней используете, этим вы закроете найденные в них дыры и чем своевременнее вы будете это делать, тем сложнее будет сломать сайт. Но тут следует учитывать тот момент, что обновлениями разработчиков закрываются только общеизвесные дыры, приватные, не найденные сообществом дыры обновления не закроют. Поэтому я и говорю о том, что если сайт захотят сломать, то его сломают при любом раскладе.
Обычно как происходит взлом, определяется движок, его версия, потом гуглятся анонсированые эксплойты под него, если движок с последними обновлениями, то и вероятность использования дыр меньше, вот тогда уже начинается ковыряние ручками... как то так.
Цитировать
 
 
#83 Ломалкин 12.07.2011 03:54
Цитирую Sergey:
А чем обновляться? Ставить новые модули? или что именно?


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

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


Защитный код
Обновить

Популярные файлы

1.
Компонент Миграции с Joomla! 1.0.x на Joomla! 1.5.x
6075
2.
Плагин RESTFul миграции с Joomla! 1.5 на Joomla! 2.5 - JUpgrade Pro
4558
3.
Компонент миграции с Joomla! 1.0 на Joomla! 1.5 - mtwmigrator
3387

Последние комментарии

  • Огромное СПАСИБО! Подробнее....
    От ALEXANDR ERSHOV
  • Спасибо за подсказку! Обновила языковой пакет и вс... Подробнее....
    От Валентина
  • И ведь не сложная сама по себе штука, но пока знан... Подробнее....
    От Lstchk