ポート 443 の Tomcat 9 がルートのみで動作しており、危険である可能性があります

ポート 443 の Tomcat 9 がルートのみで動作しており、危険である可能性があります

serverfault.com の記事を何度も読んだ後、ポート 443 で Tomcat 9 を正常に構成できました。

しかし、問題は、443 が特権ポートであり、以下の tomcat.service に root ユーザーを追加したのですが、tomcat ユーザーに 1 つのサービスのみの権限を与えたいので、これを回避するにはどうすればよいですか。私の問題を理解して、最適な回答をアドバイスしていただければ幸いです。

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

答え1

CAP_NET_BIND_SERVICE 権限セットを付与していれば、Tomcat (または他のもの) を非ルートで実行し、システムポートにバインドすることができます。systemd ユニットでこれを実行するには、AmbientCapabilities=セクション内[Service]:

AmbientCapabilities=CAP_NET_BIND_SERVICE

User=当然、とも削除する必要がありますGroup=

また、以下の使用も検討してください。NoNewPrivileges=trueアプリの権限昇格を制限します。

関連情報