Вы здесь: Статьи Статьи о 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

Комментарии  

Коммент от
Май 15, 2009
Комментатор
Aleks_El_Dia
0 Пункты 6 (Скрытие просмотра файла roobots.txt) и 9 (Изменение стандартных путей к шаблону) пока не описаны.
Пункт 10 (смена фавиконки) появится позже.
Буду благодарен за любые идеи.
Коммент от
Май 25, 2009
Комментатор
ShadowXak
0 3. Админка. - полная чушь - если используются расширения у которых языковый файл или еще какие обращаются в папки админки, то вместо требуемого пользователь столкнется с предложением ввести логин и пароль :)
такая вата у меня была с файловым архивом!!!
Коммент от
Май 26, 2009
Комментатор
Aleks_El_Dia
+1 Цитирую ShadowXak:
3. Админка. - полная чушь - если используются расширения у которых языковый файл или еще какие обращаются в папки админки, то вместо требуемого пользователь столкнется с предложением ввести логин и пароль :)
такая вата у меня была с файловым архивом!!!

В таком случае применяем вариант б)

Надо еще упомянуть о фавиконке :-)
Коммент от
Июн 06, 2009
Комментатор
pedrosoft
-5 я тоже считаю что это пустая трата времени, для тех кто умеет ломать определить систему не составит труда.
Коммент от
Июн 15, 2009
Комментатор
MiF
+8 Цитирую pedrosoft:
для тех кто умеет ломать определить систему не составит труда.

Ну если вы хотите чтоб ваш сайт (а особенно сайт сделанный вами на заказ) стал площадкой для тренировки начинающих кулхацкеров то дерзайте =) оставляйте как есть..
Коммент от
Июн 17, 2009
Комментатор
pedrosoft
+1 Цитирую MiF:
Цитирую pedrosoft:
для тех кто умеет ломать определить систему не составит труда.

Ну если вы хотите чтоб ваш сайт (а особенно сайт сделанный вами на заказ) стал площадкой для тренировки начинающих кулхацкеров то дерзайте =) оставляйте как есть..

вы думаете начинающему колхацкеру подсилу сломать жумла 1.5.11? почему вы вообще думаете что джумла дырявая системы и если будут ломать то будут ломать именно через джумлу?
Коммент от
Июн 28, 2009
Комментатор
MiF
+1 Цитирую pedrosoft:
почему вы вообще думаете что джумла дырявая системы и если будут ломать то будут ломать именно через джумлу?

Связка Жумла+компонент ы неразлучна..дырявым может быть что угодно, это уже как искать. На жумлу не просто так регулярно заплатки безопасности выходят.
Коммент от
Июн 29, 2009
Комментатор
pedrosoft
+2 Цитирую MiF:
Связка Жумла+компонент ы неразлучна..дырявым может быть что угодно, это уже как искать. На жумлу не просто так регулярно заплатки безопасности выходят.

и что? вы следуете принципу: "волков бояться - в лес не ходить". для тех кто умеет ломать определить систему не составит труда, так какой смысл её скрывать от тех кто всё равно не сможет причинит вреда? что б [Ой!] себе на жопу геморроя при обновлении cms добавить? [Ой!]-весёлая затея!
Коммент от
Июл 10, 2009
Комментатор
Ядерный
+5 Самое главное и важное — это заменить стандартную фаиконку на сайте!!!
Коммент от
Авг 02, 2009
Комментатор
Александр
0 А еще есть куки и css.

Оставить комментарий

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

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

1.
Компонент Миграции с Joomla! 1.0.x на Joomla! 1.5.x
2092
2.
Хак постраничной навигации сайта на CMS Joomla!
869
3.
Дополнительное изменяемое поле "Телефон"
509

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

  • Так введите это имя и пароль/мыло админа и заканч... Подробнее..
    От Aleks_El_Dia
  • делал, делал, миграция прошла успешно, жму далее -... Подробнее..
    От Вася
  • Ссылочка битая. Если всё же появится время - пожа... Подробнее..
    От skai