1. 系统级基础安全加固
sudo apt update && sudo apt upgrade,安装Ubuntu和Java的最新安全补丁,修复已知漏洞。sudo ufw enable && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp。sudo passwd -dl root),配置SSH密钥认证(修改/etc/ssh/sshd_config,设置PermitRootLogin no和PasswordAuthentication no),并使用强密码策略(通过/etc/pam.d/system-auth添加pam_cracklib.so模块,要求密码包含大小写字母、数字和特殊字符,最小长度10位)。2. Java环境安全配置
sudo apt install openjdk-11-jdk),避免从非官方渠道下载;验证安装版本(java -version、javac -version)。/usr/lib/jvm/java-<version>/lib/security/java.security(如Java 11为/usr/lib/jvm/java-11-openjdk-amd64/lib/security/java.security),可调整全局安全参数(如加密算法强度、随机数生成器);myapp.policy)需自定义权限,示例内容:grant codeBase "file:/path/to/your/app/-" { permission java.security.AllPermission; };(仅允许可信路径下的应用运行);java -Djava.security.policy=/path/to/myapp.policy -jar your-app.jar),或在代码中设置(System.setProperty("java.security.policy", "/path/to/myapp.policy"))。3. Java应用层安全防护
@NotNull、@Size注解),防止SQL注入、XSS等攻击;清理特殊字符(如<、>、'),避免恶意代码执行。mvn org.owasp:dependency-check-maven:check),识别并替换存在漏洞的库(如旧版本Spring、Log4j);将依赖库存储在私有仓库(如Nexus),避免从公共仓库下载未验证的组件。server.xml启用HTTPS,或通过Spring Boot的application.properties设置server.ssl.enabled=true);对敏感数据(如用户密码、数据库凭证)进行加密存储(使用Jasypt等库,配置加密密钥并通过环境变量传递)。SafeObjectInputStream封装反序列化操作,重写resolveClass方法,仅允许加载可信类(如白名单机制,示例代码:private static final String[] SAFE_CLASSES = {"java.util.ArrayList"};,若类名不在白名单中则抛出SecurityException)。4. 运行时权限控制
System.setSecurityManager(new SecurityManager())启用安全管理器,限制Java应用的权限(如禁止访问文件系统、网络);配合策略文件定义具体权限(如grant { permission java.io.FilePermission "/tmp/-", "read"; };仅允许读取/tmp目录)。SecureClassLoader,重写loadClass方法,禁止加载敏感类(如com.xxx.sensitive包下的类),示例代码:if (name.startsWith("com.xxx.sensitive")) { throw new SecurityException("禁止加载敏感类"); },防止恶意类被加载执行。5. 日志与监控
{password})替代。logwatch或fail2ban监控日志文件(如/var/log/auth.log、应用日志),设置告警规则(如连续5次登录失败触发邮件通知);定期审查日志,及时发现异常行为(如大量来自陌生IP的请求、未授权的访问尝试)。