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%时发送邮件通知),快速响应安全事件。