星途物语 星途物语
首页
  • 随手记录
  • 故障处理
  • Nginx
  • MySQL
  • Ansible
  • Nexus
  • Tomcat
  • Docker
  • Zabbix
  • Prometheus
  • Git
  • GitLab
  • Jenkins
  • Kubernetes
  • Shell
  • Python
  • 圈圈空间
  • 做饭这件事
收藏站点
留言板
归档
GitHub (opens new window)

星途物语

尚记时,记之
首页
  • 随手记录
  • 故障处理
  • Nginx
  • MySQL
  • Ansible
  • Nexus
  • Tomcat
  • Docker
  • Zabbix
  • Prometheus
  • Git
  • GitLab
  • Jenkins
  • Kubernetes
  • Shell
  • Python
  • 圈圈空间
  • 做饭这件事
收藏站点
留言板
归档
GitHub (opens new window)
  • 随手记录

    • QPS优化记录
    • 阿里云SLB演示
    • DDOS预防
    • Linux内核优化
    • rsync同步守护进程
    • NFS文件同步
    • Tomcat升级
    • 编译安装mysql后添加到systemd管理
    • 防火墙笔记
    • python自动化巡检服务器
  • 故障处理

    • 处理防MIME攻击后出现的问题解决
  • MySQL学习笔记

    • MySQL5.7安装
    • MySQL常用操作语句
    • MySQL主从架构实施
    • MySQL主主架构实施
    • MySQL MHA高可用实施
    • MyCat读写分离
    • MySQL创建用户时的授权
    • MySQL备份
    • MySQL通配符
  • Nginx学习笔记

    • 状态码含义
    • 匹配优先级
    • Nginx常用操作
    • 添加第三方模块
    • 关于路径匹配
    • 转发和重写
    • 内置变量
    • Nginx配置文件结构
  • Tomcat学习笔记

    • 部署Tomcat
    • 修改发布目录
    • Tomcat调优
  • Redis学习笔记

    • 通过 tar.gz 包安装部署 redis
    • redis 配置文件
    • 哨兵集群
    • redis常用命令
    • 虚拟机安装 redis.tar.gz 遇到的问题
  • Ansible学习笔记

    • 部署和使用 ansible
    • ansible 自带的密码认证参数
    • 批量免密操作:批量分发公钥
    • 配置主机清单
    • ansible 小知识
    • 模块介绍
    • 剧本
    • 一键部署 rsync 环境
    • 批量安装一个tomcat
    • 批量安装一个nginx
    • 批量安装 zabbix-agent
  • Zabbix学习笔记

    • 部署 zabbix 服务端、客户端
    • 自定义监控
    • 触发器
    • 监控项类型
    • 简单检查模式
    • zabbix web 界面结构信息
    • 邮件报警
    • 微信报警
    • snmp 监控网络设备
    • 部署 zabbix 服务端、客户端
    • jmx 监控 java 应用
    • ipmi 监控硬件
    • 自动化注册
    • 监控项的主要项和相关项
    • percona 监控 mysql
  • Git学习笔记

    • 配置 git
    • 常用命令
  • GitLab学习笔记

    • 环境准备
    • 安装 gitlab
    • gitlab 忘记 root 管理员密码的处理办法
  • Jenkins学习笔记

    • 安装部署
    • jenkins 使用脚本完成项目构建
    • jenkins 自动构建最新项目
    • 将 jenkins 自动部署的结果返回给 gitlab
    • jenkins 上线 java 项目
    • jenkins pipeline
  • Docker学习笔记

    • 安装 docker
    • 配置 docker 源
    • docker 中的常见名词
    • 镜像管理命令
    • 容器管理命令
    • 创建容器
    • 数据卷
    • docker network
    • 搭建 LNMP
    • Dockerfile
    • Dockerfile 搭建 tomcat
    • docker 镜像磁盘扩容
    • docker composer
    • Harbor 私有镜像仓库
    • docker 面试题
    • docker desktop 运行时与虚拟机冲突
    • docker离线安装
  • Nexus学习笔记
  • Prometheus学习笔记

    • 核心组件
    • 工作原理
    • 安装和配置
    • 启动 Prometheus
    • PromQL 使用
    • 数据模型
    • Exporter
    • 演示服务
    • Grafana 数据可视化
    • Prometheus 告警
  • Kubernetes学习笔记

    • K8S的介绍
    • K8S集群环境的搭建
    • K8S资源管理
    • K8S的实战入门
  • 运维
  • 随手记录
星途物语
2025-01-01

DDOS预防

1.DDOS 攻击是什么?

DOS 攻击(Denial of Service):拒绝服务,顾名思义,就是通过占用网络资源让服务器应接不暇从而拒绝正常的业务流量的一种网络攻击方式。

而 DDOS 就是 DOS 的分布式版本,俗称群殴。

简单来说就是一片僵尸网络对你的服务器发动攻击,耗尽你的资源,让你的服务器不能提供正常的服务。僵尸网络的成员可以是服务器、个人PC、智能机,这些成员通常是被木马、蠕虫等恶意程序感染的设备,俗称肉机。虽然可以通过 IP 追踪让设备停止攻击,但是还是有新的设备被感染后加入到攻击队列。

看一下华为对 DDOS 攻击的介绍:分布式拒绝服务(DDoS)攻击是一种常见的网络攻击形式。攻击者利用恶意程序对一个或多个目标发起攻击,企图通过大规模互联网流量耗尽攻击目标的网络资源,使目标系统无法进行网络连接、无法提供正常服务。根据攻击位置的不同,可以将DDoS攻击分为“网络层攻击”、“传输层攻击”和“应用层攻击”三种类型。攻击者经常组合使用不同的攻击类型,攻击复杂度持续演进,产生的攻击威胁也在不断增大。DDoS攻击会给攻击目标造成巨大的经济和品牌损失,同时,受攻击对象的核心业务数据也存在被窃取的风险。因此,各行各业都采取部署”DDoS攻击防御系统”的方式阻断DDoS攻击,降低其对正常业务的影响。

从 TCP/IP 通信的过程中可以发现,从数据离开到达到,几乎每个地方都有被 DDOS 攻击的机会

比如霸占服务器的网络带宽资源,只要向一台服务器发送大量的 IP 协议数据包就可以消耗对方的网络带宽,比如 ping 就可以发起一次攻击,ping 产生的是 ICMP 协议包,本质上还是一个 IP 包,这种攻击方式也称之为 ICMP 洪水,这种攻击方式就像我们一直给一个人写邮件,写了什么不重要,重要的是让信件多到邮递员在对方家门口排起长队,从而影响到对方收到正常的邮件,同样的,还可以发送传输层的 UDP 协议包,发起一次 UDP 洪水攻击,当然这里会暴露攻击设备的 IP,从而被对方加黑,所以攻击者一般都会通过伪造 IP 地址来隐藏自己

除了伪造本机 IP 外,还可以伪造目标 IP,比如可以伪造目标 IP,让目标 IP 去请求互联网上的大量第三方机器,之前有一种短信骚扰和这种方式很类似,我将要攻击的手机号作为参数输入到脚本,请求互联网上的大量第三方接口,这些服务器会给你发大量的短信,影响到正常的短信收发(这里仅仅为各位同学介绍攻击方式作为了解,千万不要去做这种事情,会进桔子),这种攻击方式称为反射攻击

在反射攻击的基础上又有人发现了把流量放大达到更强攻击效果的手段,成为放大攻击,比如 DNS 服务器是一种用来把域名解析为 IP 地址的设备,了解 DNS 的请求原理后,会发现 DNS 服务器就是一个很好的放大器,因为一次 DNS 查询请求返回的数据往往大于请求数据,这里有一个“带宽因子放大” BAF 的概念,在DNS 查询中,一般 60 字节的请求数据可以获得 3000 字节的返回数据,BAF = 3000/60 = 50,产生 50倍的放大效果,如果让攻击者不断的对 DNS 发起查询请求,并把本机地址伪造为攻击目标的 IP,那么这样的反射攻击就会产生 50 倍的流量放大效果

除了对目标的带宽资源进行霸占外,TCP 中还有连接的概念,所以还可以攻击服务器的连接资源,服务器和客户端每次建立一个 TCP 连接时,需要经历 3 次握手,然后把连接信息放到连接表中维护,而连接表的大小是有限的,所以可以让发起攻击的设备直接发起大量的 TCP 连接,从而占满服务器的这个连接表,而无法响应后续的 TCP 连接请求,这种方式称为 TCP 洪水攻击,但是因为有三次握手的存在,所以 TCP 洪水无法伪造自己的 IP,在建立连接时,如果在第一次连接时伪造了 IP,那么服务器向客户端发送的二次握手就无法到达,因此,连接无法建立,但是可以在建立连接的三次握手本身上做文章,比如,只发送大量的 SYN 而不进行回答,这种攻击方式称为 SYN 洪水,但是 SYN 有重传机制,每对目标进行一次 SYN 攻击,服务器在客户端没有响应时,会发送多次 SYN+ACK,相当于你打别人一下,别人打你几下,所以 SYN 洪水一般会伪造 IP,或是一个不存在的 IP(或是某个倒霉蛋的 IP)

同样的,在 TCP 连接中也可以通过反射发起攻击,像各个地址发送 SYN,并把本机 IP 伪造为攻击目标的 IP,此时大量的 SYN+ACK 就会从各个反射器上涌入攻击目标,当然,因为这种攻击方式因为无法在目标上建立连接,所以还是在攻击网络带宽

而针对 TCP 协议,还有一种巧妙的攻击手段,RST 洪水攻击(突然断开客户端与服务器的连接,团战断网),在 TCP 连接中,一般用 4 次挥手结束连接,但为了防止异常,一方可以发送一个 RST 数据强制切断连接,让攻击设备不断的尝试伪造各种 IP 地址,并发送 RST 数据进行盲打,一旦 IP 和其他的一些配置和某个正在上网的正常用户匹配上(恭喜这名倒霉蛋),就能够切断正常用户和服务器之间的连接,这种攻击方式更针对用户,在某些游戏中特别常见,不断切换玩家和服务器之间的连接,干扰玩家的正常游戏体验

还有一种是针对服务器内部资源进行攻击的方式,消耗目标的计算和 IO,比如利用某个站点的搜索功能,不断生成大量的关键字送入查询接口,这种攻击方式称为 http 洪水攻击,因为 http 协议实际上是基于 tcp 协议所以不能伪造 IP 地址,所以常见的方式是通过网络代理主机得到不同的真实 IP 发起攻击

2.DDOS 攻击的应对

从前面的内容可以看出,伪造 IP 地址是 DDOS 攻击的核心技术之一,一旦攻击者无法伪造 IP 地址......

网络设备 IP 过滤:让路由设备检测 IP,把源地址不属于本路由所在网络的数据都过滤掉,这样试图伪造 IP 的流量就无法发出

CDN 缓解 DDOS 攻击:把一个网络服务的流量分散到不同的地方从而稀释攻击的流量,但是有时会比较烧流量

流量清洗:专业的流量清洗设备(服务)

如果只做国内的业务,可以采用外网网段加黑的方式

查询网段的地址:https://lite.ip2location.com/ip-address-ranges-by-country?lang=zh_CN

#随手记录
阿里云SLB演示
Linux内核优化

← 阿里云SLB演示 Linux内核优化→

Theme by Vdoing | Copyright © 2025-2025 | 鄂ICP备2024086820号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式