服务器怎么查看攻击流量?

一、 快速排查:使用基本系统命令

当服务器出现卡顿、服务不可用等异常情况时,可以首先使用以下命令进行快速检查。

1. 查看实时网络流量iftop /nload

这些工具可以直观地看到哪些IP地址在与您的服务器通信,以及实时的流量大小。

安装 iftop (CentOS/RHEL):

    yum install epel-release -y
    yum install iftop -y

使用 iftop:

    iftop -i eth0  # 将 eth0 替换为您的网卡名称(可以使用ip addr 查看)

看什么观察顶部显示的实时流量速率(RX: 接收,TX: 发送),如果接收流量(RX)持续爆满,而您并没有提供大流量服务,很可能正在被流量攻击(如DDoS),底部会列出与您通信的IP和流量大小,异常高的IP可能就是攻击源。

安装 nload (更简单,只看总量):

    yum install nload -y

使用 nload:

    nload eth0

看什么它会分屏显示进出流量,直观看到流量是否跑满了带宽。

2. 查看网络连接状态netstat /ss

攻击(如CC攻击、SYN Flood)会建立大量异常连接。

查看所有连接数:

    netstat -an | wc -l
    ss -s  # 这个命令直接显示总结信息,更清晰

看什么如果连接数异常高(比平时高出几个数量级),需要警惕。

查看特定状态的连接(非常重要):

    # 查看 SYN_RECV 状态的连接(半连接,可能是SYN Flood攻击)
    netstat -n | grep :80 | grep SYN_RECV | wc -l
    ss -t state syn-recv sport = :80 | wc -l
    # 查看 ESTABLISHED 状态的连接(已建立连接,可能是CC攻击)
    netstat -n | grep :80 | grep ESTABLISHED | wc -l
    ss -t state established sport = :80 | wc -l

看什么大量SYN_RECV状态连接是SYN Flood攻击的典型特征,大量ESTABLISHED连接指向同一个服务(如Web服务),则可能是CC攻击。

统计IP连接数,找出可疑IP:

    netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10

看什么这个命令会列出与您服务器建立连接最多的前10个IP,如果发现某个IP在短时间内建立了成百上千个连接,它很可能是攻击者。

二、 深入分析:使用专业工具

快速排查发现异常后,需要用更专业的工具来捕获和分析数据包。

抓包分析 - `tcpdump`

这是最强大的网络分析工具,可以记录所有经过网卡的数据包。

基本抓包命令:

    tcpdump -i eth0 -w capture.pcap

-i eth0: 指定网卡。

-w capture.pcap: 将数据包保存到文件,方便后续分析。

* 抓包一段时间后按Ctrl+C 停止。

带过滤的抓包(更高效):

    # 只抓取80端口的流量
    tcpdump -i eth0 -w capture.pcap port 80
    # 只抓取与某个可疑IP的通信
    tcpdump -i eth0 -w capture.pcap host 123.123.123.123

如何分析pcap文件

* 将capture.pcap 文件下载到本地电脑。

* 使用Wireshark(图形化工具,功能强大)打开进行分析。

在Wireshark中,你可以

统计 -> 对话查看所有通信IP和流量排名。

统计 -> HTTP查看HTTP请求的路径、User-Agent等,判断是否为恶意请求。

使用过滤器例如http.request.uri contains “/wp-admin” 来查看是否有人爆破WordPress后台。

2. 系统日志分析/var/log/

系统的安全日志和服务的访问日志是重要线索。

Web服务日志 (Nginx/Apache):

Nginx 日志默认位置/var/log/nginx/access.log

Apache 日志默认位置/var/log/httpd/access_log

分析方法:

        # 查看最近1000行内访问最频繁的IP
        tail -1000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
        # 查看访问最频繁的URL
        tail -1000 /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -10
        # 实时查看日志尾部,观察请求频率
        tail -f /var/log/nginx/access.log

看什么单一IP在短时间内发起大量请求;请求的URL是登录页面、API接口等敏感路径;HTTP状态码大量是404(扫描)或499/500(CC攻击可能导致)。

系统安全日志:

位置/var/log/secure (CentOS/RHEL) 或/var/log/auth.log (Ubuntu/Debian)

看什么大量失败的SSH登录尝试,这是典型的暴力破解。

三、 综合防护与自动化监控

单纯的查看是被动的,主动防护更重要。

使用防火墙实时拦截

发现可疑IP后,立即使用防火墙封禁。

使用 iptables:

    # 封禁单个IP
    iptables -I INPUT -s 123.123.123.123 -j DROP
    # 封禁整个IP段(谨慎使用)
    iptables -I INPUT -s 123.123.0.0/16 -j DROP
    # 保存规则(CentOS 6/7)
    service iptables save

使用 firewalld (CentOS 7/8+):

    firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='123.123.123.123' reject"
    firewall-cmd --reload

使用 Fail2ban (自动化封禁):

Fail2ban可以自动扫描日志(如/var/log/secure/var/log/nginx/access.log),当发现某个IP在短时间内有多次失败尝试或错误请求时,自动调用防火墙将其封禁一段时间。

安装yum install fail2ban -y

配置 编辑/etc/fail2ban/jail.local 文件,可以针对SSH、Nginx等服务设置封禁策略。

借助云服务商/高防服务

对于大规模DDoS攻击,服务器本身的带宽和能力是远远不够的。

云服务商提供的安全产品

阿里云 DDoS高防IP, 云盾WAF

腾讯云 DDoS防护, 大禹BGP高防, WAF

AWS AWS Shield, WAF

Cloudflare 提供免费的CDN和基础的DDoS防护,付费版功能更强大。

原理 这些服务通过提供高带宽的清洗中心,将恶意流量引流并过滤,只将正常的流量转发到您的源服务器。

1、发现异常: 服务器变慢,服务中断。

2、快速定位

* 使用nload/iftop 看流量是否跑满。

* 使用ss/netstat 看连接数是否激增,检查SYN_RECVESTABLISHED 状态。

* 使用netstatss 找出连接数最多的可疑IP。

3、深入分析

* 查看Web日志/var/log/nginx/access.log,分析请求模式和可疑IP。

* 必要时使用tcpdump 抓包,用Wireshark深度分析。

4、立即应对

* 用防火墙iptables/firewalld 封禁可疑IP。

* 如果攻击规模大,立即联系云服务商客服,并启用DDoS高防服务。

5、长期防护

* 部署 Fail2ban 自动化防御。

* 业务放在云上,务必购买基础DDoS防护。

* 对重要业务,考虑使用云WAF和高防IP。

希望这份详细的指南能帮助您有效地查看和应对服务器攻击流量。

文章摘自:https://idc.huochengrm.cn/fwq/16579.html

评论