在 Debian 上“Java 安全设置”通常可以从**系统层面(JDK/JRE 安全策略)和应用层面(Web、服务、容器)**两个角度来看。下面给你一套实用、可落地的配置建议。
优先使用:
apt install default-jdk)sudo apt update
sudo apt install default-jdk
java -version
⚠️ 不建议使用已停止维护的 JDK 8 老版本(除非业务强依赖)
永远不要:
sudo java -jar app.jar
应创建专用用户:
sudo useradd -r -s /bin/false javarun
sudo chown -R javarun:javarun /opt/app
sudo -u javarun java -jar app.jar
编辑 JDK 配置:
$JAVA_HOME/conf/security/java.security
示例(推荐):
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA
jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1
Java 17+ 已废弃 Security Manager,新项目不建议依赖
如仍使用:
java -Djava.security.manager -Djava.security.policy=my.policy App
my.policy 示例:
grant {
permission java.net.SocketPermission "localhost:1024-", "listen";
};
使用启动参数限制资源:
java \
-Xms256m -Xmx512m \
-XX:+DisableExplicitGC \
-Djava.security.egd=file:/dev/./urandom \
-jar app.jar
检查监听:
ss -tulnp | grep java
只暴露必要端口(如 8080),关闭 JMX / debug:
# 不要这样
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
示例(Spring Boot):
server:
ssl:
enabled: true
key-store: /etc/ssl/java/keystore.p12
key-store-password: strongpass
protocol: TLS
使用 Let’s Encrypt:
sudo apt install certbot
sudo certbot certonly --standalone -d example.com
ObjectInputStream 不可信输入sudo apt install ufw
sudo ufw allow 22
sudo ufw allow 443
sudo ufw enable
sudo apt update && sudo apt upgrade -y
开启自动安全更新:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
/etc/systemd/system/java-app.service
[Service]
User=javarun
NoNewPrivileges=true
ProtectSystem=strict
PrivateTmp=true
✅ 非 root 运行
✅ JDK 最新稳定版
✅ 禁用 TLS 1.0/1.1
✅ 不暴露 JMX/Debug
✅ 启用 HTTPS
✅ 防火墙开启
✅ 依赖定期更新
如果你能告诉我:
我可以给你更针对性的 Debian + Java 安全配置方案。