先谈谈网络攻击

前言

CC和DDoS都是我们最长听到的黑客攻击手段,那么它们有什么区别呢?

CC攻击会造成什么后果呢?

也可通过这篇文章了解更多的CC攻击知识:什么是CC攻击?怎么防御CC攻击?谁的威力比较大?

在谈论网络攻击时,我们会经常将CC和DDoS区别开来说,它们有很多相似之处,这是因为CC只是DDoS攻击中的一种类型。

什么是DDoS攻击?

DDoS全称为分布式拒绝服务(DDoS:Distributed Denial of Service)。

指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。

DDoS是一类攻击的总称,它包含SYN Flood、UDP Flood、ICMP Flood、UDP DNS Query Flood等多种攻击类型,也包含CC攻击。它们都能使目标网站或APP拒绝服务。

什么是CC攻击?

CC(ChallengeCollapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。

CC根据其工具命名,攻击者使用代理机制,利用众多广泛可用的免费代理服务器发动DDoS攻击。

许多免费代理服务器支持匿名模式,这使追踪变得非常困难。

CC攻击的特点

CC攻击有如下特点:

1、IP真实性:CC攻击所使用的IP均是真实的,且来自全国乃至全世界各地。

2、数据包真实性:所发送的数据包,均真实有效。

3、请求有效:CC攻击发送的请求,都是真实有效的,除非受攻击方根据攻击特征加以限制,否则无法被拒绝。

基于以上三点,不难发现,CC攻击会极力模仿用户访问目标网站的行为,受害一方很难辨别CC攻击与正常用户的区别,因此极难防范。

可以这么理解,CC攻击发动者就像是一个国王,他在极短地时间内,命令所有的子民,访问某一个网站,这些子民都是正常的用户,无法与其他用户区分开。因为网站在极短地时间内,接收到大量的请求,导致服务器崩溃,其他正常访问被终止,最终拒绝服务。

DDOS攻击的特点

而其他DDoS则没有CC攻击这些特点。比如SYN Flood,它是通过向网络服务所在端口发送大量伪造源地址的攻击报文,使目标拒绝服务。

再比如UDP DNS Query Flood,它会通过向被攻击方的服务器,发送大量的域名解析请求,致使目标拒绝服务。

总之,CC攻击与其他DDoS最显著的不同,是CC攻击的行为,很像正常用户在访问网站,而其他DDoS攻击是利用漏洞或者协议缺陷发动的攻击。因此,CC攻击很难预防。

CC攻击会造成什么后果?

CC攻击造成的后果,与其他DDoS攻击相似,都能导致受害目标拒绝服务。但是其造成的其他后果,也是其他DDoS无法比拟的。

1、影响企业业务

CC攻击会产生大量的日志,会对整个网站的运营和数据分析产生影响。CC攻击后网站数据统计完全错误,且后端处理数据的负担也会增加。数据统计出现问题,无法进行分析,企业的正常业务会受到影响。

2、用户流失率增加

CC攻击的行为,与正常用户行为极为相像,一些企业为了节省成本,采用不当的防御手段,误伤正常用户,导致用户流失率增加。值得一提的是,这也是攻击方希望产生的结果之一。

3、被搜索引擎K站

如果网站在很长一段时间内,持续遭受CC攻击又无法解决。搜索引擎蜘蛛无法正常抓取网站内容,可能被搜索引擎K掉,关键词排名消失,网站流量骤降。

CC攻击与DDoS攻击区别

1、DDoS攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动攻击,从而成倍地提高拒绝服务攻击的威力。DDoS的攻击方式有很多种,最基本的DDoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。

2、CC攻击模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面)。这一点用一个一般的性能测试软件就可以做到大量模拟用户并发。CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。

3、攻击对象不同

DDoS 是针对 IP 的攻击。CC 攻击针对的是网页。

DDoS攻击和cc攻击区别主要是针对对象的不同。是主要针对IP的攻击,而CC攻击的主要是网页。

CC攻击相对来说,攻击的危害不是毁灭性的,但是持续时间长;

而DDoS攻击就是流量攻击,这种攻击的危害性较大,通过向目标服务器发送大量数据包,耗尽其带宽,更难防御。

4、危害不同

DDoS 攻击危害性较大,更难防御。CC 攻击的危害不是毁灭性的,但是持续时间长。

5、门槛不同

DDoS 攻击门槛高,攻击者一般需要在攻击前搜集被攻击目标主机数目、地址情况、目标主机的配置性能等资料,盲目攻击可能导致效果不佳。CC 攻击门槛低,利用更换 IP 代理工具即可实施攻击,且目标比较明确,黑客水平比较低的用户也能进行。

6、流量大小不同

DDoS 攻击比 CC 攻击所需要流量更大,且 CC 攻击有时不需要很大的流量。

查看服务器带宽网络实时使用情况

最近,一位群友的网站前台可以进去,后台死活进不去。

服务器CPU 、内存、磁盘都是正常的,但就是进不了网站后台,请求一直是报504、524超时错误。

最终才发现是服务器被CC攻击了,大量的请求占用了服务器的带宽。

之所以最终能发现这个问题,也是我们今天要讲的:如何查看服务器带宽网络实时使用情况?

用网络流量实时监控工具 nload

nload 是个很好用的一个工具,功能也很强。只是相对单一,只能查看总的流量,不能像 iptraf 那样,可针对 IP, 协议等可以实时地监控网卡的流量。

nload 分 Incoming,Outgoing 两部分,也就是流入与流出的流量。同时统计当前,平均,最小,最大,总流量的值,使人看了一目了然,如下图:

nload 是一个可实时监视网络流量和带宽使用情况的工具。

它可以帮助你使用图表监输入和输出的流量,并提供其他信息,例如传输的数据总量和最小/最大网络使用率。

nload官方网站:http://www.roland-riegel.de/nload/

下载、安装 nload

nload工具并不是centos自带的,需要我们手动安装下载。

直接yum安装查不到安装包的。

1、通过软件管理工具安装:先安装epel软件库才能安装nload工具

1
2
yum install -y epel-release  # 先安装epel软件库
yum install -y nload # 再安装nload

2、通过源代码编译安装:

1
2
3
4
5
6
7
8
9
10
# 编译前准备
yum install -y gcc gcc-c++ make ncurses-devel
# 下载安装包
wget http://www.roland-riegel.de/nload/nload-0.7.4.tar.gz
# 解压安装包
tar -xzf nload-0.7.4.tar.gz
cd nload-0.7.4
./configure
# 编译并安装
make && make install

nload 用法参数说明

命令用法:

nload [选项] [devices驱动]

nload --help|-h

常用选项表(只列举了部分):

选项 描述
-a 全部数据的刷新时间周期,单位是秒,默认是300s
-i 进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s
-m 不显示流量图,只显示统计数据
-o 出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s
-t 显示数据的刷新时间间隔,单位是毫秒,默认500ms
-u 设置右边Curr、Avg、Min、Max的数据单位,默认是h自动变的.注意大小写单位不同!

nload 使用

下面就简单的举一些常用的示例。

注意:一般对于服务器来说,eth0是指外网,eth1是指内网,lo代表127.0.0.1,即localhost。

1、nload界面

1
[root@localhost /]# nload

网卡驱动:eth0 实时监控带宽流量

nload默认会分页展示各个网卡的实时流量信息。

我们可以通过按键盘上的 ← → 或者 Enter/Tab 键在网卡之间切换。

网卡驱动:eth1 实时监控带宽流量

网卡驱动:lo 本地127.0.0.1实时监控带宽流量

nload 默认分为上下两块:

  • 上半部分:Incoming,也就是进入网卡的流量
  • 下半部分:Outgoing,也就是从这块网卡出去的流量

每一部分都有下面这几个详情:

  • Curr:当前流量
  • Avg:平均流量
  • Min:最小流量
  • Max:最大流量
  • Ttl:总和流量

2、nload默认的是eth0网卡,如果你想监测eth1网卡的流量,可以使用下面的命令:

1
[root@localhost /]# nload eth1

3、nload -u 参数详解

注:小写代表bit,大写代表byte

Bit(比特)是存储单元;Byte(字节)是计量单位,查看网络时常用Byte

1Byte=8Bit

比如:网速计算

我们常说的家庭网速为10M,100M,其值为带宽,转换为Byte为

下载速度从理论上来说,应该是带宽的八分之一

10M=1280kb/s 100M=12800kb/s=12.5Mb/s

1
[root@localhost /]# nload -u h

4、nload -m 参数详解

不显示流量图:

1
[root@localhost /]# nload -m

不显示流量图,以Byte为单位查看eth0网卡流量情况:

1
[root@localhost /]# nload -m -H eth0

5、nload -t 显示数据的刷新时间间隔,单位是毫秒,设置为1000ms

1
[root@localhost /]# nload -t 1000

6、nload -a 全部数据的刷新时间周期,单位是秒,默认是300s,这里设置为100s

1
[root@localhost /]# nload -a 100

用网络流量实时详情监控工具 iftop (推荐)

iftop 是实时流量监控工具,可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。

说得再通俗一点,iftop 可以监控每一个访问你网站IP的流量。

我也推荐大家用此工具。

介绍

iftop 是 Linux 系统一个免费的网卡实时流量监控工具,类似于 top 命令。

iftop 可以监控指定网卡的实时流量、端口连接信息、反向解析 IP 等,还可以精确显示本机网络流量及网络内各主机和本机相互通信的流量集合,非常适合于监控代理服务器或路由器的网络流量。

同时,iftop 对检测流量异常的主机非常有效,通过 iftop 的输出可以迅速定位主机流量异常的根源,这对于网络故障排查、网络安全检测是十分有用的。缺点就是无报表功能,且必须以 root 身份才能运行。

iftop官方网站:http://www.ex-parrot.com/~pdw/iftop/

下载、安装 iftop

1、通过软件管理工具安装

1
2
3
4
5
# CentOS
$ sudo yum install iftop -y

# Ubuntu
$ sudo apt install iftop -y

2、通过源代码编译安装

1
2
3
4
5
6
7
8
9
# 安装比较软件包
$ sudo yum install libpcap libpcap-devel ncurses ncurses-devel flex byacc -y

# 下载软件包
$ wget "http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz"
$ tar zxvf iftop-0.17.tar.gz
$ cd iftop-0.17
$ ./configure
$ make && make install

iftop 用法参数说明

命令用法:

iftop -h | [-npblNBP] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]

选项参数:

-h 显示此帮助消息

-n 不进行主机名查找

-N 不要将端口号转换为服务

-p 以混杂模式运行(显示同一网段上其他主机之间的流量)

-b 不显示流量条形图

-B 显示带宽(字节)

-a 显示数据包中的带宽

-i interface 监听命名接口

-f filter code 使用筛选代码选择要计数的数据包(默认值:无,但只计算IP数据包)

-F net/mask 显示IPv4网络的流量进出

-G net6/mask6 显示进出IPv6网络的流量

-l 显示和计数链路本地IPv6流量(默认值:关闭)

-P 显示端口和主机

-m limit 设置带宽比例的上限

-c config file 指定替代配置文件

-t 使用没有ncurses的文本界面

排序顺序:

-o 2s 按第一列排序(2秒平均流量)

-o 10s 按第二列排序(平均10s流量)[默认值]

-o 40s 按第三列排序(平均40秒流量)

-o source 按源地址排序

-o destination 按目的地地址排序

以下选项仅与-t组合使用

-s num 在数秒内打印一个文本输出,然后退出

-L num 要打印的行数

iftop 界面说明

通过命令,直接进入界面,如下:

1
[root@localhost /]# iftop

=>:代表发送数据

<=:代表接收数据

TX:发送流量

RX:接收流量

TOTAL:总流量

Cum:运行iftop到目前时间的总流量

peak:流量峰值

rates:分别表示过去 2s 10s 40s 的平均流量

进入 iftop 界面后的操作

一般参数

1
2
3
4
5
6
7
8
9
10
P      切换暂停/继续显示
h 在交互界面/状态输出界面之间切换
b 切换是否显示平均流量图形条
B 切换显示2s 10s和40s内的平均流量
T 切换是否显示每个连接的总流量
j/k 向上或向下滚动屏幕显示当前的连接信息
f 编辑筛选码
l 打开iftop输出过滤功能 ,如输入要显示的IP按回车键后屏幕就只显示与这个IP相关的流量信息
L 切换显示流量刻度范围,刻度不同,流量图形条也会不同
q 退出iftop

主机参数

1
2
3
4
n      使iftop输出结果以IP或主机名的方式显示
s 切换是否显示源主机信息
d 切换是否显示远端目标主机信息
t 切换输出模式,一行或多行

端口显示参数

1
2
3
4
N      切换显示端口号/端口号对应服务名称
S 切换是否显示本地源主机的端口信息
D 切换是否显示远端目标主机的端口信息
p 切换是否显示端口信息

输出排序参数

1
2
3
4
1/2/3  通过第一列/第二列/第三列排序
< 根据左边的本地主机名或IP地址进行排序
> 根据远端目标主机的主机名或IP地址进行排序
o 切换是否固定显示当前的连接

iftop 使用示例

1、显示网卡eth0的信息,主机通过ip显示

1
iftop -i eth0 -n

2、显示端口号(添加-P参数,进入界面可通过p参数关闭)

1
iftop -i eth0 -n -P

3、显示将输出以byte为单位显示网卡流量,默认是bit

1
iftop -i eth0 -n -B

4、显示流量进度条

1
iftop -i eth0 -n (进入界面后按下L)

5、显示每个连接的总流量

1
iftop -i eth0 -n (进入界面后按下T)

6、显示指定ip 172.17.1.158的流量

1
iftop -i eth0 -n (进入界面后按下l,输入172.17.1.158回车)

实战用 iftop 工具:找出最费流量的ip和端口号

1、进入界面

1
iftop -i eth0 -nNB -m 10M

-i 指定网卡

-n 代表主机通过ip显示不走DNS

-N 只显示连接端口号,不显示端口对应的服务名称(不加会显示如ssh这样的服务名称,不便于排查)

-B 指定显示单位为Kb,默认是bit,太小!

-m 设置输出界面中最上面的流量刻度最大值,流量刻度分5个大段显示

进入后界面如下:

2、按下L显示流量刻度

L参数直接显示进度条,方便人类阅读,别说你能直接通过数字感知,小心被砍死

3、按下T显示总量

总得有个总数统计,看着方便!

4、按下3,根据最近40s统计排序

用平均值来统计最权威点

5、按下t,发送和接受合成一行

显示两行没什么意思,一行就够了!

6、多按几次B,查看最近2s、10s、40s的统计

没错,图中的172.17.1.158就是我们找到的流量用得最多的IP

7、筛选指定IP 172.17.1.158

按下l,输入172.17.1.158,出现如下:

回车,生效:

这下就只看到这个ip的流量监控了

8、找到这个ip哪个端口流量用得最多?按下p,根据端口号显示。