0

在查看我们的 AWS/EC2 实例的网络输入/输出指标时,我想找到高网络流量发生的来源。

我已经安装了Log Parser Studio并运行了一些查询 - 主要是寻找需要一段时间的响应:

SELECT TOP 10000 * FROM '[LOGFILEPATH]' WHERE time-taken > 1000

我还瞄准了网络输入/输出峰值发生时的时间跨度:

SELECT TOP 20000 * FROM '[LOGFILEPATH]' 
WHERE [date] BETWEEN TIMESTAMP('2013-10-20 02:44:00', 'yyyy-MM-dd hh:mm:ss') 
AND TIMESTAMP('2013-10-20 02:46:00', 'yyyy-MM-dd hh:mm:ss')

一个问题是日志文件是 2-7 gigs(针对每个查询的单个文件)。在尝试Log Parser Lizard时,它因大文件 (boo) 上的内存不足异常而崩溃。

我应该遵循哪些其他查询和方法来识别高网络流量的来源,这有望帮助我弄清楚如何堵住漏洞?

谢谢。

4

1 回答 1

0

QUANTIZE() 函数可能对您特别有用。这使您可以汇总一段时间内的统计数据,从而使您可以查看给定时间段内的峰值。这是我使用的一个查询,可以让我看到我们何时被扫描:

SELECT QUANTIZE(TO_LOCALTIME(TO_TIMESTAMP(date, time)), 900) AS LocalTime,
    COUNT(*) AS Hits,
    SUM(sc-bytes) AS TotalBytesSent,
    DIV(MUL(1.0, SUM(time-taken)), Hits) AS LoadTime,
    SQRROOT(SUB(DIV(MUL(1.0, SUM(SQR(time-taken))), Hits), SQR(LoadTime))) AS StandardDeviation
INTO '[OUTFILEPATH]'
FROM '[LOGFILEPATH]'
WHERE '[WHERECLAUSE]'
GROUP BY LocalTime 
ORDER BY LocalTime

我通常将其输出到 .csv 文件,然后在 Excel 中绘制图表,以直观地查看一段时间超出正常范围的位置。这个特定的查询根据传递给 QUANTIZE 的 900 将事情分解为 15 分钟的段。TotalBytesSent、LoadTime 和 StandardDeviation 允许我查看下载内容或响应时间中的其他异常。

要查看的另一件事是特定客户对您的网站提出的请求数量。以下查询可以帮助识别进入的扫描或 DoS 活动:

SELECT
    DISTINCT c-ip as ClientIP,
    COUNT(*) as Hits,
    PROPCOUNT(*) as Percentage
INTO '[OUTFILEPATH]'
FROM '[LOGFILEPATH]'
WHERE '[WHERECLAUSE]'
GROUP BY ClientIP
HAVING (Hits > 50)
ORDER BY Percentage DESC

调整 HAVING 子句将设置 IP 在出现之前需要发出的最小请求数。根据活动和 WHERE 子句,50 可能太低。PROPCOUNT() 函数给出特定字段总值的百分比。在这种情况下,它给出了对站点的所有请求的特定 IP 的百分比。通常,这也会显示搜索引擎的 IP 地址,但这些很容易清除。

我希望这能给你一些关于你能做什么的想法。

于 2013-11-13T04:36:30.423 回答