温馨提示×

CentOS JSP如何实现安全性

小樊
41
2025-12-15 17:48:00
栏目: 编程语言

CentOS 上部署的 JSP 应用可从操作系统、容器、应用代码与传输四个层面进行系统加固,以下清单可直接落地执行。

操作系统与网络层加固

  • 保持系统与软件为最新安全补丁:定期执行 yum update;Tomcat 与反向代理(如 Nginx/HAProxy)同样需要持续更新。
  • 最小化开放端口与访问面:仅开放 80/443(必要时临时开放 8080 用于调试),使用 firewalld 管理规则,例如:firewall-cmd --zone=public --add-port=80/tcp --permanent && firewall-cmd --reload。
  • 部署反向代理与 HTTPS:用 Nginx/HAProxy 终止 TLS,对外仅暴露 443;在代理或 Tomcat 上启用 HSTSCSP 头,降低 XSS 与降级攻击风险。
  • 运行身份与最小权限:为 Tomcat 创建专用系统用户(如 tomcat),以该用户运行服务,文件权限与目录属主按最小权限配置。
  • 资源与运行隔离:通过 systemd 设置内存/CPU 限制与自动重启策略,避免异常进程放大影响面。

Tomcat 与 JSP 容器安全

  • 隐藏版本与敏感信息:在 server.xml Connector 中设置 server 为自定义值(如 “SecureServer”),并定制 ServerInfo.properties 隐藏 Server/X-Powered-By 等标识。
  • 禁用目录浏览:在 conf/web.xmllistings 设为 false,防止目录遍历泄露。
  • 删除默认与管理应用:清理 webapps 下不需要的 docs、examples、host-manager、manager、ROOT 等目录,减少攻击面。
  • 连接器与协议:生产环境建议仅开放 8080/8443 中的必要端口,启用 HTTP/2(若使用 APR/NIO2),并配置合理的超时与连接数。
  • 进程与权限:以 tomcat 用户运行,配置 systemdUser/Group/UMask,并限制 JAVA_OPTS/CATALINA_OPTS 的内存与 GC 参数。

JSP 与 Java 代码层安全

  • 输入校验与输出编码:对所有用户输入进行白名单校验;在页面输出使用 JSTL <c:out>EL 自动转义,防止 XSS
  • 防 SQL 注入:统一使用 PreparedStatement/参数化查询,禁止字符串拼接 SQL。
  • 保护 JSP 源码:将视图 JSP 放入 WEB-INF,仅允许通过 Servlet 转发(RequestDispatcher.forward) 访问;如需对外映射,可在 web.xml 配置 / 间接暴露。
  • 安全配置与凭据:遵循 最小权限原则;用户口令采用强哈希(如 SHA-256/SHA-512 或更安全的口令派生算法)存储,禁止明文与弱口令。

传输加密与访问控制

  • 全站 HTTPS:部署有效证书,对外仅开放 443;在反向代理或 Tomcat 上设置 Strict-Transport-Security: max-age=31536000; includeSubDomains,并配置 Content-Security-Policy 限制脚本来源。
  • 反向代理与头部:在 Nginx 中设置 proxy_set_header Host $host; X-Real-IP $remote_addr; X-Forwarded-For $proxy_add_x_forwarded_for; X-Forwarded-Proto $scheme;,便于后端获取真实客户端信息并正确识别 HTTPS。
  • 防火墙与端口策略:仅放行 80/443(及必要的 8080 内网调试端口),定期审计规则与监听端口。

监控与维护

  • 日志与审计:集中收集 access.log/error.log/catalina.out 与系统日志,关注异常状态码、路径遍历、暴力访问与可疑 UA。
  • 运行监控与告警:使用 top/htop 与监控平台(如 Nagios/Zabbix)对 CPU/内存/连接数JVM 指标进行监控并设置阈值告警。
  • 持续更新与基线核查:定期更新 CentOS、JDK、Tomcat、Nginx/HAProxy;对关键配置(目录浏览、默认应用、版本隐藏、TLS 参数)进行基线化复核。

0