Устранение возможностей для сбора баннеров в Apache Tomcat

Не позволяйте своей среде Tomcat информировать злоумышленников

Comments

Apache Tomcat — один из самых популярных в мире веб-серверов с открытым исходным кодом. Он применяется как в крупномасштабных производственных средах, так и небольших начинающих компаниях, а также в экспериментальных реализациях. К сожалению, популярность Tomcat сделала его и целью для хакеров, стремящихся обнаруживать и использовать уязвимости в системе обеспечения безопасности этого веб-сервера, особенно в более старых версиях.

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

Я начну с краткого введения в методику сбора баннеров, а затем покажу, как защитить веб-сервер Tomcat от этой методики. Обратите внимание, что изложенные инструкции подходят для сервера Tomcat любой версии, исполняющегося в среде Linux® или Windows®.

Что такое сбор баннеров?

Вероятно, вам знакома картинка, показанная ниже — так выглядит экран хост-приложения (в данном случае веб-сервера Tomcat) в режиме доступа посредством SSH-терминал и простой Telnet-команды.

Рисунок 1. Запрос к хост-серверу
Screenshot of a server host request.
Screenshot of a server host request.

Если атакующий злоумышленник хочет отыскать уязвимости в системе, одним из простых путей решения этой задачи является т.н. методика «сбора баннеров». Как показано на рис. 1, «баннер» (текст, отображаемый хост-сервером) содержит сведения о программном обеспечении, которое исполняется в системе, включая номер версии. После этого атакующий может поискать известные для этой версии уязвимости, которыми он мог бы воспользоваться. По умолчанию серверы приложений отображают эту информацию при поступлении запроса.

Атакующий также может просмотреть страницы веб-сервера с сообщениями об ошибках в поисках уязвимой информации системного уровня. На рис. 2 показано окно веб-браузера, перенаправленного на страницу сервера с сообщением об ошибке, в котором указан номер версии сервера.

Рисунок 2. Страница Tomcat с сообщением об ошибке
Screenshot of a Tomcat error page.
Screenshot of a Tomcat error page.

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

Как устранить возможность сбора баннеров

Примечание: Перед внесением каких-либо изменений в свою реализацию сервера Tomcat обязательно создайте резервные копии соответствующих файлов.

В этом разделе я демонстрирую трехэтапную процедуру устранения возможностей сбора баннеров в вашей реализации веб-сервера Tomcat. По существу вы блокируете ответ своего сервера Tomcat на Telnet-команду или на другую команду. Описываемая процедура весьма проста.

Шаг 1. Редактирование файла server.xml

Файл server.xml обычно находится в корневом каталоге вашей установки Tomcat. В случае двоичной установки он будет находиться в каталоге /etc/tomcat"X", где X— это версия сервера. Таким образом, в среде Debian Linux с установленным двоичным пакетом Tomcat файл server.xml будет находиться в следующем месте: /etc/tomcat6/server.xml. Если вы загрузили TAR-файл с домашней страницы Apache и извлекли файл server.xml в каталог /opt, то этот файл будет находиться в следующем месте: /opt/apache-tomcat-"X"/conf/server.xml. В некоторых случаях этот каталог носит имя $CATALINA_HOME, в результате чего местоположение файла будет иметь вид: $CATALINA_HOME/server.xml.

Для отыскания маршрута к файлу server.xml можно выполнить следующую команду:

#> find / -name server.xml

Затем в файле server.xml найдите строку порта коннектора. Показанная на рис. 3 строка сообщает серверу Tomcat, какой порт прослушивает сервис.

Рисунок 3. Порт коннектора
Screenshot of the connector port line in the console.
Screenshot of the connector port line in the console.

Добавьте к этой строке параметр server, позволяющий задать реакцию сервера Tomcat на запрос пользователя о версии системы. Пример.

    <Connector port="8080" .....
		server="APPSRV"

Поместите в параметр server любую информацию по своему выбору: Apache, APPSRV, server, MyTeam и т. д. Единственное правило состоит в том, что это значение не может быть пустым и что оно не должно показывать информацию, которую ищет хакер.

Рисунок 4. Новый параметр server
Screenshot of the new server parameter.
Screenshot of the new server parameter.

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

Шаг 2. Редактирование файла ServerInfo.properties

Теперь сконфигурируем сервер Tomcat таким образом, чтобы он не показывал свою версию в публично доступных сообщениях об ошибках. Это сложнее, но не намного.

Сначала найдите в своей установке Tomcat файл catalina.jar и извлеките из него файл ServerInfo.properties. Обычно файл catalina.jar находится в двоичной установке по следующему маршруту: /usr/share/tomcat"X"/lib. В случае установки с помощью TAR-файла он будет находиться в корневом маршруте установки Tomcat в каталоге lib.

Таким образом, в среде Debian Linux с установленным двоичным пакетом Tomcat файл catalina.jar будет находиться в следующем месте: /usr/share/tomcat6/lib/catalina.jar. Если вы загрузили TAR-файл с домашней страницы Apache и извлекли файл catalina.jar в каталог /opt, то он будет находиться в следующем месте: $CATALINA_HOME/lib/catalina.jar.

Для отыскания маршрута к этому файлу можно выполнить следующую команду:

#> find / -name catalina.jar

Перед переходом к последующим действиям обязательно сделайте резервную копию своего файла catalina.jar.

Затем извлеките файл ServerInfo.properties из файла catalina.jar, для чего выполните следующую команду:

#>  jar xf catalina.jar org/apache/catalina/util/ServerInfo.properties

Эта команда извлекает файл ServerInfo.properties, который расположен по следующему маршруту: /org/apache/catalina/util inside catalina.jar.

Параметры server.info и server.number в этом файле показаны на рис. 5.

Рисунок 5. Параметры server.info и server.number
A screenshot of the server.info and server.number paramters in the console.
A screenshot of the server.info and server.number paramters in the console.

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

server.info=Apache Tomcat 6.0.x.x/x
server.number=6.0.3.1

следующим образом:

server.info=
server.number=0.0.0.0

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

 #>  jar uf catalina.jar  org/apache/catalina/util/ServerInfo.properties

Примечание. После замены исходного каталога org своим измененным каталогом org вы можете удалить прежний каталог org.

Теперь ваша установка Apache Tomcat сконфигурирована для противодействия сбору баннеров из сообщений о типичных ошибках.

Шаг 3. Перезапуск сервера Apache Tomcat

Последний шаг состоит в перезапуске Apache Tomcat. В случае двоичной установки выполните следующую команду:

#> /etc/init.d/tomcat6 restart

или

#> service tomcat6 restart

В случае установки с помощью извлеченного TAR-файла выполните следующую команду:

#> . /$CATALINA_HOME/bin/shutdown.sh
#> . /$CATALINA_HOME/bin/startup.sh

Для подтверждения изменений в установке Tomcat выполните следующие действия:

  1. Откройте сеанс Telnet для своего измененного сервера Tomcat на порту, который сервер прослушивает:
    #> telnet 192.168.237.119 8080
  2. После ответа сервера пошлите запрос о поддерживаемых им опциях (options):
    #> OPTIONS / HTTP/1.1
    #> HOST: 192.168.237.119
    #> [ENTER]
  3. Ответ сервера показан на рис. 6— на экране отображается значения параметра server, которые вы задали в файле server.xml.
    Рисунок 6. Проверка реакции нового хост-сервера
    A screenshot of the new server response.
    A screenshot of the new server response.
  4. Теперь откройте свой браузер и перенаправьте его к основной странице своей установки Tomcat, добавив такой запрос на страницу, который способен вызвать ошибку, например, http://192.168.237.119:8080/index
  5. Tomcat не распознает этот URL и отправит сообщение об ошибке, однако в этом сообщении не будет информации о версии этого сервера:
    Рисунок 7. Проверка нового ответа с сообщением об ошибке
    A screenshot of the new error message.
    A screenshot of the new error message.

Из сообщения на рис. 7 атакующий узнает лишь о наличии установленного сервера Apache, но не узнает ничего о том, какой конкретно сервер исполняется и какой версии. Готово!

Заключение

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


Ресурсы для скачивания


Похожие темы

  • Оригинал статьи: Eliminate banner grabbing in Apache Tomcat.
  • Securing Tomcat: дополнительная информация о защите веб-серверов Tomcat.
  • How (and why) to disable Apache server signature on your web pages: руководство по блокированию сбора баннеров на сервере Apache.
  • Web server security (developerWorks, сентябрь 2002 г.). Статья о защите динамического контента на HTTP-сервере Apache.
  • Apache Tomcat 7 — Security Considerations: Информация по обеспечению безопасности и рекомендации по конфигурированию Tomcat 7.
  • Блог Security On developerWorks: новые практические рекомендации, статьи и демонстрационные видеоматериалы по вопросам безопасности.
  • Подпишитесь на еженедельную новостную рассылку по вопросам безопасности в разделе Security на портале developerWorks.
  • В Твиттере (@dwsecurity) публикуются сведения об обновлениях на сайте developerWorks по вопросам безопасности.

Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Технология Java
ArticleID=968216
ArticleTitle=Устранение возможностей для сбора баннеров в Apache Tomcat
publish-date=04112014