AmiSEO Drupal Хитрости Скрываем факт, что наш сайт работает на Drupal
Печать PDF

Скрываем факт, что наш сайт работает на Drupal

+ 5
+ 1

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

Давайте посмотрим, что можно сделать, чтобы скрыть тот факт, что вы используете Drupal.

Убираем тэг meta generator в Drupal 7

Drupal 7 добавляет заголовок «Meta Generator» чтобы объявить, что сайт работает Drupal. Вы можете увидеть это, посмотрев исходный код страницы. Он не раскрывает конкретные версии Drupal 7 в точности (к примеру 7,14 или 7,13), только, что это ветка CMS Drupal 7.

<meta name="Generator" content="Drupal 7 (http://drupal.org)" />

Вы можете убрать его, добавив или изменить функцию в template.php:

<?php
/**
 * Implements theme_html_head_alter().
 * Removes the Generator tag from the head for Drupal 7
 */
function YOURTHEME_html_head_alter(&$head_elements) {
 unset($head_elements['system_meta_generator']);
}
?>
 

Удаление сигнальных текстов типа CHANGELOG.txt

Ядро Drupal содержит порядка 27 различных текстовы файлов, способных выдать, что это Drupal 7, навроди этих

$ find ./ -name '*.txt'
./COPYRIGHT.txt
./MAINTAINERS.txt
./sites/all/README.txt
./modules/simpletest/tests/common_test_info.txt
./modules/simpletest/files/html-1.txt
./modules/simpletest/files/javascript-1.txt
./modules/simpletest/files/php-1.txt
...

По умолчанию  веб-сервера оправляют эти файлы в браузер, не скрывая содежимого. Это может выдать нас. Если ваш сайт позволяет загружать файлы формата TXT, как прикрепленные, то скрыть их на сервере не получится. Придется удалить их полностью. Это можно сделать простой командой на Linux /Mac  машинах. Эта команда работает рекурсивно, поэтому должна быть запущена из корня Drupal сайта. Также она удалит текстовые файлы пользователей, если они их загружали

find . -name '*.txt' -exec rm {} \;

Подобную операцию, конечно, лучше делать не на живом сайте. Хотя навредить сайту она и не способна. Можно так же искать текст внутри файлов, навроди  «git fetch», «git checkout», «release-name»

Проверить заголовки Expires

Оказывается, день рождения Dries Buytaert — 19 ноября 1978 года установлено как «срок годности файлов» (expires date). Я знаю это, проверяя эту дату практически на любом сайте работающем на Drupal:

greggles@biff:~$ /usr/bin/lwp-request -dem GET drupal.org | grep Expires
Expires: Sun, 19 Nov 1978 05:00:00 GMT
greggles@biff:~$

Вы можете установить абсолютно другие даты истечения в своем модуле используя drupal_add_html_head:

<?php
/**
 * Implements hook_init().
 */
function mymodule_init() {
 // Change to a different but still "old" value.
 drupal_add_http_header('Expires', 'Sun, 26 June 1978 05:00:00 GMT');
}
?>

Пройтись по директориям в поисках статусов HTTP 200/404/403

Еще одина уловка, позволяющая определить на какой CMS работает сайт — протестировать структуру директорий и основных страниц, чтобы определить, какой код они возвращают 200, 404 или 403. Попробуйте /user, /sites и /totalandutternonsense. Если вы попробуете адреса /logout или /user/logout, то увидите, что сайт работает на Drupal.

Скрыть это можно переименовав пути администратора, такие как user или admin. А так же другие, известные пути, навроди node. Так же нужно, чтобы страницы 404 и 403 выдавали тот же http заголовок и содержание, как и при попытке зайти в директорию на сервере. Это позволит скрыть структуру директорий.

Ищите дефолтные текстовые сообщения

Если вы зайдете на страницу /user вы скорее всего увидите форму входа, говорящую вам «Enter your @site-name username.» и «Enter the password that accompanies your username.». Страница запроса нового пароля запросит у вас «Username or e-mail address» или, если у вас очень старый сайт (Drupal 4.7), вы увидите раздельные поля для ввода адреса почты и имени пользователя. Если вы наберете эти фразы в поисковик, то обнаружите кучу сайтов, работающих на Drupal. И это только по одному сообщению интерфейса сайта…

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

Посмотрите на HTML

Взгляните на html-код темы Bartik для анонимного пользователя:

Многие модули и темы содержат одинаковые строки HTML, которые являются легко узнаваемыми.

Что можно сделать? Можно переписать код на другой используя функции Drupal. Ядро Drupal 7 имеет 183 функции для работы с темизацией и 53 шаблона, которые придется исправить.

Одной из областей, которую почти невозможно скрыть — это значения Drupal Form ID. Вот часть регистрационную форму на drupal.org:

<form id="user-login" method="post" accept-charset="UTF-8" action="/user?destination=home">
...
<input id="form-86a162e837cebba89a70ca115f7a6313" value="form-86a162e837cebba89a70ca115f7a6313" name="form_build_id" type="hidden" />
<input id="edit-user-login" value="user_login" name="form_id" type="hidden" />
...

 

Скрыть ее от чужих глаз будет нереально из-за сильной интеграции с ядром.

Какие побочные эффекты принесут нам все эти изменения?

Конечно это огромное количество времени, потраченое на удаление следов Drupal.

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

Какой в этом смысл?

Вы все еще читаете? Если это так, надеюсь, вы чувствуете, что это огромное количество работ и предварительных и на постоянной основе. Было бы гораздо лучше просто сосредоточиться на реальной безопасности вашего сайта, а не скрывать, что вы используете Drupal. Поэтому наш вердикт — смысла в этом нет, разве что совсем чуть-чуть :-)

Комментарии 

 
+1 #4 AmiWeb 20.07.2015 18:43
Quoting
:D Вы серьёзно? А как же необходимый нам файл robots.txt ???

В общем то вы правы. Тут косяк есть. Но с другой стороны в файле robots.txt дофига друпаловского палева, я бы его удалил или заменил на что-то попроще
Цитировать
 
 
+1 #3 Альберт 14.07.2015 15:32
find . -name '*.txt' -exec rm {} \;
:D Вы серьёзно? А как же необходимый нам файл robots.txt ???
Цитировать
 
 
0 #2 Иван 19.03.2015 22:26
Лучше скрыть админку! www.site/user
Цитировать
 
 
+5 #1 Имя 09.09.2014 11:13
+1

"Было бы гораздо лучше просто сосредоточиться на реальной безопасности вашего сайта, а не скрывать, что вы используете Drupal. Поэтому наш вердикт — смысла в этом нет"
Цитировать