CentOS系统中Java安全设置指南
确保Java环境变量正确配置,编辑/etc/profile文件,添加以下内容:
export JAVA_HOME=/usr/java/latest(根据实际安装路径调整)
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
执行source /etc/profile使配置生效。
通过调整JVM参数增强应用安全性,创建/usr/local/tomcat/bin/setenv.sh文件(若使用Tomcat),添加:
JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx512m -Dfile.encoding=UTF-8'
java.security.egd=file:/dev/./urandom:使用更安全的随机数生成器,避免启动延迟;-Xms/-Xmx:限制堆内存大小,防止内存耗尽攻击。编辑conf/web.xml文件,添加以下内容,防止敏感目录结构泄露:
<security-constraint>
<web-resource-collection>
<web-resource-name>Directory Listing</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
编辑/etc/tomcat/conf/tomcat-users.xml文件,配置用户角色及权限(务必修改默认密码):
<tomcat-users>
<role rolename="manager-gui"/>
<user username="admin" password="strong_password" roles="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="strong_password" roles="admin-gui"/>
</tomcat-users>
为避免信息泄露,删除Java控制面板相关文件:
rm -rf /usr/java/latest/jre/lib/security/controlpanel.jar
SELinux可增强系统隔离性,推荐保持 enforcing 模式(而非禁用)。若需临时调整,执行setenforce 0;永久修改需编辑/etc/selinux/config文件,将SELINUX=enforcing改为SELINUX=permissive(记录警告但不阻止操作),然后重启系统。
使用firewalld开放必要端口,限制非法访问:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
创建/path/to/myapp.policy文件,定义细粒度权限(示例):
grant codeBase "file:/path/to/your/app/-" {
permission java.io.FilePermission "/path/to/your/app/resources/*", "read";
permission java.net.SocketPermission "localhost:8080", "connect";
permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
};
<<ALL FILES>>等宽泛权限。启动Java应用时,通过命令行参数启用安全管理器并指定策略文件:
java -Djava.security.manager -Djava.security.policy=/path/to/myapp.policy -jar your_application.jar
定期通过yum update java-1.8.0-openjdk(或对应版本)更新Java,修复已知漏洞。
adm、lp);chattr +i /etc/passwd /etc/shadow锁定口令文件(防止篡改)。编辑/etc/ssh/sshd_config文件,添加AllowUsers your_username,仅允许指定用户通过SSH登录,然后重启SSH服务:systemctl restart sshd。
启用Java安全日志,通过-Djava.util.logging.config.file=/path/to/logging.properties指定日志配置,定期检查/var/log/java-security.log(或对应路径)中的异常记录,及时响应安全事件。