Я установил 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.