我应该使用哪类软件来拦截 HTTP 请求并执行操作

我应该使用哪类软件来拦截 HTTP 请求并执行操作

我们继承了一个旧的 Web 应用程序,需要扩展一些日志记录功能以实现合规性。不幸的是,我们无法更改该应用程序。该应用程序接收 XML POST 请求。我们需要捕获几个特定的​​ XML 值并将它们记录在单独的文件中。因此,这涉及 XML 解析和一些自定义代码。我们正在考虑在服务器前面放置一种代理。是否有代理允许自定义请求主体处理而无需低级编程?或者 IDS 更适合此目的?

答案1

您尚未指定登录后要执行什么操作,因此现在我将跳过该操作。

首先,我建议将 Snort 设置为记录到数据库(最有可能是 MYSQL)。事实上,我建议将二进制日志发送到 Barnyard,然后根据您对此应用程序的负载导出到数据库。

无论如何,您更感兴趣的是如何实际记录数据。幸运的是,Snort 有各种方法来匹配数据包。我建议编写一条规则以使用 HTTP 预处理器。您可以使用内容匹配来查找服务标识符。

出于稍后将解释的原因,我们希望使用始终出现在每个数据包的相同一般区域中的特定信息。这是因为我们可以通过告诉 Snort 在数据包内部查找匹配项的位置来优化规则。您可以使用 uricontent 来匹配 URI,但我们可以做得更好,并使用深度和偏移量修饰符来精确指定数据包中数据的位置。

深度 mod 本身会设置从数据包开头开始的搜索长度,但当您使用偏移 mod 时,它将设置深度的起点。例如,如果我说偏移量 10 深度 50,那么 Snort 将仅检查有效负载的 10-50 字节。内容匹配仅在有效负载内完成,您必须使用其他处理器来检查标头。

这应该足以获取您需要的数据,但如果您要记录敏感数据,您还必须记住 Snort 和 DB 实例的安全性。

关于此内容的一个很好的资源是Snort IDS 工具包由 Syngress 出版。

相关内容