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

在 Linux 主机上快速判断某个网站是否受到 CC(Challenge Collapsar)攻击,可以通过以下方法和命令直接分析流量和连接情况。CC 攻击通常表现为大量短时间内的 HTTP 请求,主要消耗服务器资源。
1. 常见 CC 攻击特征
- 大量来自单一或多个 IP 地址的 HTTP 请求。
- 同一页面被频繁请求(例如首页或特定动态页面)。
- 请求状态码异常(如大量
200或404)。 - 同时存在大量的短时间连接。
2. 快速判断是否被 CC 攻击
以下是一些直接有效的命令,结合实际需求使用。
2.1 查看实时连接数
使用 netstat 或 ss 查看当前的网络连接情况。
方法 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。
-
统计访问量最高的 IP:
bashawk '{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 可能为攻击源。
- 输出示例:
-
统计访问最多的 URL:
bashawk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head- 输出示例:
basic
4000 /index.php 3000 /login 2000 /api/data - 意义:某些页面被频繁访问,可能是攻击目标。
- 输出示例:
-
综合统计 IP 和访问页面:
bashawk '{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。
-
统计访问量最高的 IP:
bashawk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head -
统计访问最多的 URL:
bashawk '{print $7}' /var/log/httpd/access_log | sort | uniq -c | sort -nr | head
2.4 使用 iftop 查看实时流量
iftop 是一个实时流量监控工具,可以快速检查网络连接。
-
安装 iftop(如果未安装):
bashsudo apt install iftop # Ubuntu/Debian sudo yum install iftop # CentOS/RHEL -
运行 iftop:
bashiftop -i eth0eth0:替换为实际的网络接口名称(可通过ifconfig或ip 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 格式显示数据包内容。
分析流量来源
- 仅统计来源 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
-
封禁单个 IP:
bashiptables -A INPUT -s 192.168.1.1 -j DROP -
限制单个 IP 的最大连接数:
bashiptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP- 限制每个 IP 对 80 端口的并发连接数不超过 50。
-
删除规则:
bashiptables -D INPUT -s 192.168.1.1 -j DROP
3.2 配置 Nginx 防护
在 Nginx 配置文件中限制单个 IP 的请求速率。
-
编辑配置文件:
bashvim /etc/nginx/nginx.conf -
添加限制规则:
nginxhttp { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location / { limit_req zone=one burst=20 nodelay; } } } -
重新加载 Nginx:
bashsudo nginx -s reload
4. 总结
| 命令/工具 | 功能 |
|---|---|
netstat |
查看连接数、连接状态、IP 分布 |
ss |
快速查看连接状态 |
awk + 日志分析 |
分析访问 IP 和 URL,判断攻击来源 |
iftop |
实时流量监控,查看流量占用 IP |
tcpdump |
抓取 HTTP 流量,分析请求数据 |
iptables |
阻止恶意 IP 或限制连接数 |
| Nginx 限速 | 防止单个 IP 频繁请求,缓解 CC 攻击 |
通过以上方法,可以快速判断是否受到 CC 攻击,并采取有效的临时防护措施以保障服务器的正常运行。如果攻击量较大,建议启用 CDN 或 WAF(Web 应用防火墙) 来进一步防护。

浙公网安备 33010602011771号