1. 最小权限原则
运行JSP应用的Ubuntu用户应仅授予完成任务所需的最小权限,避免使用root等高权限用户。例如,使用tomcat专用用户启动Tomcat服务,或通过sudo useradd -r -s /bin/false tomcat创建系统级用户,并通过chown -R tomcat:tomcat /opt/tomcat将Tomcat目录所有权分配给该用户。
2. 服务器配置安全(以Tomcat为例)
$CATALINA_HOME/webapps下的默认目录(如ROOT、examples、docs),防止恶意应用自动部署。$CATALINA_HOME/conf/server.xml,将Host节点的autoDeploy="true"改为false,unpackWARs="true"改为false,避免未经审核的WAR文件自动解压部署。server.xml的Connector节点添加server="CustomServer",隐藏Tomcat版本号,防止攻击者利用已知版本漏洞攻击。server.xml中的<Connector protocol="AJP/1.3"配置,减少攻击面。tomcat)启动,应用部署目录(如webapps)权限设置为tomcat:nobody,避免应用越权访问系统文件。3. 应用层安全防护
<、>、'、"),防止SQL注入、XSS攻击;优先使用JSTL标签库(如<c:out>)代替Scriptlet,自动处理输出编码。server.xml添加<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/path/to/cert.jks" keystorePass="changeit" clientAuth="false" sslProtocol="TLS"/>),并通过web.xml设置<security-constraint>强制所有请求跳转至HTTPS。web.xml中配置<session-config>,设置session-timeout="15"(分钟)控制会话有效期;通过response.setHeader("Set-Cookie", "JSESSIONID=" + session.getId() + "; HttpOnly; Secure; SameSite=Strict")启用Cookie的HttpOnly(防止XSS窃取)、Secure(仅HTTPS传输)、SameSite(防CSRF)属性。web.xml中配置<error-page>,将404、500等错误重定向至自定义页面(如/error/404.jsp),避免向用户暴露敏感信息(如堆栈跟踪、服务器路径)。4. 系统与网络安全强化
ufw(Ubuntu防火墙)限制开放端口,仅允许HTTP(80)、HTTPS(443)、SSH(22)等必要端口,例如执行sudo ufw allow 80/tcp、sudo ufw allow 443/tcp、sudo ufw allow 22/tcp,然后启用防火墙sudo ufw enable。/etc/apparmor.d/usr.sbin.tomcat9),限制其对系统资源的访问(如禁止读写/etc/shadow);或安装SELinux(sudo apt install selinux-utils),通过setenforce 1开启强制模式。web.xml中添加<init-param><param-name>listings</param-name><param-value>false</param-value></init-param>,或在Tomcat的conf/web.xml中全局设置,防止用户通过浏览器直接访问目录结构。5. 日志与监控
logging.properties文件,设置org.apache.catalina.level=FINE记录详细访问日志,启用应用日志(如Log4j2)记录用户操作、异常信息;确保日志文件(如logs/catalina.out)权限为tomcat:tomcat,防止未授权访问。grep、awk等工具定期分析日志,查找异常行为(如频繁的登录失败、大量404请求);部署SIEM工具(如Elasticsearch+Logstash+Kibana)实现实时监控与告警。6. 定期更新与补丁管理
sudo apt update && sudo apt upgrade更新Ubuntu系统组件。mvn dependency:tree检查第三方库(如Hibernate、Jackson)的漏洞,升级至安全版本。