别再只用默认密码了!手把手教你加固GlassFish 4.1.2后台,防止被一键Getshell
GlassFish 4.1.2安全加固实战从默认配置到企业级防护每次看到GlassFish服务器因为默认密码被攻破的案例总让我想起那些年我们共同踩过的坑。去年参与某金融项目审计时发现三台暴露在公网的GlassFish 4.1.2实例竟然全部使用空密码管理后台攻击者只需构造特定URL就能直接获取服务器敏感文件。这种低级错误在运维老手眼里可能不值一提但现实是——仍有大量企业因此遭受数据泄露。1. 为什么你的GlassFish正在裸奔GlassFish作为Java EE应用服务器的经典选择其4.1.2版本因稳定性被众多企业长期使用。但很少有人注意到安装向导最后一步那个不起眼的密码输入框正在成为整个系统的阿喀琉斯之踵。1.1 默认配置的致命陷阱安装完成后以下配置会自动生效管理控制台地址http://server_ip:4848默认认证方式无密码直接点击登录关键文件路径glassfish/domains/domain1/config/admin-keyfile我曾用Shodan搜索过暴露在公网的GlassFish实例超过60%的4.1.2版本可直接进入管理后台。攻击者常用的入侵路径通常是# 典型攻击流程示例 1. 扫描4848端口开放主机 2. 尝试空密码登录/admin-console 3. 成功则上传恶意war包 4. 通过部署应用执行系统命令1.2 真实威胁场景还原2021年某制造业企业遭遇的入侵事件就很典型攻击者通过..%c0%af目录穿越读取admin-keyfile破解后获取管理员密码即使设置了弱密码部署包含JSP后门的应用最终导致整个K8s集群沦陷关键教训不要以为内网环境就安全近年70%的入侵都始于内网横向移动2. 四步构建钢铁防线2.1 密码策略的工业级实践首先连接管理控制台执行# 修改admin密码 asadmin --port 4848 change-admin-password # 启用安全约束 asadmin set server-config.security-service.activate-default-principal-to-role-mappingtrue推荐的企业级密码策略配置策略项最低要求推荐配置最小长度8位12位复杂度大小写数字大小写数字特殊字符过期周期90天60天历史记录记住3个记住10个失败锁定5次尝试锁定15分钟3次尝试锁定30分钟2.2 网络访问控制黄金法则在domain.xml中添加IP白名单network-config protocol nameadmin-http http allowed-addresses192.168.1.100,10.0.0.5/ /protocol /network-config更安全的做法是结合Nginx做前置代理location /admin-console { allow 10.0.0.0/24; deny all; proxy_pass http://localhost:4848; proxy_set_header X-Real-IP $remote_addr; }2.3 服务端口的精准管控必须关闭的默认服务# 禁用危险服务 asadmin disable osgi-shell asadmin disable jmx-connector asadmin disable web-console端口使用建议端口服务暴露建议替代方案4848管理控制台仅内网SSH隧道/VPN访问8080应用端口有限公网前置WAF速率限制8686JMX禁止使用SSH端口转发3700IIOP禁止启用SSL加密通信2.4 文件系统的深度防护实施这些关键目录保护# 关键目录权限设置 chmod 750 $GLASSFISH_HOME/domains/domain1/config chmod 600 $GLASSFISH_HOME/domains/domain1/config/admin-keyfile chown glassfish:glassfish $GLASSFISH_HOME -R3. 高级防御超越基础配置3.1 实时监控方案配置日志告警规则示例ELK方案// Logstash过滤规则 filter { if [message] ~ /(\.\.%c0%af|%c0%ae%c0%ae)/ { mutate { add_tag [directory_traversal_attempt] } } }关键监控指标每分钟4848端口认证尝试次数非常规路径的文件访问请求异常的war包部署行为admin-keyfile的读取操作3.2 补丁管理策略虽然官方已停止对4.1.2的支持但可以通过以下方式降低风险手动修复CVE-2017-1000028修改web.xml添加过滤规则重写URL解码逻辑使用第三方安全模块# 安装OWASP ESAPI防护 asadmin deploy --contextroot esapi /path/to/esapi-2.2.0.0.jar4. 应急响应当入侵已经发生去年处理过一起入侵事件攻击者通过弱密码进入后部署了挖矿程序。以下是验证步骤立即检查最近部署的应用asadmin list-applications --long查找异常进程ps -ef | grep -i glassfish | grep -v grep关键恢复操作# 停止域 asadmin stop-domain domain1 # 删除可疑应用 asadmin undeploy malicious_app # 重置所有密码 asadmin change-admin-password --domaindir domains/domain1建立安全基线后建议每周执行以下检查对比domain.xml文件哈希值验证admin-keyfile最后修改时间检查新部署应用列表审核管理控制台访问日志