1. 系统与Java环境更新
保持Ubuntu系统和Java运行时环境(JRE/JDK)的最新版本是安全基础。定期运行sudo apt update && sudo apt upgrade
更新系统包,修复已知漏洞;Java方面,优先使用OpenJDK(如openjdk-17-jdk
),通过sudo apt install openjdk-17-jdk
安装,避免使用过时的Oracle JDK(除非有特殊需求)。
2. 最小权限原则配置
javaapp
),避免以root
身份运行。命令示例:sudo useradd -r -s /bin/false javaapp
(-r
表示系统用户,-s /bin/false
禁止登录)。/opt/java
)和应用文件的访问权限,仅允许必要用户读写。例如:sudo chown -R javaapp:javaapp /opt/java
,sudo chmod -R 750 /opt/java
。3. Java安全策略文件配置
通过安全策略文件(.policy
)精细化控制Java应用的权限。例如,创建/opt/myapp/myapp.policy
文件,内容如下:
grant { permission java.io.FilePermission "/opt/myapp/data/*", "read,write"; permission java.net.SocketPermission "localhost:8080-8081", "listen,accept"; permission java.util.PropertyPermission "java.version", "read"; };
启动应用时通过-Djava.security.policy
参数指定策略文件:java -Djava.security.manager -Djava.security.policy=/opt/myapp/myapp.policy -jar /opt/myapp/myapp.jar
。
4. 防火墙与网络访问控制
使用UFW(Uncomplicated Firewall)限制入站/出站流量,仅开放应用必需的端口(如HTTP 8080、HTTPS 8443)。命令示例:
sudo ufw default deny incoming # 默认拒绝所有入站连接 sudo ufw allow 8080/tcp # 允许应用端口 sudo ufw allow 22/tcp # 允许SSH管理(可选) sudo ufw enable # 启用防火墙 sudo ufw status # 查看规则状态
避免开放不必要的端口(如FTP、Telnet),减少攻击面。
5. 安全编码与依赖管理
OWASP Java Encoder
库),避免恶意脚本执行。OWASP Dependency-Check
插件,定期扫描依赖库中的已知漏洞(如CVE),并及时升级到安全版本。6. SSL/TLS加密配置
为Java应用启用SSL/TLS,确保数据传输安全。以Tomcat为例,步骤如下:
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /opt/tomcat/conf/keystore.jks -validity 365
(按提示设置密码和信息)。server.xml
,添加SSL连接器:<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="/opt/tomcat/conf/keystore.jks" type="RSA" /> </SSLHostConfig> </Connector>
web.xml
配置安全约束,重定向HTTP请求到HTTPS。7. 日志与监控
java.lang.Exception
堆栈)。Prometheus
+Grafana
监控应用性能(如CPU、内存占用),或Fail2Ban
监控日志中的恶意行为(如频繁登录失败),自动封禁IP。8. 密钥与敏感数据管理
keytool
管理密钥库(如keystore.jks
),设置强密码(包含大小写字母、数字、特殊字符),避免泄露。Jasypt
)加密存储,避免明文写在配置文件中。9. 定期安全审计
OpenVAS
、Nessus
等工具定期扫描Ubuntu系统和Java应用,识别未修复的漏洞。OWASP ZAP
进行渗透测试,模拟黑客攻击,发现潜在的安全漏洞(如SQL注入、XSS)。