1. 系统与Java环境基础安全
sudo apt update && sudo apt upgrade
更新Ubuntu系统及Java运行时环境(JRE/JDK),及时修复已知安全漏洞;优先使用Ubuntu软件源中的OpenJDK(如openjdk-17-jdk
),避免使用过时的Oracle JDK版本。/etc/environment
(全局)或~/.bashrc
(用户级)文件,设置JAVA_HOME
(如/usr/lib/jvm/java-17-openjdk-amd64
)和PATH
(包含$JAVA_HOME/bin
),运行source /etc/environment
使配置生效,确保系统能正确识别Java命令。2. 防火墙与网络访问控制
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status # 验证规则
避免开放不必要的端口(如远程桌面端口3389),减少外部攻击面。3. Java安全策略配置
/etc/java-17-security/java.security
),调整以下关键参数:
securerandom.source=file:/dev/urandom
:提升随机数生成性能(避免/dev/random
阻塞);jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1
:禁用弱TLS协议,仅保留TLSv1.2及以上版本;crypto.policy=unlimited
:解除加密强度限制(如AES密钥长度支持256位)。.policy
文件(如myapp.policy
),定义允许的权限(如文件读写、网络监听),例如:grant {
permission java.io.FilePermission "/var/myapp/data/*", "read,write";
permission java.net.SocketPermission "localhost:8080", "listen";
};
启动应用时通过-Djava.security.manager -Djava.security.policy=myapp.policy
参数加载策略文件,限制应用权限。4. 密钥与证书管理
keytool
工具生成、查看或导入密钥库(Keystore,扩展名为.jks
或.p12
),例如生成自签名证书:keytool -genkeypair -alias myapp -keyalg RSA -keystore /path/to/keystore.jks -validity 365
查看密钥库条目:keytool -list -v -keystore /path/to/keystore.jks
,确保证书未过期且私钥安全存储。5. 用户认证与权限控制
/etc/ssh/sshd_config
,设置PermitRootLogin no
),强制使用密码+密钥双因素认证(PasswordAuthentication no
);设置强密码策略(通过/etc/pam.d/common-password
文件,要求密码长度≥10位,包含大小写字母、数字和特殊字符)。javaapp
),通过useradd -r -s /usr/sbin/nologin javaapp
创建系统用户,限制其仅能访问应用所需目录(如/var/myapp
),避免使用root用户运行应用。6. SSL/TLS加密通信
server.xml
文件,添加SSL连接器配置:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="/path/to/keystore.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
强制应用使用HTTPS(通过redirectPort
将HTTP请求重定向至HTTPS),防止中间人攻击和数据泄露。7. 代码安全与依赖管理
@Escape
注解),避免敏感信息(如密码、数据库连接串)硬编码在代码中。OWASP Dependency-Check
插件扫描依赖库中的已知漏洞(如CVE),定期更新依赖库至安全版本(如spring-boot-starter-parent
的最新稳定版)。8. 日志监控与应急响应
Logwatch
或ELK Stack
(Elasticsearch+Logstash+Kibana)集中分析日志,及时发现异常行为(如频繁的登录尝试、未授权访问)。Prometheus
+Grafana
监控Java应用的运行状态(如CPU使用率、内存占用、线程数),设置告警阈值(如内存占用超过80%时发送邮件通知),快速响应安全事件。