CentOS 上配置 Java 安全策略
一 准备与环境确认
java -version。如未安装,可使用包管理器安装,例如:sudo yum install java-1.8.0-openjdk。sudo chown root:root /opt/app/myapp.policy && sudo chmod 600 /opt/app/myapp.policy。二 创建与编辑策略文件
sudo cp $JAVA_HOME/jre/lib/security/java.policy /opt/app/myapp.policyjava -Djava.security.manager -Djava.security.policy=/opt/app/myapp.policy -jar your-app.jarjava -Djava.security.manager -Djava.security.policy==/opt/app/myapp.policy -jar your-app.jar(注意“==”会只使用指定文件,不叠加默认策略)。grant 条目,或在系统层面设置 security.policy 属性(不推荐直接放开为 AllPermission)。三 常用策略示例
grant codeBase "file:/opt/app/-" {
permission java.io.FilePermission "/opt/app/config/*", "read";
permission java.io.FilePermission "/opt/app/logs", "read,write";
};
grant {
permission java.net.SocketPermission "localhost:1024-", "connect,resolve";
};
grant {
permission java.lang.RuntimePermission "loadLibrary.*";
};
grant {
permission java.security.AllPermission;
};
*、- 目录递归)。<<ALL FILES>> 与 AllPermission 在生产环境。四 启用与验证
-Djava.security.manager-Djava.security.policy=/path/to/policy(使用“==”表示仅用该文件)。-Djava.security.debug=access,failure(输出到标准错误,便于定位缺失的权限条目)。五 生产实践与安全加固建议
java_app_user),目录权限最小化(如 750),关键文件 600;结合 firewalld/iptables 限制端口与来源网段;启用并正确配置 SELinux 以进行强制访问控制。AllPermission;为 JMX、RMI、JMS 等远程组件设置受限的 SocketPermission 与认证。System.setSecurityManager(null) 绕过策略;对外服务最小化暴露面,禁用不必要的协议与端点。sudo yum update java-1.8.0-openjdk);定期审计策略与访问日志,按业务变更收紧权限。