Linux主机简单判断被CC攻击的网站命令-比较直接有效

989a0a74dc097c9fc87c1c9f870af148

在 Linux 主机上快速判断某个网站是否受到 CC(Challenge Collapsar)攻击,可以通过以下方法和命令直接分析流量和连接情况。CC 攻击通常表现为大量短时间内的 HTTP 请求,主要消耗服务器资源。


1. 常见 CC 攻击特征

  • 大量来自单一或多个 IP 地址的 HTTP 请求。
  • 同一页面被频繁请求(例如首页或特定动态页面)。
  • 请求状态码异常(如大量 200404)。
  • 同时存在大量的短时间连接。

2. 快速判断是否被 CC 攻击

以下是一些直接有效的命令,结合实际需求使用。


2.1 查看实时连接数

使用 netstatss 查看当前的网络连接情况。

方法 1:检查 HTTP 服务连接数

bash
netstat -anp | grep ':80 ' | wc -l
  • :80:针对 HTTP 服务(将其改为 HTTPS 端口 443 可检查 HTTPS 流量)。
  • wc -l:统计当前连接总数。

如果连接数异常高,可能是 CC 攻击的征兆。

方法 2:使用 ss 命令

bash
ss -ant | grep ':80' | wc -l
  • netstat 输出更快,查看连接数。

方法 3:统计连接状态

bash
netstat -n | awk '/:80/{print $6}' | sort | uniq -c | sort -nr
  • 输出包含连接状态,如:
    basic
    500 ESTABLISHED
    300 TIME_WAIT
    100 SYN_RECV
  • 重点
    • ESTABLISHED:已建立的正常连接。
    • SYN_RECV:半连接状态,可能是攻击迹象。
    • 如果 SYN_RECV 数量较多,通常是 SYN Flood 攻击。

2.2 查看访问 IP 分布

统计访问某个端口的来源 IP,可以快速识别是否有单一 IP 或少量 IP 发起了大量请求。

方法 1:统计所有连接的来源 IP

bash
netstat -anp | grep ':80' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
  • 输出示例:
    basic
    200 192.168.1.1
    150 192.168.1.2
    100 192.168.1.3
  • 意义:某些 IP 的连接数异常高,可能是攻击源。

方法 2:查看 HTTPS 流量

bash
netstat -anp | grep ':443' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

2.3 检查 Nginx/Apache 的访问日志

通过分析 Web 服务器的访问日志,可以直接判断是否遭受 CC 攻击。

方法 1:Nginx 日志

假设 Nginx 的访问日志在 /var/log/nginx/access.log

  1. 统计访问量最高的 IP

    bash
    awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
    • 输出示例:
      basic
      5000 192.168.1.1
      3000 192.168.1.2
      2000 192.168.1.3
    • 意义:访问量异常高的 IP 可能为攻击源。
  2. 统计访问最多的 URL

    bash
    awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
    • 输出示例:
      basic
      4000 /index.php
      3000 /login
      2000 /api/data
    • 意义:某些页面被频繁访问,可能是攻击目标。
  3. 综合统计 IP 和访问页面

    bash
    awk '{print $1, $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
    • 输出示例:
      basic
      300 192.168.1.1 /index.php
      200 192.168.1.2 /login

方法 2:Apache 日志

假设 Apache 的访问日志在 /var/log/httpd/access_log

  1. 统计访问量最高的 IP

    bash
    awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head
  2. 统计访问最多的 URL

    bash
    awk '{print $7}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head

2.4 使用 iftop 查看实时流量

iftop 是一个实时流量监控工具,可以快速检查网络连接。

  1. 安装 iftop(如果未安装):

    bash
    sudo apt install iftop      # Ubuntu/Debian
    sudo yum install iftop      # CentOS/RHEL
  2. 运行 iftop

    bash
    iftop -i eth0
    • eth0:替换为实际的网络接口名称(可通过 ifconfigip a 查看)。
    • 可以观察哪些 IP 地址占用了大量流量。

2.5 使用 tcpdump 抓包分析

tcpdump 是一个强大的网络抓包工具,可以捕获 HTTP 请求数据。

抓取 HTTP 流量

bash
tcpdump -i eth0 tcp port 80 -nn -A
  • -i eth0:指定网络接口。
  • tcp port 80:抓取 HTTP 流量。
  • -A:以 ASCII 格式显示数据包内容。

分析流量来源

  1. 仅统计来源 IP:
    bash
    tcpdump -i eth0 tcp port 80 -nn | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -nr | head

3. 快速缓解 CC 攻击

3.1 使用 iptables 阻止恶意 IP

  1. 封禁单个 IP

    bash
    iptables -A INPUT -s 192.168.1.1 -j DROP
  2. 限制单个 IP 的最大连接数

    bash
    iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
    • 限制每个 IP 对 80 端口的并发连接数不超过 50。
  3. 删除规则

    bash
    iptables -D INPUT -s 192.168.1.1 -j DROP

3.2 配置 Nginx 防护

在 Nginx 配置文件中限制单个 IP 的请求速率。

  1. 编辑配置文件

    bash
    vim /etc/nginx/nginx.conf
  2. 添加限制规则

    nginx
    http {
        limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
        server {
            location / {
                limit_req zone=one burst=20 nodelay;
            }
        }
    }
  3. 重新加载 Nginx

    bash
    sudo nginx -s reload

4. 总结

命令/工具 功能
netstat 查看连接数、连接状态、IP 分布
ss 快速查看连接状态
awk + 日志分析 分析访问 IP 和 URL,判断攻击来源
iftop 实时流量监控,查看流量占用 IP
tcpdump 抓取 HTTP 流量,分析请求数据
iptables 阻止恶意 IP 或限制连接数
Nginx 限速 防止单个 IP 频繁请求,缓解 CC 攻击

通过以上方法,可以快速判断是否受到 CC 攻击,并采取有效的临时防护措施以保障服务器的正常运行。如果攻击量较大,建议启用 CDNWAF(Web 应用防火墙) 来进一步防护。

posted @ 2025-08-16 17:23  网硕互联  阅读(13)  评论(0)    收藏  举报