如何自定义Debian系统上Tomcat服务器的用户权限设置以有效增强系统安全性?
- 内容介绍
- 文章标签
- 相关推荐
背景与常见痛点
痛点 1:Tomcat 默认以 root 或程序使用者运行。文件权限过宽,导致被恶意脚本利用后获取程序最高权限。
痛点 2:安装目录所有权混乱,部署新应用时经常出现 Permission denied 错误。
痛点 3:防火墙规则不明确,外部攻击者可以直接扫描到 Tomcat 的管理页面。
痛点 4:服务未以 systemd 管理,无法统一控制启动、日志和重启策略。
针对以上痛点。
一、创建专用的 Tomcat 运行使用者
需要一个仅用于运行 Tomcat 的程序使用者,避免使用 root 或已有的普通使用者。
# 创建使用者并加入独立的组
sudo adduser --system --no-create-home --group tomcat
创建过程会提示设置密码等信息,可直接回车跳过。此使用者仅拥有访问 /opt/tomcat 目录的权限,不具备 sudo 权限。
二、准备 Tomcat 安装目录
假设 Tomcat 已解压至 /opt/tomcat如果目录不存在请先创建并解压:
# 示例:下载并解压 Tomcat 9
sudo mkdir -p /opt/tomcat
cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz
sudo tar xzf apache-tomcat-9.0.87.tar.gz -C /opt/tomcat --strip-components=1
2.1 更改目录所有权
将 Tomcat 目录及子文件全部归属新建的 tomcat 使用者和组,以消除“权限过宽”的隐患。
# 将所有权递归修改为 tomcat:tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
2.2 设置合适的访问模式
对关键子目录(如 /opt/tomcat/conf。/opt/tomcat/logs,/opt/tomcat/webapps) 设置只读或可写权限,防止恶意代码随意修改配置文件。
# conf 只读
sudo chmod -R 750 /opt/tomcat/conf
# logs 可写但不可执行
sudo chmod -R 750 /opt/tomcat/logs
# webapps 部署时需要写入权限
sudo chmod -R 770 /opt/tomcat/webapps
三、编写 Systemd 服务单元文件
使用 systemd 管理 Tomcat 可以统一启动/停止、自动重启还有日志收集。下面创建一个安全的 service 文件。
# 使用编辑器打开或新建 service 文件
sudo nano /etc/systemd/system/tomcat.service
tomcat.service 内容示例:
Description=Apache TomCat Web Application Container
After=network.target
Type=forking
# 环境变量
Environment=JA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JA_OPTS=-Djava.endorsed.dirs=/usr/share/java'
# 启动/关闭脚本方法
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomctl/bin/shutdown.sh
# 指定运行使用者/组。实现最小特权原则
User=tomcatactual # 正确使用者名为 tomcatactual,请确保与前面创建的一致
Group=tomcatactual
# 自动重启策略
Restart=on-failure
RestartSec=10
WantedBy=multi-user.target
3.1 注意事项与常见错误
- User/Group 必须与第 一步创建的程序账号保持一致。
-
ExecStop 方法写错会导致停止失败。请确认是
/opt/tomcat/bin/shutdown.sh. - If JA_HOME 不匹配当前 JDK,会在启动时报错。
四、加载并开启服务
# 重新加载 systemd 配置。
使新 service 生效
sudo systemctl daemon-reload
# 启动 TomTomcatactual 服务并设置开机自启
sudo systemctl start tomcatactual
sudo systemctl enable tomcatactual
4.1 验证服务状态
# 查看服务是否正常运行
sudo systemctl status tomcatactual
# 检查进程归属
ps -ef | grep tomcatactual
五、防火墙与网络访问控制
痛点:TOMCAT 默认端口 8080 对外开放,一旦暴露管理页面容易被暴力。按理说,我们通过 UFW 精细化放行,仅允许必要端口。
# 安装 UFW
sudo apt-get install ufw
sudo ufw default deny incoming
sudo ufw allow ssh sudo ufw allow from 127.0.0.1 to any port 8080
sudo ufw enable
六、验证配置是否生效
- 使用浏览器访问 {% raw %} 检查页面是否正常显示。
-
确认进程属于
a href="mailto:tomcatactual">tomcatactual` 使用者:`ps -u tomcatactual`。 - `journalctl -u tomcatactual` 看日志,确保没有权限相关错误。
- `ufw status verbose` 确认仅允许预期来源访问端口 8080。
七、日常维护建议
- 定期审计文件权限:`find /opt/tomcataactua l -type f!-perm 640 -exec ls -l {} \;` 查找异常文件,
- TOMCAT 与 JDK 更新:Patching security漏洞后立即升级,并重新执行上述权限检查步骤。
- MFA 与强密码:TOMCAT Manager 与 Host Manager 应开启基于角色的访问控制,并使用强密码或 LDAP 集成。
- CVE监控:`apt list --upgradable` + `apt-get upgrade` 确保程序组件及时修补。
- Lynis 或 OpenSCAP 扫描:
八、结论
- 为 TomTomcataactua l 创建最小特权运行账号;对安装目录进行严格所有权和模式设置;使用 Systemd 将 TomTomcactua l 纳入统一管理;,确保服务真实以新使用者身份运行;提供后续维护与安全加固指引。不过,
背景与常见痛点
痛点 1:Tomcat 默认以 root 或程序使用者运行。文件权限过宽,导致被恶意脚本利用后获取程序最高权限。
痛点 2:安装目录所有权混乱,部署新应用时经常出现 Permission denied 错误。
痛点 3:防火墙规则不明确,外部攻击者可以直接扫描到 Tomcat 的管理页面。
痛点 4:服务未以 systemd 管理,无法统一控制启动、日志和重启策略。
针对以上痛点。
一、创建专用的 Tomcat 运行使用者
需要一个仅用于运行 Tomcat 的程序使用者,避免使用 root 或已有的普通使用者。
# 创建使用者并加入独立的组
sudo adduser --system --no-create-home --group tomcat
创建过程会提示设置密码等信息,可直接回车跳过。此使用者仅拥有访问 /opt/tomcat 目录的权限,不具备 sudo 权限。
二、准备 Tomcat 安装目录
假设 Tomcat 已解压至 /opt/tomcat如果目录不存在请先创建并解压:
# 示例:下载并解压 Tomcat 9
sudo mkdir -p /opt/tomcat
cd /tmp
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.87/bin/apache-tomcat-9.0.87.tar.gz
sudo tar xzf apache-tomcat-9.0.87.tar.gz -C /opt/tomcat --strip-components=1
2.1 更改目录所有权
将 Tomcat 目录及子文件全部归属新建的 tomcat 使用者和组,以消除“权限过宽”的隐患。
# 将所有权递归修改为 tomcat:tomcat
sudo chown -R tomcat:tomcat /opt/tomcat
2.2 设置合适的访问模式
对关键子目录(如 /opt/tomcat/conf。/opt/tomcat/logs,/opt/tomcat/webapps) 设置只读或可写权限,防止恶意代码随意修改配置文件。
# conf 只读
sudo chmod -R 750 /opt/tomcat/conf
# logs 可写但不可执行
sudo chmod -R 750 /opt/tomcat/logs
# webapps 部署时需要写入权限
sudo chmod -R 770 /opt/tomcat/webapps
三、编写 Systemd 服务单元文件
使用 systemd 管理 Tomcat 可以统一启动/停止、自动重启还有日志收集。下面创建一个安全的 service 文件。
# 使用编辑器打开或新建 service 文件
sudo nano /etc/systemd/system/tomcat.service
tomcat.service 内容示例:
Description=Apache TomCat Web Application Container
After=network.target
Type=forking
# 环境变量
Environment=JA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JA_OPTS=-Djava.endorsed.dirs=/usr/share/java'
# 启动/关闭脚本方法
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomctl/bin/shutdown.sh
# 指定运行使用者/组。实现最小特权原则
User=tomcatactual # 正确使用者名为 tomcatactual,请确保与前面创建的一致
Group=tomcatactual
# 自动重启策略
Restart=on-failure
RestartSec=10
WantedBy=multi-user.target
3.1 注意事项与常见错误
- User/Group 必须与第 一步创建的程序账号保持一致。
-
ExecStop 方法写错会导致停止失败。请确认是
/opt/tomcat/bin/shutdown.sh. - If JA_HOME 不匹配当前 JDK,会在启动时报错。
四、加载并开启服务
# 重新加载 systemd 配置。
使新 service 生效
sudo systemctl daemon-reload
# 启动 TomTomcatactual 服务并设置开机自启
sudo systemctl start tomcatactual
sudo systemctl enable tomcatactual
4.1 验证服务状态
# 查看服务是否正常运行
sudo systemctl status tomcatactual
# 检查进程归属
ps -ef | grep tomcatactual
五、防火墙与网络访问控制
痛点:TOMCAT 默认端口 8080 对外开放,一旦暴露管理页面容易被暴力。按理说,我们通过 UFW 精细化放行,仅允许必要端口。
# 安装 UFW
sudo apt-get install ufw
sudo ufw default deny incoming
sudo ufw allow ssh sudo ufw allow from 127.0.0.1 to any port 8080
sudo ufw enable
六、验证配置是否生效
- 使用浏览器访问 {% raw %} 检查页面是否正常显示。
-
确认进程属于
a href="mailto:tomcatactual">tomcatactual` 使用者:`ps -u tomcatactual`。 - `journalctl -u tomcatactual` 看日志,确保没有权限相关错误。
- `ufw status verbose` 确认仅允许预期来源访问端口 8080。
七、日常维护建议
- 定期审计文件权限:`find /opt/tomcataactua l -type f!-perm 640 -exec ls -l {} \;` 查找异常文件,
- TOMCAT 与 JDK 更新:Patching security漏洞后立即升级,并重新执行上述权限检查步骤。
- MFA 与强密码:TOMCAT Manager 与 Host Manager 应开启基于角色的访问控制,并使用强密码或 LDAP 集成。
- CVE监控:`apt list --upgradable` + `apt-get upgrade` 确保程序组件及时修补。
- Lynis 或 OpenSCAP 扫描:
八、结论
- 为 TomTomcataactua l 创建最小特权运行账号;对安装目录进行严格所有权和模式设置;使用 Systemd 将 TomTomcactua l 纳入统一管理;,确保服务真实以新使用者身份运行;提供后续维护与安全加固指引。不过,

