Tomcat 9 na porta 443 funcionando apenas com root, o que pode ser prejudicial

Tomcat 9 na porta 443 funcionando apenas com root, o que pode ser prejudicial

Depois de tantas leituras de artigos do serverfault.com, configurei com sucesso meu Tomcat 9 na porta 443.

Mas o problema é que 443 é uma porta privilegiada na qual adicionei o usuário root abaixo do tomcat.service, mas como posso evitar isso, pois quero dar permissão ao usuário do Tomcat para apenas um serviço. Espero que você entenda meu problema e aconselhe a melhor resposta.

vim /etc/systemd/system/tomcat.service


[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking



############## I added root user here ##########################
**User=root
Group=root**

Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Responder1

Você pode executar o Tomcat (ou qualquer coisa) como não-root e ainda vincular-se às portas do sistema se tiver concedido o conjunto de recursos CAP_NET_BIND_SERVICE. Você pode fazer isso em sua unidade systemd adicionandoAmbientCapabilities=na [Service]seção:

AmbientCapabilities=CAP_NET_BIND_SERVICE

Obviamente você também precisará remover User=e Group=.

Você também deve considerar usarNoNewPrivileges=truepara impedir que o aplicativo eleve seus privilégios.

informação relacionada