

В стремлении скрыть от хакеров все следы признаков 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">
© <?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Пункт 10 (смена фавиконки) появится позже.
Буду благодарен за любые идеи.
Коммент от
Май 25, 2009Комментатор
ShadowXakтакая вата у меня была с файловым архивом!!!
Коммент от
Май 26, 2009Комментатор
Aleks_El_DiaВ таком случае применяем вариант б)
Надо еще упомянуть о фавиконке
Коммент от
Июн 06, 2009Комментатор
pedrosoftКоммент от
Июн 15, 2009Комментатор
MiFНу если вы хотите чтоб ваш сайт (а особенно сайт сделанный вами на заказ) стал площадкой для тренировки начинающих кулхацкеров то дерзайте =) оставляйте как есть..
Коммент от
Июн 17, 2009Комментатор
pedrosoftвы думаете начинающему колхацкеру подсилу сломать жумла 1.5.11? почему вы вообще думаете что джумла дырявая системы и если будут ломать то будут ломать именно через джумлу?
Коммент от
Июн 28, 2009Комментатор
MiFСвязка Жумла+компонент ы неразлучна..дырявым может быть что угодно, это уже как искать. На жумлу не просто так регулярно заплатки безопасности выходят.
Коммент от
Июн 29, 2009Комментатор
pedrosoftи что? вы следуете принципу: "волков бояться - в лес не ходить". для тех кто умеет ломать определить систему не составит труда, так какой смысл её скрывать от тех кто всё равно не сможет причинит вреда? что б [Ой!] себе на жопу геморроя при обновлении cms добавить? [Ой!]-весёлая затея!
Коммент от
Июл 10, 2009Комментатор
ЯдерныйКоммент от
Авг 02, 2009Комментатор
АлександрRSS лента комментариев этой записи