Лучшая практика для доступа пользователей к Apache Tomcat

18

У меня есть коробка Linux, которой поделились разные разработчики. Они хотят развернуть свои военные файлы в Apache Tomcat, который находится в общей папке (/ opt / tomcat).

Так как они не имеют доступа sudo, я должен изменить разрешение папки для каталога tomcat.

структура каталогов под /opt/tomcat является -

bin/

conf/

lib/

logs/

temp/

webapps/

work/

Каковы лучшие практики в вышеуказанной ситуации - наиболее подходящее разрешение доступа для пользователя? В настоящее время я изменил разрешение на 777 для веб-приложений и журналов.

Спасибо

Kunal
источник

Ответы:

27

Я делаю это так:

Мы ставим пользователя tomcat как владельца папки tomcat:

# chown -R tomcat:tomcat /opt/tomcat

Пользователи могут не изменить конфигурацию Tomcat:

# chmod -R g+r /opt/tomcat/conf

Пользователи могут изменять другие папки:

# chmod -R g+w /opt/tomcat/logs
# chmod -R g+w /opt/tomcat/temp
# chmod -R g+w /opt/tomcat/webapps
# chmod -R g+w /opt/tomcat/work

Активируйте sticky-bit для новых файлов, сохраняя права доступа:

# chmod -R g+s /opt/tomcat/conf
# chmod -R g+s /opt/tomcat/logs
# chmod -R g+s /opt/tomcat/temp
# chmod -R g+s /opt/tomcat/webapps
# chmod -R g+s /opt/tomcat/work

Наконец, мы добавляем группу tomcat, которую мы хотим пользователям, которые могут использовать tomcat:

# usermod -a -G tomcat MIUSER
intropedro
источник
3
Если обойтись без тега -a, вы добавите пользователя в группу tomcat, но удалите MIUSER из всех других групп, к которым они принадлежат (это означает, что больше нет группы sudo). Мне просто нужно было действовать быстро, чтобы восстановить мои группы на основной учетной записи на одном из моих серверов, извлекая их из старого сеанса, где я все еще держал эти группы. Слово предупреждения для других пользователей, читающих этот ответ.
Axoren
Я добавил опцию в ответ. Спасибо
intropedro
Как сделать Tomcat начинающим как пользователь tomcat? Мой запускается как демон и на данный момент работает как root.
Stephane
1
Здравствуйте Stephane, В Ubuntu Tomcat выполняется с пользователем tomcat и находится в файле / etc / default / tomcat8 с переменными TOMCAT8_USER и TOMCAT8_GROUP. В других Linux я не знаю.
intropedro
12

Non-Tomcat settings В разделе руководства по безопасности Tomcat содержится полезная информация по этой теме. Посмотреть здесь:

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

Права доступа к файлам также должны быть соответствующим образом ограничены. Взяв в качестве примера экземпляры Tomcat в ASF (где автоматическое развертывание отключено, а веб-приложения развернуты как развернутые каталоги) стандартная конфигурация состоит в том, чтобы все файлы Tomcat принадлежали пользователю root с группой Tomcat, а владелец имеет права на чтение / запись, группа имеет только чтение и мир не имеет разрешений. Исключением являются журналы, временные и рабочие каталоги, которые принадлежат пользователю Tomcat, а не root , Это означает, что даже если злоумышленник скомпрометирует процесс Tomcat, он не сможет изменить конфигурацию Tomcat, развернуть новые веб-приложения или изменить существующие веб-приложения. Процесс Tomcat запускается с umask 007 для поддержки этих разрешений.

Jack
источник
Интересно, можно ли использовать описанный подход не только в Tomcat, но и с другими сервисами (база данных, обратный прокси и т. Д.) Как вы думаете, это возможно / мудро?
Paolo
1

Вы должны следовать принцип наименьших привилегий , Сервер (возможно www-data, но вам нужно проверить) нужно уметь читать большинство файлов (скажем, все) и записывать только в журналы. Веб-разработчикам разрешено писать, где им нужно. Установите бит закрепления в каталогах, чтобы удалить его мог только владелец файла.

На практике вам нужно создать группу (например, webdev ) и добавьте в него всех разработчиков и сервер ( usermod -aG webdev <user> или же usermod -A webdev <user> в зависимости от вашего вкуса Linux). chown все файлы и каталог для пользователя веб-сервера, chmod все каталоги до 500 и все файлы до 400 (кроме bin где исполняемых файлов тоже должно быть 500).

Предоставить права на запись на /opt/tomcat группе (это будет 570) и установите бит закрепления, чтобы они могли удалять только те файлы, которые принадлежат им (chmod 1570). Предоставьте серверу разрешение на запись в журналы и права на чтение для разработчиков (0740 для папки, 0640 для файлов, бит закрепления, вероятно, не требуется, и никогда не предоставляйте его файлу, только папкам, поскольку он другое значение (выполняется с разрешениями владельца, когда файл является исполняемым)).

Затем вам нужно предоставить права на запись (1570) webdev на некоторых из каталогов. Здесь вам понадобится метод проб и ошибок, и это может зависеть от приложения. Эти папки должны быть 1570, а некоторые другие могут быть 0500).

Разработчикам необходимо предоставить группе права доступа на чтение для своих файлов, чтобы сервер мог их читать (это 640), а также выполнять в каталогах (это 750).

Calimo
источник
1

Я думаю, что принятый ответ @ intropedro - хороший. Стоит отметить, что использование установщика пакетов может сэкономить много головной боли - по крайней мере, для Tomcat 7 в Ubuntu apt-get install tomcat7 Производит более «стандартный» набор установочных каталогов:

  • /etc/tomcat7 для файлов конфигурации,
  • /var/lib/tomcat7 для основных библиотек и
  • /usr/share/tomcat7 для общих ресурсов.

Все разрешения настроены правильно по принципу наименьших прав доступа, так что добавление пользователей в группу tomcat7 достаточно, чтобы разрешить развертывание. Кроме того, сервер Tomcat настроен как служба, которую можно запускать и останавливать как другие (например, sudo service tomcat start или в качестве альтернативы /etc/init.d/tomcat start ). Tomcat запускается при перезагрузке автоматически, и есть команда «перезапустить». Я уверен, что есть эквивалентный пакет yum для пользователей RHEL / CentOS. (И да, есть домашний установщик для локальных установок OSX).

Если у вас возникли проблемы, есть хорошая утилита в /usr/share/bin называется configtest.sh что сообщает, если есть разрешения или другие ошибки. Обратите внимание, что есть открытая ошибка, которая предлагает добавить несколько символических ссылок ,

Мы все еще работаем с Ubuntu trusty (14.04); для тех, кто работает с более свежими версиями, я считаю, что есть репозиторий apt-get Tomcat 8

Tom Harrison Jr
источник