Sophos Antivirus 或其他防火墙/AV 阻止 Tomcat 或 AmazonS3Client listObjects() 方法?

Sophos Antivirus 或其他防火墙/AV 阻止 Tomcat 或 AmazonS3Client listObjects() 方法?

我有一对在第三方(客户)服务器上运行的 Java/Tomcat Web 应用程序,最近,这些应用程序无法再从 AmazonS3 列出或下载对象。

这是一个“什么都没变”的情况,我突然收到一个关于稳定系统的 bug 报告。在自己的 Windows 网络上托管该软件的其他用户没有遇到此问题,我们在 Amazon EC2 上托管的实例同样也没有问题。我能够确定它停止工作的日期,但客户 IT 同样说“什么都没变”。我确实看到 Sophos 软件在有问题的机器上运行,但不确定这是否是问题所在,而且它似乎是在发生此问题之前安装的。

重申一下,我在这个服务器上运行了两个与 S3 交互的应用程序,它们都在同一时间开始出现故障。值得注意的是,它们通过 SQS 消息进行交互。一个应用程序发布到 SQS(这有效),另一个应用程序轮询 SQS(这有效)。

为了调试这个问题,我尝试了以下操作:

  • 在有问题的服务器上安装 AWS CLI 并尝试列出对象。这有效。
  • 将我自己的开发环境(在客户网络之外)指向问题服务器的数据库(可通过 VPN 访问)以验证属性/配置设置。这有效。
  • 对 S3 资源的引用进行硬编码并重新部署,以验证问题不是应用程序初始化/无法解析配置。这仍然失败,但日志输出了正确的存储桶和密钥,因此配置/设置似乎不是问题。
  • 将显式日志语句放在失败方法的周围,以找出失败的确切行。这是对 AmazonS3 的 listObjects(string, string) 方法的调用。
  • 检查 Sophos McsAgent.log 和 McsClient.log,看是否有任何明显与我的应用程序相关的内容弹出。
  • 尝试在问题服务器上的应用程序代码库内运行单元测试,该测试还调用了 listObjects() 方法。这有效。

在实时/运行失败的情况下,不会收到 listObjects 方法抛出的异常。在我将重现此问题的浏览器超时设置为相当长(9000000 毫秒)后,它似乎只是无限期地执行

此时我不确定下一步的调试步骤是什么,但我相信证据有力地指向与 Tomcat 在其内部提出此请求有关的问题。

答案1

在与网络管理员通话并指导他们完成上述过程后,他们认为这与被阻止的流量或缓存的 DNS 记录有关。在他们监控防火墙日志的情况下,逐步完成重现过程,发现 DNS 中显然存在 Web 过滤。他们禁用了两条规则,然后,一切又恢复正常了。我无法理解为什么来自 Tomcat 的 listObjects() 会失败,而来自单元测试的 listObjects() 却成功了,但在我没有任何输入的情况下,当他们进行更改时,此功能“神奇地”开始再次工作。

相关内容