CC攻击(Challenge Collapsar) 是一种常见的应用层DDoS攻击,攻击者通过模拟大量用户对目标网站发送合法的 HTTP 请求,占用服务器资源,导致服务器无法响应正常用户的请求。以下是详细介绍 CC 攻击的原理以及如何通过链接数和端口检查受攻击的网站。


1. 什么是 CC 攻击?

1.1 CC 攻击的原理

  • 目标:让服务器资源耗尽(如 CPU、内存、带宽等),无法处理正常用户的请求。
  • 攻击方式:
    • 攻击者通过代理 IP 或僵尸网络,模拟大量不同的客户端向目标网站发起 HTTP 请求。
    • 请求通常针对动态页面(如 PHP、ASP、JSP),因为这些页面需要服务器计算、查询数据库等,消耗更多资源。
  • 特点:
    • 请求是合法的 HTTP 请求,但短时间内数量巨大。
    • 通常会访问特定 URL(如登录页面、搜索接口等)。
    • 流量集中在 80 或 443 端口(HTTP/HTTPS)。

1.2 CC 攻击的危害

  • 服务器资源被大量占用,导致正常用户访问延迟甚至无法访问。
  • 可能引发服务宕机,特别是对并发处理能力较弱的服务器。
  • 给企业带来经济损失和品牌信誉下降。

2. 如何通过链接数和端口检查 CC 攻击的网站?

2.1 检查链接数和端口的工具

以下工具可以帮助你查看服务器的连接数和端口活动,从而判断是否遭受 CC 攻击:

  1. netstat:显示服务器的网络连接情况。
  2. ss:类似 netstat,但性能更高。
  3. iftop:实时监控网络流量。
  4. tcpdump:抓取网络数据包进行深入分析。

2.2 使用 netstat 检查链接数

(1) 查看所有连接

运行以下命令查看当前服务器的网络连接:

bash

netstat -anp | grep :80
  • 解释:
    • -a:显示所有连接(包括监听和非监听)。
    • -n:以数字形式显示地址和端口。
    • -p:显示进程信息。
    • grep :80:过滤出 80 端口(HTTP)的连接。
(2) 统计每个 IP 的连接数

通过以下命令统计每个 IP 的连接数量:

bash

netstat -an | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
  • 解释:

    • awk '{print $5}':提取目标 IP 地址。
    • cut -d: -f1:去除端口号,只显示 IP。
    • sort | uniq -c:统计每个 IP 的连接数。
    • sort -nr:按连接数从高到低排序。
  • 结果分析:

    • 如果单个 IP 的连接数异常高(如超过 50 或 100),可能是 CC 攻击。
    • 示例输出:

      bash

      150 192.168.1.100
      120 192.168.1.101
      110 10.0.0.1
      
      上述 IP 可能是攻击来源。
(3) 查看并发连接数

统计服务器的总连接数:

bash

netstat -an | grep :80 | wc -l
  • 如果连接数超过服务器的正常负载(如 500 或 1000),可能是 CC 攻击。

2.3 使用 ss 检查链接数

ss 是 netstat 的替代工具,速度更快,信息更详细。

(1) 查看 80 端口的连接

bash

ss -ant | grep :80
  • 解释:
    • -a:显示所有连接。
    • -n:以数字形式显示地址和端口。
    • -t:仅显示 TCP 连接。
(2) 统计每个 IP 的连接数

bash

ss -ant | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
  • 输出结果与 netstat 类似,显示每个 IP 的连接数。

2.4 使用 iftop 检查实时流量

iftop 是一个实时流量监控工具,可用于检查流量的来源 IP。

(1) 安装 iftop

在 CentOS 或 Ubuntu 上安装:

bash

yum install iftop -y   # CentOS
apt install iftop -y   # Ubuntu
(2) 运行 iftop

运行以下命令查看实时流量:

bash

iftop -i eth0
  • 解释:
    • -i eth0:指定网络接口(替换为你的服务器网卡名称,如 ens33)。
  • 结果分析:
    • 上下箭头分别表示入站和出站流量。
    • 如果某些 IP 的流量异常高,可能是攻击来源。

2.5 使用 tcpdump 抓包分析

(1) 抓取 80 端口的流量

bash

tcpdump -i eth0 port 80 -w cc_attack.pcap
  • 解释:
    • -i eth0:监听网络接口。
    • port 80:仅抓取 HTTP 流量。
    • -w cc_attack.pcap:保存流量到文件。
(2) 分析数据包

使用 Wireshark 或其他工具打开 cc_attack.pcap,检查以下内容:

  • 是否有大量重复的请求。
  • 是否有某些 IP 的请求数量异常高。

3. 如何防御 CC 攻击?

3.1 基于 IP 的限制

  1. 使用 iptables 限制连接数
  • 限制单个 IP 的最大连接数:

    bash

    iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
    
  • 限制每秒的新连接数:

    bash

    iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/second --limit-burst 30 -j ACCEPT
    
  1. 使用 Fail2Ban 自动封禁恶意 IP
  • 安装 Fail2Ban:

    bash

    apt install fail2ban -y   # Ubuntu
    yum install fail2ban -y   # CentOS
    
  • 配置规则:
    编辑 /etc/fail2ban/jail.local:

    ini

    [nginx-cc]
    enabled = true
    port = http,https
    logpath = /var/log/nginx/access.log
    maxretry = 20
    bantime = 600
    

3.2 配置 Web 服务器限制

  1. Nginx 限速
  • 编辑 Nginx 配置文件:

    nginx

    http {
        limit_req_zone $binary_remote_addr zone=cc_zone:10m rate=10r/s;
        server {
            location / {
                limit_req zone=cc_zone burst=20 nodelay;
            }
        }
    }
    
  1. Apache 限速
  • 启用 mod_evasive 模块:

    bash

    apt install libapache2-mod-evasive   # Ubuntu
    yum install mod_evasive              # CentOS
    
  • 配置 /etc/apache2/mods-enabled/evasive.conf:

    ini

    DOSHashTableSize 3097
    DOSPageCount 20
    DOSSiteCount 100
    DOSBlockingPeriod 10
    

3.3 使用 CDN 和 WAF

  1. CDN(如 Cloudflare):
    • 隐藏真实服务器 IP。
    • 过滤恶意流量。
  2. Web 应用防火墙(WAF):
    • 部署如阿里云 WAF、腾讯云 WAF,检测并阻止恶意请求。

4. 总结

  1. CC 攻击原理:通过大量模拟的合法请求耗尽服务器资源。
  2. 检测方法:
    • 使用 netstat 或 ss 查看端口连接数。
    • 使用 iftop 或 tcpdump 检测异常流量。
  3. 防御措施:
    • 配置防火墙限制连接数。
    • 使用 Web 服务器限速策略。
    • 部署 CDN 和 WAF 进行流量清洗。

通过以上方法,可以有效检测和防御 CC 攻击,保护网站的稳定运行。

更多推荐