Java 在 Ubuntu 上的安全设置配置指南
一 系统与 Java 基础加固
sudo apt update && sudo apt upgrade;如使用 Oracle JDK,也需同步关注官方安全补丁发布与升级。sudo apt install openjdk-11-jdk;验证版本:java -version、javac -version。sudo ufw enable、sudo ufw allow 80/tcp、sudo ufw status;SSH 加固(禁用 root 登录、优先密钥登录)可参考:PermitRootLogin no、PasswordAuthentication no。二 配置 Java 安全属性与加密策略
jdk.certpath.disabledAlgorithmsjdk.tls.disabledAlgorithmsjdk.*.disabledAlgorithms 项
示例(按实际需求精简与调整):jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA
jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServerAuth
Security.setProperty(...)),但生产环境建议以文件为主、代码为辅,便于审计与回滚。java.security.debug)。三 使用安全策略文件与安全管理器限制权限
-Djava.security.policy=/path/to/app.policy;如需合并系统策略,可使用 == 覆盖:java -Djava.security.policy==/path/to/app.policy ...。grant codeBase "file:/opt/myapp/-" {
// 文件读写(示例目录)
permission java.io.FilePermission "/opt/myapp/logs/-", "read,write,delete";
// 仅允许本地回环端口监听
permission java.net.SocketPermission "localhost:8080", "listen,resolve";
// 允许 DNS 解析
permission java.net.SocketPermission "*", "resolve";
// 读取必要系统属性
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "file.separator", "read";
};
-Djava.security.manager(若未显式指定策略文件,将使用默认策略与系统策略合并)。注意:SecurityManager 已在 Java 17 起标记为废弃,未来版本可能移除;在新项目中更推荐以容器/系统权限隔离、最小权限进程、代码审计等手段替代。-Djava.security.debug=access,failure,policy 输出细粒度权限校验与策略加载日志,快速定位 AccessControlException 等权限不足问题。四 运行与运维安全实践
ObjectInputStream.resolveClass)或采用更安全的序列化框架与校验机制。