温馨提示×

Linux服务器Java如何安全配置

小樊
43
2025-12-10 09:00:50
栏目: 云计算

Linux服务器 Java 安全配置清单

一 基础环境与运行账户

  • 保持 JDK/JRE 为受支持的最新版本,及时获取安全修复;在 Linux 上优先使用包管理器安装并定期更新。避免使用已停止维护的版本。
  • 非 root 专用系统账户运行 Java 进程(如创建 javauser),遵循最小权限原则。
  • 正确设置 JAVA_HOMEPATH,避免路径劫持与环境混淆。
  • 示例:创建用户并以该用户启动
    • 创建用户:sudo adduser javauser
    • 切换运行:sudo -u javauser java -jar your-app.jar
      以上做法可降低被攻破后的横向权限与系统破坏面。

二 JVM 与 Java 运行时安全参数

  • 内存与稳定性
    • 设置堆大小:-Xms-Xmx(如 -Xms256m -Xmx512m),避免无限制占用导致 OOM 影响系统稳定性。
    • 开启故障诊断:-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/var/log/heapdumps,便于事后分析。
    • 错误处置:-XX:OnOutOfMemoryError="kill -9 %p" 或执行告警脚本,防止“僵尸进程”。
  • 熵源与启动
    • 加速启动并避免阻塞:-Djava.security.egd=file:/dev/./urandom(注意使用“/./”绕过 JVM 内置过滤)。
  • 安全策略
    • 启用安全管理器:-Djava.security.manager -Djava.security.policy=/opt/app/policy.txt(按需最小化授权)。
  • 示例(可写入 setenv.sh 或 systemd ExecStart 前):
    • JAVA_OPTS="-server -Xms256m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/heapdumps -Djava.security.egd=file:/dev/./urandom"
      以上参数有助于限制资源、提升可观测性并降低被滥用风险。

三 网络与传输安全

  • 强制 TLS/HTTPS:在 Tomcat 等容器中配置 SSL/TLS,禁用明文端口;仅启用 TLSv1.2+,禁用 SSLv3/TLSv1.0/TLSv1.1
  • 示例(Tomcat server.xml Connector):
    • <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/path/to/keystore.jks" keystorePass="changeit" sslProtocol="TLS"/>
  • 协议与算法
    • 使用 TLS 进行传输加密;数据静态加密优先 AES-128/256(结合密钥管理)。
  • 边界与访问控制
    • 通过 firewalld/iptables/ufw 仅开放必要端口(如 443/8443),对管理口限制来源网段。
    • 示例(firewalld):firewall-cmd --permanent --add-service=https && firewall-cmd --reload
      以上措施确保数据在传输与边界处得到保护。

四 应用容器与代码层加固

  • 容器与框架
    • Tomcat:禁用目录列表(在应用的 web.xml 使用 <security-constraint><auth-constraint/> 拦截目录浏览);删除或限制管理应用(如 manager/admin)访问;为管理接口配置强口令与来源限制。
    • 移除或禁用不再使用的组件(如 Java Web Start、浏览器插件等),减少攻击面。
  • 代码层
    • 使用 PreparedStatement 防止 SQL 注入;对输出进行适当编码避免 XSS;敏感数据加密存储与传输。
  • 依赖与漏洞治理
    • 定期更新依赖,使用 OWASP Dependency-Check 等工具扫描第三方库漏洞,及时修复。
      以上做法覆盖常见 Web 容器风险与代码注入类漏洞。

五 系统与运维安全

  • 资源与权限隔离
    • 通过 ulimit 限制进程资源(打开文件数、地址空间等),防止资源耗尽型攻击或误操作。
    • 示例(/etc/security/limits.conf):
      • javauser soft nofile 1000
      • javauser hard nofile 2000
      • javauser soft as 512M
      • javauser hard as 1024M
  • 强制访问控制
    • 启用并保持 SELinuxenforcing,按需编写策略,避免直接 setenforce 0 或永久关闭。
  • 持续维护
    • 定期更新 操作系统与 Java;集中收集与审计 应用与系统日志;对变更进行灰度与回滚演练。
      以上措施提升系统层面的隔离与可审计性,形成闭环运维。

0