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

Убрать следы Joomla в коде
Убрать следы Joomla в коде

Существует множество ботов, которые лазят по просторам интернета и собирают сайты по определенным критериям. В какой-то момент времени у популярных расширений появляется так называемая уязвимость нулевого дня - уязвимость есть, а решения по её устранению ещё нет на сайте. И тогда боты массово активизуруются в данный момент и взламывают тысячи сайтов, подверженных этой уязвимости. В тоже время сайты на неизвестной CMS обходятся стороной.

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

В первую очередь удаляем информационные файлы readme, license и т.д. - без них ваш сайт вполне будет работать без изменений. Можно воспользоваться поиском через SSH или ftp-менеджер, найти искомые файлы и удалить.

Не забывайте, что при обновлении в корне файла создаются файлы:

htaccess.txt, LICENSE.txt, README.txt, robots.txt.dist, web.config.txt

Изменения при необходимости перенести в действующие файлы, а сами файлы необходимо удалить. Не забывайте убирать комментарии в файле robots.txt - эта информация будет полезна только злоумышленникам.

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

Стандартные шаблоны Joomla в зависимости от версии будут называться atomic, beez_20, beez5, beez, protostar, ja_purity, rhuk_milkyway

Их можно удалить через менеджер расширений в админке, если там удалены, то иногда надо вручную удалять файлы шаблонов, которые появляются вместе с обновлением на новую версию. Внимание! Если ваш сайт использует стандартный template, рекомендуется пересохранить шаблон под другим именем: это защитит вас от перезаписи правок при обновлении!

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

Теперь переходим к админке и файлам в папке administrator. Защита админки является важным нюансом даже без скорытия следов джумлы. На практике есть различные расширения, которые помогают справиться с этим, однако я предпочитаю более простой способ, используя стандартные средства Apache, или говоря простым языком, редактируя файл .htaccess. Сейчас объясню, почему этот метод более действенный. Одним из самых простых и действенных способов определения точной версии Joomla является просмотр файла /administrator/manifests/files/joomla.xml

Однако закрыв полностью доступ к папке administrator мы не только защитим админку джумлы, но и спрячем от посторонних глаз системные файлы, которые содержат много полезной информации.

Кроме этого в других xml файлах можно найти полезную информацию о версиях установленных расширений: компонентов, модулей, плагинов и шаблонов, - для этих целей я решил защитить файлы с расширением .xml .sql .ini от посторонних глаз. Это решение укрепит предыдщий вариант, а также подойдет для тех кто не хочет прятать админку Joomla.

Для этого добавим в корневом .htaccess файле следущие строки

<Files "[^sitemap.xml]*\.(xml|sql|ini)$">
Order allow,deny
Deny from all
Satisfy all
</Files>

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

Мы уже неплохо поработали над сокрытием следов Joomla с сайта, однако тперь мы еще больше начнем менять код системных файлов джумлы.

Внимание! С обновлением следующие пункты могут потребовать очередных правок для восстановления изменений.

При заходе на любой джумловский сайт можно увидеть в коде страницы между тегами <head></head> явное указание джумлы

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

Даже для многих оптимизаторов эта строка является мусором. Поэтому мы обязательно уберем её со всех страниц нашего сайта.

Для тех кто не хочет лезть в код есть готовый плагин ByeByeGenerator, в другом случае есть два вариант решения:

Внимание! Все правки подразумевают, что вы хоть немного разбираетесь как править html и php код!

в индексный файл шаблона (templates/yourtemplatename/index.php) перед выводом html задать свой генератор 

<?php $this->setGenerator(''); ?>

или же вовсе убрать подгрузку генератора джумлы:

<?php unset($this->_generator);  ?>

Обязательно перед этим должна вызываться подгрузка документа JFactory::getDocument(), если такого нет, то следует добавить что-то типо

<?php $doc = JFactory::getDocument();  ?>

Обязательно стоит проверить работоспособность данного метода, работает не на всех шаблонах. Однако данный метод позволит спокойно обновляться на следующие версии Joomla

В противном случае придется править системные файлы:

Находим /libraries/joomla/document/renderer/html/head.php и удаляем или комментируем строку:

$buffer .= $tab . '<meta name="generator" content="' . htmlspecialchars($generator) . '" />' . $lnEnd;

Остался ещё один явный признак указания джумлы в коде. Не все вебмастеры знают о нем, поэтому порой обходят его стороной. Мы будем заметать следующий признак

<!-- generator="Joomla! - Open Source Content Management" -->

Такую строку можно встретить в списке лент RSS /?format=feed&type=rss или Atom /?format=feed&type=atom

В последних версиях Joomla за это отвечает файл /libraries/joomla/document/feed.php, в более ранних версиях придется править оба файла /libraries/joomla/document/feed/renderer/atom.php и /libraries/joomla/document/feed/renderer/rss.php

По аналогии ранее удаляем или комментируем следующую строку:

$data .= "<!-- generator=\"" . $this->getGenerator() . "\" -->\n";

Эту правку возможно придется повторить в будущем после обновления.

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

Upd: В последних версиях джумлы в файле .htaccess есть следующие строки:

## No directory listings
IndexIgnore *

## Can be commented out if causes errors, see notes above.
Options +FollowSymlinks
Options -Indexes

Это казалось бы должно выдавать ошибку на попытку просмотра директорий на сайте. Однако тут срабатывает старый приём - во многих папках размещен пустой файл index.html, в результате нам выдается содержимое этого файла вместо ошибки доступа к директории. Некоторые зададутся вопросом, а какая разница, типо и так и так доступа нету к папкам. Всё очень просто, любой сканер получив положительный результат сможет выстроить архитектуру папок и файлов на сервере - по этой иерархии легко определить исходную CMS. Именно поэтому стоит удалить пустые индексные файлы с папок и добавить строки в файл .htaccess, если раньше не было сделано.

 

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