Назад | Перейти на главную страницу

Настройте пользователя без полномочий root 'tomcat' в Tomcat 8

Я установил Tomcat 8 в Debian 8, и мне нужно усилить защиту веб-сервера.

Я следую официальному руководству по документации Tomcat и в раздел соображений безопасности рекомендует создать другого пользователя (с именем tomcat) и запустить процесс Tomcat с этим пользователем:

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

Я создал пользователя и группу tomcat, как предлагает руководство. Я создал файл /etc/systemd/system/tomcat.service со следующей конфигурацией:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
#ExecStart=/opt/tomcat/bin/startup.sh
ExecStart=/usr/share/tomcat8/bin/startup.sh
#ExecStop=/opt/tomcat/bin/shutdown.sh
ExecStart=/usr/share/tomcat8/bin/shutdown.sh
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

Я сделал ссылку на:

root@pc:/lib/systemd/system# ln -s tomcat.service /etc/systemd/system/tomcat.service

Я включил службу в systemd:

root@pc:/lib/systemd/system# systemctl enable tomcat.service
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /lib/systemd/system/tomcat.service.

Теперь, когда я проверил, запущен ли процесс tomcat, я не смог найти пользователя tomcat как владельца процесса:

tomcat@labnet:/lib/systemd/system$ ps -aux | grep tomcat
tomcat8  18116  1.2  8.0 1662560 325140 ?      Sl   10:30   1:04 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/var/lib/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC -Djava.endorsed.dirs=/usr/share/tomcat8/endorsed -classpath /usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/var/lib/tomcat8 -Dcatalina.home=/usr/share/tomcat8 -Djava.io.tmpdir=/tmp/tomcat8-tomcat8-tmp org.apache.catalina.startup.Bootstrap start

Есть еще один пользователь по имени tomcat8.

Используя верх:

tomcat@pc:/lib/systemd/system$ top
PID   USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM   TIME+   COMMAND
18116 tomcat8   20   0 1662560 325140  21068 S   0,3  8,0   1:04.29 java

Я проверил / etc / groups и etc / passwd, и оба пользователя присутствуют:

tomcat@pc:/lib/systemd/system$ grep tomcat /etc/group
tomcat8:x:114:
tomcat:x:1005:tomcat

root@pc:/etc/tomcat8# grep tomcat /etc/passwd
tomcat8:x:108:114::/usr/share/tomcat8:/bin/false
tomcat:x:1005:1005:tomcat,,,:/home/tomcat:/bin/bash

Что мне следует изменить, чтобы вместо этого использовать пользователя tomcat? Я предполагаю, что это может быть новый пользователь, используемый по умолчанию в этой версии для запуска процесса Tomcat.

Вам необходимо запустить systemctl daemon-reload, прежде чем systemd узнает о вашей новой службе Tomcat.