# Настройка Tomcat

## Введение

WebGoat распространяется с конфигурацией Tomcat по умолчанию. На данной странице вы найдёте её короткое описание и список возможных вариантов различных настроек. В случаях когда данное описание вам не помогает обращайтесь к официальной документации Tomcat. Кроме того, нужно сказать что всё нижеописанное относится к стандартной конфигурации сервера работающего на 80-ом порту. Если вы используете для сервера другой порт, то вам необходимо будет изменить конфигурацию соответствующим образом.

## Стандартная конфигурация

Здесь имеется две стандартных конфигурации Tomcat. При их использовании доступ к серверу можно получить обращаясь к хосту localhost. Они полностью идентичны, за исключением того что в первом случае сервисы Tomcat запускаются на портах 80 и 443 (SSL), а во втором - на портах 8080 и 8443. В Linux вы должны запустить WebGoat как root или с использованием sudo если хотите чтоб он работал на портах 80 и 443. Помните, что запуск ПО из под root`а очень опасное занятие, поэтому мы настоятельно рекомендуем использовать порты 8080 и 8443. В Windows вы можете запустить WebGoat.bat для работы на 80-ом порту, или же WebGoat_8080.bat для работы на порту 8080. В Linux ту же самую работу выполняет скрипт WebGoat.sh и для того же результата его необходимо запустить либо командой "webgoat.sh start80", либо "webgoat.sh start8080". Пользователь, для доступа к приложению, в стандартной конфигурации - guest с паролем guest.

## Настройка сервера

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

### Изменение портов

Для изменения портов откройте файл server_80.xml, котрый можно найти в tomcat/conf, и измените не-SSL порт. Например, если вы хотите использовать порт 8079:

    	<!-- Define a non-SSL HTTP/1.1 Connector on port 8079 -->
    	<Connector address="127.0.0.1" port="8079"...

Конечно же вы можете изменить и порт SSL-соединения. Вот пример переноса SSL на порт 8442:

    	<!-- Define a SSL HTTP/1.1 Connector on port 8442 -->
    	<Connector address="127.0.0.1" port="8442"...

### Делаем WebGoat доступным для нескольких клиентов.

ЭТО ОТКРЫВАЕТ ВАШ СЕРВЕР ДЛЯ РЕАЛЬНЫХ АТАК ИЗ ВНЕ! НЕ ДЕЛАЙТЕ ЭТОГО ЕСЛИ ВЫ НА 100% НЕ УВЕРЕНЫ В НЕОБХОДИМОСТИ ДАННОГО ШАГА. ЭТА КОНФИГУРАЦИЯ МОЖЕТ БЫТЬ ИСПОЛЬЗОВАНА ТОЛЬКО В ДОВЕРЕННЫХ СЕТЯХ.

По умолчанию WebGoat доступен только при обращении к хосту localhost. В лаборатории или классе у вас может возникнуть необходимость организовать сервер с множеством клиентов. В данном случае вы можете настроить WebGoat соответствующим образом.

Причина того что WebGoat доступен только на localhost - параметр address тега Connector в файле server_80.xml. Изначально его значение установлено в 127.0.0.1 . При запуске приложение начинает проверять прописанные в настройках порты только на этом адресе и принимает соединения если они появляются. Если вы удалите данный параметр, то приложение начнёт прослушивать соответствующие порты на всех доступных IP-адресах.

### Разрешение соединений только от определённых клиентов

Выше описывался способ разрешения соединений с WebGoat для любых клиентов. Если вы хотите разрешить доступ к приложению только с определённых адресов, воспользуйтесь фильтром удалённых адресов (Remote Address Filter). Для этого добавьте следующюю строку в файл web_80.xml:

    	<Valve className="org.apache.catalina.valves.RemoteAddrValve"
    	allow="127.0.0.1,ip1,ip2"/>

В этом случае только localhost, ip1 и ip2 смогут устанавливать соединения с сервером.

## Стандартные пользователи WebGoat и роли для Tomcat

WebGoat`у для нормальной работы необходимо наличие следующих пользователей и ролей:

      >role rolename="webgoat_basic"/<
      >role rolename="webgoat_admin"/<
      >role rolename="webgoat_user"/<
      >user username="webgoat" password="webgoat" roles="webgoat_admin"/<
      >user username="basic" password="basic" roles="webgoat_user,webgoat_basic"/<
      >user username="guest" password="guest" roles="webgoat_user"/<

## Добавление пользователей

Обычно для нормальной работы с WebGoat вам достаточно будет пользователя guest с паролем guest. Но когда вы развернёте его в лоборатории или классе может возникнуть необходимость создания отдельного пользователя для каждого клиента. Для этого вам необходимо изменить файл tomcat-users.xml, которых находится в tomcat/conf. Мы настоятельно не рекомендуем хранить реальные действующие пароли в данном файле т.к. там они прописываются в виде простого текста!

### Добавление пользователя

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

    	<user name="student1" password="password1" roles="webgoat_user"/>
    	<user name="student2" password="password2" roles="webgoat_user"/>
    	...