1. 安装与更新Java环境
首先确保系统安装了OpenJDK(Ubuntu默认仓库提供),推荐使用LTS版本(如Java 11、17)以获得长期安全支持。通过以下命令安装:
sudo apt update
sudo apt install openjdk-11-jdk # 替换为所需版本,如openjdk-17-jdk
验证安装:
java -version # 确认版本信息
javac -version # 确认编译器可用性
定期运行sudo apt update && sudo apt upgrade更新Java至最新补丁版本,修复已知漏洞。
2. 配置Java安全策略文件
Java全局安全策略文件位于/etc/java-<version>/security/java.security(如Java 11为/etc/java-11-openjdk-amd64/security/java.security)。使用文本编辑器(如nano)修改该文件,调整以下关键参数:
jdk.certpath.disabledAlgorithms行,添加或修改为:jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 2048, DSA keySize < 2048
此设置禁用MD2/MD5哈希算法及短密钥长度的RSA/DSA,防止弱加密攻击。security.level参数,设置为HIGH(默认)或VERY_HIGH,增强默认安全限制。3. 创建自定义策略文件(可选)
若需为特定应用定制权限(而非全局修改),可创建.policy文件(如/home/user/myapp.policy),内容示例如下:
grant codeBase "file:/home/user/myapp/-" {
permission java.io.FilePermission "/tmp/*", "read,write";
permission java.net.SocketPermission "localhost:8080", "listen,accept";
permission java.util.PropertyPermission "user.home", "read";
};
启动应用时通过-Djava.security.policy参数指定该文件:
java -Djava.security.manager -Djava.security.policy=/home/user/myapp.policy -jar /home/user/myapp.jar
其中-Djava.security.manager启用安全管理器,确保策略文件生效。
4. 使用keytool管理密钥库
keytool是Java自带的证书与密钥管理工具,用于生成密钥库(Keystore)、导入/导出证书。常见操作:
keytool -genkeypair -alias mydomain -keyalg RSA -keystore keystore.jks -keysize 2048
按提示输入密钥库密码、姓名等信息(建议使用强密码)。keytool -list -v -keystore keystore.jks
keytool -exportcert -alias mydomain -file mydomain.crt -keystore keystore.jks
密钥库文件应存放在安全目录(如/etc/ssl/private),权限设置为600(仅所有者可读写)。
5. 强化系统级安全防护
Java应用运行在Ubuntu系统上,需通过系统配置降低攻击面:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 8080/tcp # Java应用
sudo ufw enable # 启用防火墙
sudo ufw status # 查看规则
apt仅安装必要的软件包,避免冗余组件引入漏洞。/etc/ssh/sshd_config,设置Port 2222(非标准端口)、PermitRootLogin no(禁用root远程登录)、PasswordAuthentication no(禁用密码登录,使用密钥对),然后重启SSH服务:sudo systemctl restart ssh
/etc/apparmor.d/usr.sbin.java),限制其对文件、网络的访问权限。6. 遵循安全编码与部署实践
<, >, ', ", \),防止SQL注入、XSS攻击。Thymeleaf自动转义),避免恶意脚本执行。certbot工具获取),强制客户端使用HTTPS访问,防止中间人攻击。7. 定期审计与监控
catalina.out)、系统日志(/var/log/syslog),识别异常行为(如频繁的登录失败、未授权访问尝试)。top、htop或jps命令监控Java进程的资源占用(CPU、内存),发现异常进程(如高CPU占用的Java进程)及时排查。