在 Debian 上运行 JSP(通常是 Tomcat / Jetty 等 Java Web 容器) 时,安全配置应从系统层、容器层、应用层三方面入手。下面给你一份实用、可落地的 Debian + JSP 安全配置清单。
apt install --no-install-recommends tomcat10
Tomcat 不要用 root 运行:
useradd -r -s /bin/false tomcat
chown -R tomcat:tomcat /var/lib/tomcat10
ufw enable
ufw allow 80
ufw allow 443
ufw deny 8080
生产环境不要直接暴露 8080
apt update && apt upgrade
unattended-upgrades
删除:
rm -rf /var/lib/tomcat10/webapps/ROOT
rm -rf /var/lib/tomcat10/webapps/docs
rm -rf /var/lib/tomcat10/webapps/examples
conf/web.xml:
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
conf/server.xml:
<!-- 注释掉 -->
<!-- <Connector port="8009" protocol="AJP/1.3" /> -->
manager / host-manager<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1" />
apt install certbot
certbot certonly --webroot
配置 server.xml:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateFile="..." />
</SSLHostConfig>
</Connector>
WEB-INF/web.xml:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<c:out value="${param.name}" />
Content-Security-Policy: default-src 'self'
✅ 使用 PreparedStatement
❌ 禁止字符串拼接 SQL
chmod 750 /var/lib/tomcat10
chmod 640 /etc/tomcat10/*
/var/log/tomcat10/fail2ban✅ 不使用 root
✅ 不暴露管理端口
✅ 定期升级 Tomcat & JDK
✅ 使用反向代理(Nginx)
Internet
↓
Nginx (HTTPS)
↓
Tomcat (localhost:8080)
↓
JSP App
如果你愿意,我可以:
你现在是 学习 / 生产 / 考试 用途?