说实话,我的服务器管理能力很差,但我的老板让我帮忙。他的服务器带宽限制为 2GB/天,今天他收到公司的警告,说他超出了带宽限制,使用了……24GB。
由于他太远,这是不可能的,他问我是否可以找出问题所在。我不知道从哪里开始或做什么。
任何信息都会有帮助,我怎样才能找出问题所在。
机器运行的是 Ubuntu 12.04。最奇怪的是,根据从主机商收到的图表,只使用了传出传输。
编辑
感谢您的建议,我将运行 tcpdump 并尝试检查结果
答案1
答案2
我建议安装 ntop。
将其放在主机网关/路由器位置并观察一天/一周的流量。Ntop 提供了一个 Web UI,您可以在其中按 IP/端口/协议查看细分信息。
答案3
最好的工具可能是伊夫托普,并且可以通过 sudo apt-get install iftop 轻松获取。它将根据罪魁祸首 IP/主机名显示输出:
191Mb 381Mb 572Mb 763Mb 954Mb
└────────────┴──────────┴─────────────────────┴───────────┴──────────────────────
box4.local => box-2.local 91.0Mb 27.0Mb 15.1Mb
<= 1.59Mb 761kb 452kb
box4.local => box.local 560b 26.8kb 27.7kb
<= 880b 31.3kb 32.1kb
box4.local => userify.com 0b 11.4kb 8.01kb
<= 1.17kb 2.39kb 1.75kb
box4.local => b.resolvers.Level3.net 0b 58b 168b
<= 0b 83b 288b
box4.local => stackoverflow.com 0b 42b 21b
<= 0b 42b 21b
box4.local => 224.0.0.251 0b 0b 179b
<= 0b 0b 0b
224.0.0.251 => box-2.local 0b 0b 0b
<= 0b 0b 36b
224.0.0.251 => box.local 0b 0b 0b
<= 0b 0b 35b
─────────────────────────────────────────────────────────────────────────────────
TX: cum: 37.9MB peak: 91.0Mb rates: 91.0Mb 27.1Mb 15.2Mb
RX: 1.19MB 1.89Mb 1.59Mb 795kb 486kb
TOTAL: 39.1MB 92.6Mb 92.6Mb 27.9Mb 15.6Mb
不要忘记旧版 *nix 上的经典而强大的 sar 和 netstat 实用程序!
另一个很棒的工具是载入,一个用于实时监控带宽的绝佳工具,可以使用 sudo apt-get install nload 轻松安装在 Ubuntu 或 Debian 中。
Device eth0 [10.10.10.5] (1/2):
=====================================================================================
Incoming:
. ...|
# ####|
.. |#| ... #####. .. Curr: 2.07 MBit/s
###.### #### #######|. . ## | Avg: 1.41 MBit/s
########|#########################. ### Min: 1.12 kBit/s
........ ################################### .### Max: 4.49 MBit/s
.##########. |###################################|##### Ttl: 1.94 GByte
Outgoing:
########## ########### ###########################
########## ########### ###########################
##########. ########### .###########################
########### ########### #############################
########### ###########..#############################
############ ##########################################
############ ##########################################
############ ########################################## Curr: 63.88 MBit/s
############ ########################################## Avg: 32.04 MBit/s
############ ########################################## Min: 0.00 Bit/s
############ ########################################## Max: 93.23 MBit/s
############## ########################################## Ttl: 2.49 GByte
答案4
看一下tcpdump。它可以转储所有网络流量(不仅仅是名称所暗示的 tcp),然后您可以使用 Wireshark 等应用程序读取这些流量。在 Wireshark 中,可以非常轻松地过滤某些类型的数据,甚至可以绘制网络 I/O 图表。
另一个有用的工具可能是 netstat,它可以显示正在进行的网络连接列表。也许有些连接不应该存在。Tcpdump 更有用(捕获几分钟,然后检查是否已经可以看到源),但 netstat 可能会给你一个快速概览。
顺便说一句,读到这篇文章时,我首先想到的是您的服务器上有恶意软件,或者有人利用它进行放大攻击。但要检查这一点,您需要先运行 tcpdump。
编辑:请注意,tcpdump 可能需要以 root 身份运行,也许您需要使用sudo tcpdump
。
另一处编辑:由于我真的找不到一个好的网页来链接一般的放大攻击,这里有一个简短的版本:
DNS 等协议在 UDP 上运行。UDP 流量是无连接的,因此您可以非常轻松地伪造其他人的 IP 地址。由于 DNS 答案通常比查询大,因此可以将其用于 DoS 攻击。攻击者发送查询,请求 DNS 服务器对给定名称的所有记录,并告诉 DNS 服务器该请求来自 X。此 X 是攻击者想要进行 DoS 攻击的目标。然后 DNS 服务器友好地回复,将(较大的,例如 4kB)回复发送给 X。
这是放大效应,因为攻击者发送的数据比 X 实际接收的数据少。DNS 并不是唯一可能出现这种情况的协议。