如何检查 Linux 服务器是否遭受 DDoS 攻击?

1. 写在前面

DDoS(Distributed Denial-of-Service)攻击是最常见的服务器安全威胁之一,攻击频率和强度逐年稳步上升。本文主要介绍如何通过资源监控和及时采取一些措施来缓解 DDos 攻击。

2. 什么是 DDoS 攻击?

这里仅简单说明。

DDoS 是一种恶意行为,攻击发起方通过向网络发出大量请求来耗尽目标服务器所有可用资源的攻击,与标准的 DoS(拒绝服务)攻击不同:

DDoS:

  • 采用多个分布式的设备:通常情况下,设备已被黑客提前入侵并安装相关木马,设备所有者不知情;
  • 攻击针对多种网络设备和协议,而不仅仅是网络端点;

以下是三种主要的 DDoS 攻击类型:

  • 应用层 DDoS(OSI模型 第 7 层):重点攻击 Web 服务,如 Apache 和 Nginx 等;
  • 协议攻击(OSI模型 第 3/4 层):针对重要网络设备上的操作系统和防火墙;
  • 容量攻击(Volumetric attacks):产生大量流量,消耗服务器可用带宽和吞吐量;

3. 如何检查 Linux 服务器是否受到 DDoS 攻击?

恶意行为者(黑客)使用标准网络进行 DDoS 攻击。因此,通过监视网络流量是否存在异常连接来检测攻击通常是一种简单的方式。以下列出了检查服务器是否遭受 DDoS 攻击的一些简单方法。

3.1 检查服务器负载

使用 uptime 命令检查服务器的平均负载:

root@jpzhang-dev:~# uptime
00:28:32 up 12 days, 13:13, 2 users, load average: 0.13, 0.10, 0.04

显示三个值:分别代表一分钟、五分钟和十五分钟内的平均负载:

0.13, 0.10, 0.04

服务器可用线程数是服务器可接受负载的一个便捷参考。如果负载等于或大于线程数,则可能表明活动量过高。

root@jpzhang-dev:~# grep processor /proc/cpuinfo | wc -l
4

在本例中,服务器有 4 个可用线程。平均负载高于 4 表示服务器负载异常高。

3.2 检查网络负载

如果服务器只是速度慢,但仍可通过直接连接(如通过 IPMI)访问,可使用以下工具来检查网络负载。

(1). bmon

bmon 是一款带宽监控和速率估算工具,在 Linux 命令行可提供简单的数据可视化。

ubuntu 安装:sudo apt install bmon

启动:  root@jpzhang-dev:~# bmon

使用键盘的向上或向下箭头指定到要检查的网络设备。

(2). nload

nload 工具实时监控网络流量和带宽使用情况。

ubuntu 安装:sudo apt install nload

启动:  root@jpzhang-dev:~# nload

按向左或向右箭头指定到要监控网络接口,终端将会显示所选接口进出网络流量详情。

(3). vnStat

与 nload 类似,vnStat 也是一款流量监控工具。vnStat 的优势在于它能为指定接口保存每小时、每天和每月的网络流量日志。

ubuntu 安装:sudo apt install vnstat

默认列出所有可用网络接口:

root@jpzhang-dev:~# vnstat
------------------------------------------------------------------------------------
rx / tx / total / estimated
br-3c911bd828a7: Not enough data available yet.
br-921af635eb7e:
2024-01 1.02 KiB / 210 B / 1.22 KiB / --
today 1.02 KiB / 210 B / 1.22 KiB / 34 KiB

docker0: Not enough data available yet.
ens3:
2024-01 33.11 KiB / 39.63 KiB / 72.74 KiB / --
today 33.11 KiB / 39.63 KiB / 72.74 KiB / 1.97 MiB

veth15be175:
2024-01 2.23 MiB / 1.19 MiB / 3.41 MiB / --
today 2.23 MiB / 1.19 MiB / 3.41 MiB / 94.55 MiB
... ...

注意:如果刚刚安装了 vnStat,它将给出以下消息“ens3:Not enough data available yet.”。等待一段时间,然后再次尝试该命令。

(4). iftop

iftop 以用户友好的格式显示网络连接列表和相关网络信息。默认情况下,列表按照带宽使用情况排序。

ubuntu 安装:sudo apt install iftop

启动: iftop

(5). ifstat

ifstat 命令输出网络接口统计数据。默认情况下,它会显示每个活动接口的进出网络流量数据。

ubuntu 安装:sudo apt install ifstat

启动: ifstat

3.3 检查连接到服务器的 IP 地址

列出当前连接到服务器的 IP 地址可帮助识别潜在威胁。

netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。

下面的命令使用带有 -n-t 和 -u 选项的 netstat 命令,用于创建包含 TCP 和 UDP 连接的输出,然后使用 awkcut 和 sort 命令对输出进行格式化。

root@jpzhang-dev:~# netstat -ntu|awk '{print $5}'|cut -d: -f1 -s|sort|uniq -c|sort -nk1 -r
--------------------------------------------------------------------------------------
1 10.20.0.6

显示已连接的 IP 地址。

负载高的服务器上,列表可能很长,难以阅读。可以过滤输出,在一行中显示同一子网中的所有连接。下面的示例合并了同一 255.255.0.0 子网掩码中的 IP 地址。

netstat -ntu|awk '{print $5}'|cut -d: -f1 -s |cut -f1,2 -d'.'|sed 's/$/.0.0/'|sort|uniq -c|sort -nk1 -r

现在输出只显示一行,10.20.0.6 前面的数字 1 表明有1个连接来自该 IP 地址。

4. 如何缓解 Linux 服务器的 DDoS 攻击?

一旦确认服务器遭受 DDoS 攻击,采取一些快速措施以减轻损失。

注:未受保护的服务器很容易成为 DDoS 攻击对象。具有 DDoS 保护功能的专用服务器可在不中断可用性的情况下继续工作。

使用路由命令阻止攻击者的 IP 地址:

sudo route add [ip-address] reject

注意:路由(route)命令是 net-tools 软件包的一部分。要在 Ubuntu 上安装:sudo apt install net-tools

或者使用 iptables

(1)阻止某个 IP 地址访问:

iptables -A INPUT 1 -s [ip-address] -j DROP/REJECT

(2)保存新策略规则:

service iptables save

(3)重新启动服务:

service iptables restart

(4)重新启动 Web 服务。例如,如果运行的是 Apache 网络服务器:

sudo systemctl restart apache2

现在,系统已被配置为拒绝来自可疑 IP 地址的流量。

5.结论

本文介绍了 DDoS 攻击,并提供了识别方法。此外,还介绍了一些快速反应技巧,以帮助缓解正在发生的 DDoS 攻击。

原创文章,作者:AIRF,如若转载,请注明出处:http://www.ai-rf.com/index.php/2024/01/30/%e5%a6%82%e4%bd%95%e6%a3%80%e6%9f%a5-linux-%e6%9c%8d%e5%8a%a1%e5%99%a8%e6%98%af%e5%90%a6%e9%81%ad%e5%8f%97-ddos-%e6%94%bb%e5%87%bb/

(0)
AIRFAIRF
上一篇 2024年1月30日
下一篇 2024年1月31日

相关推荐

  • 阿里云时隔一年再现大规模故障,云厂商宕机事故频发

    简介 2023年双十一刚刚落幕,阿里云故障导致阿里系App全线“崩”上热搜,涉及到阿里云盘、淘宝、咸鱼、钉钉、语雀等等产品。 问题原因 故障概况 时间线: 故障始于11月12日傍晚…

    2023年11月15日
  • 新一代开源免费的终端工具-WindTerm

    在日常工作中,ssh工具是我们最常用的工具之一。平时我们常用的工具有Xshell Putty等工具。每个工具都已自身的优点和缺点,这里我们推荐一款非常棒的开源工具WindTerm …

    2024年4月29日
  • 织梦 DeDeCMS转EyouCMS教程

    简介 织梦CMS是一款常用的内容管理系统,但随着市场竞争的加剧,很多用户开始考虑将其迁移到其他平台。 给大家展示转成功的图吧 织梦CMS转易优CMS数据转移步骤: 一、准备步骤 在…

    芯片设计 2023年8月31日
  • 你知道主流的开源协议分别代表什么意思嘛?

    常用的开源协议: Apache License 2.0 Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售…

    芯片设计 2023年5月29日
  • MQ9.0升级至9.1

    1.ps -ef | grep mqm2.kill -9 进程号3.查看是否删除完成ps -ef |grep mqm4.卸载目前版本 rpm -qa | grep MQM rpm …

    芯片设计 2022年9月26日
  • 2025年最新liunx宝塔面板9.6.0开心版 – 宝塔开心版脚本

    因本站授权是专业版,企业版插件不能用,本站没有对脚本加密下载原都是官方的  本站是纯公益 注:公益项目,仅供个人测试,请勿使用于商业用途! 注:公益项目,仅供个人测试,请勿使用于商…

    2025年2月26日
  • 什么是WebDAV协议?

    本文将介绍WebDAV协议的基本概念、应用场景以及一些著名的应用。然后,我们将重点讲解如何利用NGINX搭建自己的WebDAV服务器,并提供相应的代码和解析。最后,将推荐一些常用的…

    芯片设计 2024年1月24日
  • 【实测推荐】国内外免费CDN

    简介 CDN是一种新型网络构建方式,它是为能在传统的IP网发布宽带丰富媒体而特别优化的网络覆盖层;而从广义的角度,CDN代表了一种基于质量与秩序的网络服务模式。 CDN主要特点 1…

    2023年10月27日
  • 爱生活爱自己的句子

    不是井里没有水,而是井挖得不够深。不是成功来得充分,而是放弃得够快。得到一样东西需要智慧,放弃它需要勇气。 没有人的运气是凭空而来的,只有你足够努力,你才会足够幸运。这个世界不会辜…

    生活情感 2022年10月1日
  • OSI七层模型和TCP/IP五层很难?

    一、OSI参考模型 1、OSI的来源 OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在198…

    芯片设计 2023年4月24日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注