如何检查 Linux 服务器是否遭受 DDoS 攻击?
前置知识
DDos
DDoS(Distributed Denial-of-Service)攻击是最常见的服务器安全威胁之一,攻击频率和强度逐年稳步上升。本文主要介绍如何通过资源监控和及时采取一些措施来缓解 DDos 攻击。
DDos 攻击
DDoS 是一种恶意行为,攻击发起方通过向网络发出大量请求来耗尽目标服务器所有可用资源的攻击,与标准的 DoS(拒绝服务)攻击不同:
DDoS:
采用多个分布式的设备:通常情况下,设备已被黑客提前入侵并安装相关木马,设备所有者不知情;
攻击针对多种网络设备和协议,而不仅仅是网络端点;
以下是三种主要的 DDoS 攻击类型:
应用层 DDoS(OSI模型 第 7 层):重点攻击 Web 服务,如 Apache 和 Nginx 等;
协议攻击(OSI模型 第 3/4 层):针对重要网络设备上的操作系统和防火墙;
容量攻击(Volumetric attacks):产生大量流量,消耗服务器可用带宽和吞吐量;
如何检查 Linux 服务器是否受到 DDoS 攻击?
检查服务器负载
使用 uptime
命令检查服务器的平均负载:
1 | uptime |
会显示三个值:分别代表一分钟、五分钟和十五分钟内的平均负载:
服务器可用线程数是服务器可接受负载的一个便捷参考。如果负载等于或大于线程数,则可能表明活动量过高。
1 | grep processor /proc/cpuinfo | wc -l |
检查网络负载
如果服务器只是速度慢,但仍可通过直接连接(如通过 IPMI)访问,可使用以下工具来检查网络负载。
bmon
bmon
是一款带宽监控和速率估算工具,在 Linux 命令行可提供简单的数据可视化。
1 | **ubuntu 安装:** |
使用键盘的向上或向下箭头指定到要检查的网络设备。
nload
nload
工具实时监控网络流量和带宽使用情况。
1 | **ubuntu 安装:** |
vnStat
与 nload 类似,vnStat 也是一款流量监控工具。vnStat 的优势在于它能为指定接口保存每小时、每天和每月的网络流量日志。
1 | **ubuntu 安装:** |
默认列出所有可用网络接口:
1 | root@jpzhang-dev:~# **vnstat** |
注意: 如果刚刚安装了 vnStat,它将给出以下消息“ens3:Not enough data available yet.”。等待一段时间,然后再次尝试该命令。
** iftop**
iftop
以用户友好的格式显示网络连接列表和相关网络信息。默认情况下,列表按照带宽使用情况排序。
** ifstat**
ifstat
命令输出网络接口统计数据。默认情况下,它会显示每个活动接口的进出网络流量数据。
检查连接到服务器的 IP 地址
列出当前连接到服务器的 IP 地址可帮助识别潜在威胁。
netstat
是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。
下面使用 netstat
命令,用于创建包含 TCP 和 UDP 连接的输出,然后使用 awk
、cut
和 sort
命令对输出进行格式化。
1 | netstat -ntu|awk '{print $5}'|cut -d: -f1 -s|sort|uniq -c|sort -nk1 -r |
显示已连接的 IP 地址。
负载高的服务器上,列表可能很长,难以阅读。可以过滤输出,在一行中显示同一子网中的所有连接。下面的示例合并了同一 255.255.0.0 子网掩码中的 IP 地址。
1 | netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2 -d'.'|sed 's/$/.0.0/'|sort|uniq -c|sort -nk1 -r |
如何缓解 Linux 服务器的 DDoS 攻击?
一旦确认服务器遭受 DDoS 攻击,采取一些快速措施以减轻损失。
注: 未受保护的服务器很容易成为 DDoS 攻击对象。具有 DDoS 保护功能的专用服务器可在不中断可用性的情况下继续工作。
使用路由命令阻止攻击者的 IP 地址:
1 | sudo route add [ip-address] reject |
注意: 路由(route)命令是 net-tools 软件包的一部分。要在 Ubuntu 上安装:sudo apt install net-tools
或者使用 iptables
:
阻止某个 IP 地址访问:
1 | iptables -A INPUT 1 -s [ip-address] -j DROP/REJECT |
保存新策略规则:
1 | service iptables save |
重新启动服务:
1 | service iptables restart |
重新启动 Web 服务。例如,如果运行的是 Apache 网络服务器:
1 | sudo systemctl restart apache2 |
现在,系统已被配置为拒绝来自可疑 IP 地址的流量。
如何检查 Linux 服务器是否遭受 DDoS 攻击?