Tomcat в java

Шаг 7 — Настройка веб-интерфейса управления Tomcat

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

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

tomcat-users.xml — Admin User

Сохраните файл и закройте его после завершения.

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

Для приложения диспетчера введите:

Для приложения диспетчера хостов введите:

Внутри закомментируйте ограничение IP-адреса, чтобы разрешить подключение из любого места. Также, если вы хотите разрешить доступ только для подключений с вашего IP-адреса, вы можете добавить ваш публичный IP-адрес в список:

context.xml files for Tomcat webapps

Сохраните файл и закройте после завершения.

Чтобы изменения вступили в силу, перезапустите службу Tomcat:

Шаг 6 — Настройка брандмауэра и тестирование сервера Tomcat

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

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

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

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

Вы увидите начальную страницу Tomcat по умолчанию в дополнение к другой информации. Однако, если вы воспользуетесь ссылками на диспетчер приложения, например, вам будет отказано в доступе. Мы можем настроить этот доступ далее.

Если вы смогли успешно получить доступ к Tomcat, сейчас лучшее время для активации служебного файла, чтобы Tomcat автоматически запускался при загрузке:

Tomcat Setup

Introduction

There are several ways to set up Tomcat for running on different
platforms. The main documentation for this is a file called
RUNNING.txt. We encourage you to refer to that
file if the information below does not answer some of your questions.

Windows

Installing Tomcat on Windows can be done easily using the Windows
installer. Its interface and functionality is similar to other wizard
based installers, with only a few items of interest.

  • Installation as a service: Tomcat will be
    installed as a Windows service no matter what setting is selected.
    Using the checkbox on the component page sets the service as «auto»
    startup, so that Tomcat is automatically started when Windows
    starts. For optimal security, the service should be run as a
    separate user, with reduced permissions (see the Windows Services
    administration tool and its documentation).
  • Java location: The installer will provide a default
    JRE to use to run the service. The installer uses the registry to
    determine the base path of a Java 8 or later JRE,
    including the JRE installed as part of the full JDK. When running on
    a 64-bit operating system, the installer will first look for a
    64-bit JRE and only look for a 32-bit JRE if a 64-bit JRE is not
    found. If a JRE cannot be found when running on a 64-bit operating
    system, the installer will look for a 64-bit JDK. Finally, if a JRE
    or JDK has not been found, the installer will try to use the
    environment variable. It is not mandatory to
    use the default JRE detected by the installer. Any installed Java
    8 or later JRE (32-bit or 64-bit) may be
    used.
  • Tray icon: When Tomcat is run as a service, there
    will not be any tray icon present when Tomcat is running. Note that
    when choosing to run Tomcat at the end of installation, the tray
    icon will be used even if Tomcat was installed as a service.
  • Defaults: The defaults used by the installer may be
    overridden by use of the command
    line argument. The configuration file uses the format
    with each pair on a separate line. The names
    of the available configuration options are:
    • JavaHome
    • TomcatPortShutdown
    • TomcatPortHttp
    • TomcatMenuEntriesEnable
    • TomcatShortcutAllUsers
    • TomcatServiceDefaultName
    • TomcatServiceName
    • TomcatServiceFileName
    • TomcatServiceManagerFileName
    • TomcatAdminEnable
    • TomcatAdminUsername
    • TomcatAdminPassword
    • TomcatAdminRoles

    By using along with and
    it is possible to perform fully configured
    unattended installs of Apache Tomcat.

  • Refer to the
    Windows Service How-To
    for information on how to manage Tomcat as a Windows service.

The installer will create shortcuts allowing starting and configuring
Tomcat. It is important to note that the Tomcat administration web
application can only be used when Tomcat is running.

Unix daemon

Tomcat can be run as a daemon using the jsvc tool from the
commons-daemon project. Source tarballs for jsvc are included with the
Tomcat binaries, and need to be compiled. Building jsvc requires
a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.

Before running the script, the environment
variable should be set to the base path of the JDK. Alternately, when
calling the script, the path of the JDK may
be specified using the parameter, such as
.

Using the following commands should result in a compiled jsvc binary,
located in the folder. This assumes
that GNU TAR is used, and that is an
environment variable pointing to the base path of the Tomcat
installation.

Please note that you should use the GNU make (gmake) instead of
the native BSD make on FreeBSD systems.

Tomcat can then be run as a daemon using the following commands.

When running on Java 9 you will need to additionally specify the
following when starting jsvc to avoid warnings on shutdown.

You may also need to specify if the JVM defaults
to using a server VM rather than a client VM. This has been observed on
OSX.

jsvc has other useful parameters, such as which
causes it to switch to another user after the daemon initialization is
complete. This allows, for example, running Tomcat as a non privileged
user while still being able to use privileged ports. Note that if you
use this option and start Tomcat as root, you’ll need to disable the
check that
prevents Tomcat starting when running as root.

will return the full jsvc usage
information. In particular, the option is useful
to debug issues running jsvc.

The file can be used as a
template for starting Tomcat automatically at boot time from
with jsvc.

Note that the Commons-Daemon JAR file must be on your runtime classpath
to run Tomcat in this manner. The Commons-Daemon JAR file is in the
Class-Path entry of the bootstrap.jar manifest, but if you get a
ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon
class, add the Commons-Daemon JAR to the -cp argument when launching
jsvc.

Шаг 3 — Установка Tomcat

Лучшим способом установки Tomcat 9 является загрузка последней бинарной версии, а затем ее ручная настройка.

Далее перейдите к директории на сервере. Эта директория отлично подходит для загрузки кратковременных элементов, таких как tar-архив (тарбол) Tomcat, который нам не потребуется после извлечения содержимого Tomcat:

Используйте для загрузки ссылки, скопированной на веб-сайте Tomcat:

Мы установим Tomcat в директорию . Создайте директорию, а затем извлеките туда архив с помощью этих команд:

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

Тестовый стенд

Начнем со стенда для тестирования уязвимости. Для этого достаточно запустить контейнер Docker из официального репозитория Tomcat.

Очень важно расшарить порт 8009, это AJP-протокол, в котором и была найдена уязвимость. Если хочется вместе со мной возиться с отладкой приложения, то нужно действовать немного по-другому

Для дебага я буду использовать IntelliJ IDEA. Сначала скачаем уязвимую версию Apache Tomcat. Я взял 9.0.30. Распакуем и откроем проект в IDEA. Теперь создадим новую конфигурацию отладки с шаблоном Remote

Если хочется вместе со мной возиться с отладкой приложения, то нужно действовать немного по-другому. Для дебага я буду использовать IntelliJ IDEA. Сначала скачаем уязвимую версию Apache Tomcat. Я взял 9.0.30. Распакуем и откроем проект в IDEA. Теперь создадим новую конфигурацию отладки с шаблоном Remote.

Создание шаблона Remote в IDEA

Здесь в поле строка с параметрами, которые нужно указать при запуске сервера. Рекомендую выбрать версию JDK 1.4.x.

Конфигурация отладки. Аргументы для запуска Tomcat в режиме удаленной отладки

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

Обрати внимание на опцию : если она включена (), Java будет приостанавливать загрузку виртуальной машины и ждать подключения отладчика и только после успешного коннекта продолжит запуск. У меня получилась такая строка

Запускаем контейнер. Не забывай пробрасывать порт, который указал для удаленной отладки.

Запущенный сервер Tomcat 9.0.30

Открываем браузер, переходим на запущенный сервер (не забывай, что порт — 8080) и наблюдаем страницу 404. Дело в том, что в последних версиях официального докер-контейнера Tomcat папка со стандартными приложениями была переименована в . Достаточно удалить папку и создать симлинк на оригинальную версию директории.

После этого обновляем страницу и видим приветствие сервера Tomcat.

Приветственная страница стенда Tomcat

Tomcat работает, теперь дело за фронтендом, который поможет нам в исследовании AJP. Я создам еще один контейнер на основе Debian.

Понятно из названия, какой веб-сервер я буду использовать в качестве фронта, — Apache. Устанавливаем.

Я выбрал его, так как он проще в настройке прокси до Tomcat. Ты можешь использовать любой другой веб-сервер по желанию.

Включаем модуль для работы прокси с протоколом AJP.

Теперь редактируем стандартный конфиг виртуального хоста () и указываем адрес Tomcat.

И перезагружаем Apache.

Проксируем трафик через Apache к Tomcat по протоколу AJP

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

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

Content

Overview

This page lists the various tools that the Apache Tomcat project uses. Not
all developers use every tool. There are almost certainly some tools that are
missing. If you are a committer, you know how to fix this. If you are not a
committer, send a short note to the (you’ll need to subscribe if you are not already subscribed)
and a committer should be able to fix it for you.

Open Source Tools

A variety of IDEs are used by the Tomcat developers. One of them is
the Eclipse IDE.

The Unnecessary Code Detector is used by the Tomcat developers to
identify code to be removed from future versions of Tomcat.

FindBugs is used by the Tomcat developers to identify potential coding
errors.

Checkstyle is used by the Tomcat developers to maintain the Tomcat
coding standard.

Far Manager is a two-panel file manager application for
Microsoft Windows. It works in console mode and is very useful
to run command-line tools and make small edits that do not require
an IDE. It is free software since version 1.75 build 2629 and
open source since version 2.0.

Commercial Tools

YourKit, LLC kindly provide free licenses for the YourKit Java Profiler
to open source projects. YourKit Java Profiler is primarily used to
investigate performance and memory leak issues reported in Apache Tomcat.
It was particularly useful when working on the memory leak detection and
prevention code.

Microsoft kindly provide free MSDN licenses to Apache committers that
have a requirement for them. MSDN is primarily used to provide build and
test environments for the ISAPI redirector and the Windows APR/native
connector but it is also used to provide test platforms for Windows
specific Tomcat issues such as those related to the Windows Installer.

Headway software kindly provide free licenses for Structure 101 to open
source projects. Structure 101 is primarily being used in Tomcat trunk to
analyze the current package dependencies and identify areas where they may
be simplified.

Simon Harris kindly provides free licenses for Simian (Similarity
Analyzer) to open source projects. Simian is primarily being used in
Tomcat trunk to reduce code duplication.

Code Whale Inc. kindly offer a free unlimited localization project to
open source projects that use an OSI approved license. Apache Tomcat is
using POEditor primarily in Tomcat trunk to manage translations. The
Tomcat project has seen a significant increase in localization
contributions since starting to use POEditor.

Tomcat Setup

Introduction

There are several ways to set up Tomcat for running on different
platforms. The main documentation for this is a file called
RUNNING.txt. We encourage you to refer to that
file if the information below does not answer some of your questions.

Windows

Installing Tomcat on Windows can be done easily using the Windows
installer. Its interface and functionality is similar to other wizard
based installers, with only a few items of interest.

  • Installation as a service: Tomcat will be
    installed as a Windows service no matter what setting is selected.
    Using the checkbox on the component page sets the service as «auto»
    startup, so that Tomcat is automatically started when Windows
    starts. For optimal security, the service should be run as a
    separate user, with reduced permissions (see the Windows Services
    administration tool and its documentation).
  • Java location: The installer will provide a default
    JRE to use to run the service. The installer uses the registry to
    determine the base path of a Java 8 or later JRE,
    including the JRE installed as part of the full JDK. When running on
    a 64-bit operating system, the installer will first look for a
    64-bit JRE and only look for a 32-bit JRE if a 64-bit JRE is not
    found. If a JRE cannot be found when running on a 64-bit operating
    system, the installer will look for a 64-bit JDK. Finally, if a JRE
    or JDK has not been found, the installer will try to use the
    environment variable. It is not mandatory to
    use the default JRE detected by the installer. Any installed Java
    8 or later JRE (32-bit or 64-bit) may be
    used.
  • Tray icon: When Tomcat is run as a service, there
    will not be any tray icon present when Tomcat is running. Note that
    when choosing to run Tomcat at the end of installation, the tray
    icon will be used even if Tomcat was installed as a service.
  • Defaults: The defaults used by the installer may be
    overridden by use of the command
    line argument. The configuration file uses the format
    with each pair on a separate line. The names
    of the available configuration options are:
    • JavaHome
    • TomcatPortShutdown
    • TomcatPortHttp
    • TomcatMenuEntriesEnable
    • TomcatShortcutAllUsers
    • TomcatServiceDefaultName
    • TomcatServiceName
    • TomcatServiceFileName
    • TomcatServiceManagerFileName
    • TomcatAdminEnable
    • TomcatAdminUsername
    • TomcatAdminPassword
    • TomcatAdminRoles

    By using along with and
    it is possible to perform fully configured
    unattended installs of Apache Tomcat.

  • Refer to the
    Windows Service How-To
    for information on how to manage Tomcat as a Windows service.

The installer will create shortcuts allowing starting and configuring
Tomcat. It is important to note that the Tomcat administration web
application can only be used when Tomcat is running.

Unix daemon

Tomcat can be run as a daemon using the jsvc tool from the
commons-daemon project. Source tarballs for jsvc are included with the
Tomcat binaries, and need to be compiled. Building jsvc requires
a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.

Before running the script, the environment
variable should be set to the base path of the JDK. Alternately, when
calling the script, the path of the JDK may
be specified using the parameter, such as
.

Using the following commands should result in a compiled jsvc binary,
located in the folder. This assumes
that GNU TAR is used, and that is an
environment variable pointing to the base path of the Tomcat
installation.

Please note that you should use the GNU make (gmake) instead of
the native BSD make on FreeBSD systems.

Tomcat can then be run as a daemon using the following commands.

When running on Java 9 you will need to additionally specify the
following when starting jsvc to avoid warnings on shutdown.

You may also need to specify if the JVM defaults
to using a server VM rather than a client VM. This has been observed on
OSX.

jsvc has other useful parameters, such as which
causes it to switch to another user after the daemon initialization is
complete. This allows, for example, running Tomcat as a non privileged
user while still being able to use privileged ports. Note that if you
use this option and start Tomcat as root, you’ll need to disable the
check that
prevents Tomcat starting when running as root.

will return the full jsvc usage
information. In particular, the option is useful
to debug issues running jsvc.

The file can be used as a
template for starting Tomcat automatically at boot time from
with jsvc.

Note that the Commons-Daemon JAR file must be on your runtime classpath
to run Tomcat in this manner. The Commons-Daemon JAR file is in the
Class-Path entry of the bootstrap.jar manifest, but if you get a
ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon
class, add the Commons-Daemon JAR to the -cp argument when launching
jsvc.

Tomcat Setup

Introduction

There are several ways to set up Tomcat for running on different
platforms. The main documentation for this is a file called
RUNNING.txt. We encourage you to refer to that
file if the information below does not answer some of your questions.

Windows

Installing Tomcat on Windows can be done easily using the Windows
installer. Its interface and functionality is similar to other wizard
based installers, with only a few items of interest.

  • Installation as a service: Tomcat will be
    installed as a Windows service no matter what setting is selected.
    Using the checkbox on the component page sets the service as «auto»
    startup, so that Tomcat is automatically started when Windows
    starts. For optimal security, the service should be run as a
    separate user, with reduced permissions (see the Windows Services
    administration tool and its documentation).
  • Java location: The installer will provide a default
    JRE to use to run the service. The installer uses the registry to
    determine the base path of a Java 7 or later JRE,
    including the JRE installed as part of the full JDK. When running on
    a 64-bit operating system, the installer will first look for a
    64-bit JRE and only look for a 32-bit JRE if a 64-bit JRE is not
    found. If a JRE cannot be found when running on a 64-bit operating
    system, the installer will look for a 64-bit JDK. Finally, if a JRE
    or JDK has not been found, the installer will try to use the
    environment variable. It is not mandatory to
    use the default JRE detected by the installer. Any installed Java
    7 or later JRE (32-bit or 64-bit) may be
    used.
  • Tray icon: When Tomcat is run as a service, there
    will not be any tray icon present when Tomcat is running. Note that
    when choosing to run Tomcat at the end of installation, the tray
    icon will be used even if Tomcat was installed as a service.
  • Defaults: The defaults used by the installer may be
    overridden by use of the command
    line argument. The configuration file uses the format
    with each pair on a separate line. The names
    of the available configuration options are:
    • JavaHome
    • TomcatPortShutdown
    • TomcatPortHttp
    • TomcatMenuEntriesEnable
    • TomcatShortcutAllUsers
    • TomcatServiceDefaultName
    • TomcatServiceName
    • TomcatServiceFileName
    • TomcatServiceManagerFileName
    • TomcatAdminEnable
    • TomcatAdminUsername
    • TomcatAdminPassword
    • TomcatAdminRoles

    By using along with and
    it is possible to perform fully configured
    unattended installs of Apache Tomcat.

  • Refer to the
    Windows Service How-To
    for information on how to manage Tomcat as a Windows service.

The installer will create shortcuts allowing starting and configuring
Tomcat. It is important to note that the Tomcat administration web
application can only be used when Tomcat is running.

Unix daemon

Tomcat can be run as a daemon using the jsvc tool from the
commons-daemon project. Source tarballs for jsvc are included with the
Tomcat binaries, and need to be compiled. Building jsvc requires
a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.

Before running the script, the environment
variable should be set to the base path of the JDK. Alternately, when
calling the script, the path of the JDK may
be specified using the parameter, such as
.

Using the following commands should result in a compiled jsvc binary,
located in the folder. This assumes
that GNU TAR is used, and that is an
environment variable pointing to the base path of the Tomcat
installation.

Please note that you should use the GNU make (gmake) instead of
the native BSD make on FreeBSD systems.

Tomcat can then be run as a daemon using the following commands.

When running on Java 9 you will need to additionally specify the
following when starting jsvc to avoid warnings on shutdown.

You may also need to specify if the JVM defaults
to using a server VM rather than a client VM. This has been observed on
OSX.

jsvc has other useful parameters, such as which
causes it to switch to another user after the daemon initialization is
complete. This allows, for example, running Tomcat as a non privileged
user while still being able to use privileged ports. Note that if you
use this option and start Tomcat as root, you’ll need to disable the
check that
prevents Tomcat starting when running as root.

will return the full jsvc usage
information. In particular, the option is useful
to debug issues running jsvc.

The file can be used as a
template for starting Tomcat automatically at boot time from
with jsvc.

Note that the Commons-Daemon JAR file must be on your runtime classpath
to run Tomcat in this manner. The Commons-Daemon JAR file is in the
Class-Path entry of the bootstrap.jar manifest, but if you get a
ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon
class, add the Commons-Daemon JAR to the -cp argument when launching
jsvc.

Шаг 5 — Создание служебного файла systemd

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

Tomcat должен знать, где установлена Java. Обычно этот путь называют JAVA_HOME. Самым простым способом поиска расположения является использование этой команды:

Ваш путь — это вывод из последнего столбца (выделено красным). Учитывая приведенный выше пример, для этого сервера правильное значение будет выглядеть таким образом:

Ваш путь может отличаться.

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

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

/etc/systemd/system/tomcat.service

После завершения редактирования сохраните и закройте файл.

Далее перезагрузите демон systemd, чтобы он знал о существовании вашего служебного файла:

Запустите службу Tomcat с помощью следующей команды:

Дополнительно проверьте, что служба запущена без ошибок, выполнив следующую команду:

Заключение

Ваша установка Tomcat завершена! Теперь вы можете развернуть ваши собственные веб-приложения Java!

В настоящее время ваша установка Tomcat работает, но абсолютно не имеет шифрования. Это означает, что все данные, включая чувствительную информацию, например пароли, отправляются в текстовой форме и могут быть кем-либо перехвачены и прочитаны в Интернете. Чтобы предотвратить это, мы настоятельно рекомендуем шифровать ваши соединения с помощью SSL. Вы можете узнать, как реализовать шифрование ваших подключений в Tomcat в этом руководстве (примечание: в настоящем руководстве описано шифрование Tomcat 8 в Ubuntu 16.04).

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий