You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Elastic Beanstalk健康转警告求助:疑似黑客请求致EB误判

解决AWS Elastic Beanstalk因恶意扫描导致的健康误判问题

问题分析

从你提供的日志来看,这些upstream prematurely closed connection错误是黑客扫描不存在的PHP后门文件(比如/51314.php、/fusheng.php等)导致的。当Nginx试图将这些请求转发给上游应用服务器时,应用因为找不到对应文件直接关闭了连接,Nginx会默认返回502 Bad Gateway状态码——这正是Elastic Beanstalk(EB)健康监控统计的"HTTP 5xx错误",从而误判实例健康状态转为Warning,而你的实际应用运行完全正常。

解决方案

1. 拦截恶意请求,避免触发502错误

最直接的方式是让Nginx在转发给上游前就拦截这些无效请求,返回404而非502。你可以通过EB的自定义Nginx配置实现:

  • 在你的应用根目录创建.ebextensions/nginx/conf.d/block_malicious_scans.conf文件,添加以下配置:
# 拦截不存在的PHP文件请求,直接返回404
location ~* \.php$ {
    try_files $uri =404;
    # 保留原有的FastCGI/上游转发配置(如果有)
    # 例如:
    # fastcgi_pass unix:/var/run/php-fpm/www.sock;
    # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    # include fastcgi_params;
}

这个配置会先检查请求的PHP文件是否存在,不存在则直接返回404,不会转发给上游应用,也就不会触发连接关闭的错误和502状态码。

2. 封禁恶意IP

如果日志里的恶意请求来自固定IP(比如172.31.35.221),可以直接在Nginx里封禁:
在上述配置文件中添加:

deny 172.31.35.221;

或者通过EB的安全组规则,拒绝该IP的入站流量。

3. 调整EB健康检查策略

让EB只关注应用的健康状态,而非所有请求:

  • 登录AWS控制台,进入你的EB环境,在配置 > 监控 > 健康检查中,将健康检查路径修改为你的应用专属健康端点(比如/health),确保这个端点只返回200状态码。这样EB只会统计这个端点的请求,忽略恶意扫描的5xx错误。

预防建议

  • 启用AWS WAF:配置规则拦截常见的恶意请求模式,比如扫描后门文件、SQL注入、XSS攻击等,从源头阻止这类请求到达你的实例。
  • 定期审计日志:通过CloudWatch监控Nginx日志,设置告警规则,当出现大量异常请求(比如频繁访问非常规PHP文件)时及时通知。
  • 限制入站流量:通过安全组只开放必要的端口(比如80/443),拒绝不必要的IP访问。
  • 保持组件更新:定期更新EB平台版本、Nginx、应用服务器及依赖库,修复潜在安全漏洞。

内容的提问来源于stack exchange,提问作者user4848830

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:27:57