Java 在 Linux 下的安全配置清单
一 基础运行环境与权限
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;export PATH=$JAVA_HOME/bin:$PATHsudo adduser javausersudo -u javauser java -jar your-app.jarjava -version 确认运行时版本与路径。二 JVM 与 Java 安全配置
-Djava.security.manager -Djava.security.policy=/path/to/security.policypermission java.io.FilePermission "/opt/app/-", "read";permission java.net.SocketPermission "localhost:8080", "listen";permission java.net.SocketPermission "127.0.0.1:*", "connect,resolve";-Xmx2g(限制堆)、-XX:+HeapDumpOnOutOfMemoryError、-XX:OnOutOfMemoryError="kill -9 %p"(或执行清理脚本)。三 Linux 系统层加固
javauser soft nofile 1000、javauser hard nofile 2000javauser soft as 512M、javauser hard as 1024Mulimit -asestatussudo chcon -R -t usr_t /opt/app(按实际策略调整)sudo ufw allow 8443/tcp comment 'HTTPS',仅开放必要端口sudo firewall-cmd --permanent --zone=public --add-port=8443/tcp && sudo firewall-cmd --reload四 应用交付与运行期安全
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/path/to/keystore.jks" keystorePass="your_password"/>五 快速检查清单
| 检查项 | 关键动作 | 验证方式 |
|---|---|---|
| Java 版本 | 使用受支持版本并保持更新 | java -version |
| 运行账户 | 非 root 专用用户 | `ps -eo user,cmd |
| 文件权限 | 目录 750、文件 644/600 | ls -l /opt/app |
| 安全管理器 | 启用并配置最小权限策略 | 启动日志、策略命中审计 |
| 加密协议 | 仅启用 TLS 1.2/1.3 | 配置与扫描工具 |
| 资源限制 | limits.conf 设置 nofile/as | ulimit -a 与登录会话复核 |
| 防火墙 | 仅开放必要端口与来源 | ufw status 或 firewall-cmd --list-ports |
| 日志监控 | 关键事件落盘与告警 | 日志采集与告警规则检查 |