网络安全 | WAF防护开通流程与技术原理详解
关注:CodingTechWork
引言
随着互联网安全形势的日益严峻,Web应用防火墙(WAF, Web Application Firewall)逐渐成为网站和应用的标准防护措施。WAF能够有效识别和防止如SQL注入、跨站脚本攻击(XSS)、恶意流量等多种网络攻击,从而保护企业Web应用免受潜在威胁。对于企业来说,要启用WAF防护,必须经历一系列的流程,包括源站的改造、DNS配置、WAF服务商的接入等。
本文将详细介绍WAF防护开通的流程,重点解析客户域名源站的改造、DNS接入以及WAF相关配置的技术原理,帮助企业全面理解如何顺利实现WAF防护,保障Web应用的安全。
WAF防护架构
WAF的基本架构是部署在应用服务器和客户端之间,所有的HTTP请求和响应都会先经过WAF进行流量分析和过滤。
WAF主要的工作
拦截恶意流量
:通过分析HTTP请求,拦截SQL注入、XSS攻击等常见的Web攻击。清洗合法流量
:通过对请求的深度分析,清洗掉不良流量,将合法流量转发给源站。防止DDoS攻击
:识别并防御针对Web应用的分布式拒绝服务攻击。- … …
大致的流量走向
客户端(Client)
:用户通过浏览器发起HTTP请求。DNS解析
:用户请求域名会通过DNS解析获取目标IP。WAF域名服务器
:客户将域名解析到WAF服务商提供的DNS服务器,WAF作为中介进行流量检测和清洗。WAF防护
:WAF对流量进行分析、拦截和清洗。源站(Origin Server)
:清洗后的流量转发到源站,源站返回响应。
流量走向示意图
客户端 → DNS查询 → WAF域名服务器 → WAF防护 → 源站响应 → 客户端接收响应
WAF防护开通的详细流程
客户源站的改造
在启用WAF之前,客户需要对Web应用的源站进行一些改造,确保源站能够与WAF进行顺利对接,保证WAF能够识别并过滤恶意流量,同时确保源站的流量能够正确无误地传递。
配置源站架构
源站是承载Web应用的服务器,需要保证其具备高可用性和扩展性。在接入WAF后,源站的架构可能会面临更多流量和安全压力,因此需要进行一些必要的调整。
负载均衡
:为了避免流量过大导致源站宕机,客户通常会配置负载均衡,使得流量分布到多个源站。服务器性能调优
:源站需要确保能够处理来自WAF的流量,并能快速响应请求。必要时可以对Web服务器进行性能优化。
SSL证书配置
如果客户网站使用HTTPS协议,WAF和源站之间的流量将被加密,因此客户需要确保WAF和源站之间的SSL通信能够正常工作。
WAF端SSL证书
:WAF需要具备SSL证书来解密来自客户端的加密请求。可以选择由WAF服务商提供的SSL证书,或者自己配置证书。源站SSL证书
:如果源站与WAF之间的流量也需要加密,则源站也需要配置自己的SSL证书。
修改源站配置
在源站上,可能需要做以下配置来支持WAF的正常工作:
配置真实IP传递
:WAF将拦截的请求转发给源站时,通常会修改请求的源IP地址,因此源站需要通过HTTP头(如X-Forwarded-For)获取真实的客户端IP。日志记录与审计
:确保源站能够对流量进行详细的日志记录,便于事后分析。
DNS配置与域名解析
DNS配置是WAF防护开通的重要环节之一。通过将网站的域名指向WAF,所有的流量将首先经过WAF进行处理,只有被判定为合法的流量才会被转发到源站。
修改DNS记录
客户需要修改域名的DNS记录,将原本指向源站的A记录或CNAME记录,改为指向WAF服务商的IP地址或域名。具体步骤如下:
- A记录或CNAME记录更新:将网站的A记录或CNAME记录修改为WAF服务商提供的DNS解析地址或IP地址。
- 域名解析服务器切换:客户可以将自己的域名解析服务器切换到WAF服务商的权威DNS服务器,或者通过配置将DNS查询转发给WAF提供的DNS服务器。
权威DNS服务商配置
WAF服务商通常会提供权威DNS服务,客户需要将域名的DNS管理权限交给WAF服务商。这一步骤中,WAF服务商将会管理域名的DNS解析,并负责所有的流量过滤工作。
WAF服务商提供的DNS服务
:将域名的DNS解析设置指向WAF服务商的DNS服务器。WAF服务商将根据客户端请求的合法性判断流量是否需要进一步清洗。TTL设置
:TTL(Time to Live)是DNS记录的有效时间,设置较低的TTL有助于加速DNS记录的更新和变更。
WAF配置与防护策略
在完成源站改造和DNS配置后,下一步就是配置WAF的防护策略。WAF服务商通常会提供一个管理界面,客户可以在该界面上配置和调整防护规则。
配置安全防护规则
WAF的安全防护规则能够识别并拦截各种攻击,客户需要根据实际需求配置这些规则。
SQL注入防护
:SQL注入是Web应用中最常见的攻击类型,WAF应当启用SQL注入防护规则。XSS攻击防护
:XSS(跨站脚本攻击)可以窃取用户信息或执行恶意操作,WAF应配置XSS防护规则。跨站请求伪造(CSRF)
:WAF可防止攻击者诱导用户浏览恶意网页发起不正当请求,保护Web应用免受CSRF攻击。CC攻击防护
:对于暴力破解或频繁访问的情况,WAF可以配置CC(Challenge Collapsar)攻击防护规则。自定义规则
:根据企业的具体需求,客户可以自定义WAF规则,如特定路径的访问控制、API接口的保护等。白名单和黑名单配置
:通过配置白名单,可以确保可信的流量不被误拦截;而黑名单可以有效屏蔽已知恶意来源的流量。- … …
流量分析与监控
WAF不仅能够实时拦截恶意请求,还能够对流量进行分析,帮助客户识别潜在的安全威胁。客户可以通过WAF的管理面板查看流量统计数据、攻击日志和拦截记录。
实时监控
:查看攻击趋势,及时发现异常流量。日志分析
:分析被拦截的请求,确定攻击来源和类型。报警机制
:设置异常流量或攻击事件的报警机制,以便进行快速响应。
响应与回滚
当WAF拦截异常流量时,通常会返回错误页面或其他提示。客户需要确保WAF在发生误拦截时能够进行回滚,并且能够灵活调整防护规则。
WAF防护流程
以下是WAF防护的具体流程:
客户端请求
:用户通过浏览器向Web应用发起请求。DNS解析
:客户端的DNS请求解析出WAF服务商提供的IP地址。WAF接收请求
:WAF接收到请求后,首先检查请求是否符合安全策略。恶意流量拦截
:如果请求被判定为恶意流量,WAF将拒绝请求或返回错误信息。合法流量转发
:WAF将合法请求转发到源站,源站处理请求并返回响应。响应返回客户端
:源站响应通过WAF返回给客户端。
流量走向示意图
客户端 → DNS查询 → WAF域名服务器 → WAF防护 → 源站响应 → 客户端接收响应
总结
本文主要是简单介绍通用的WAF开通流程,其实,WAF防护开通的流程涉及多个环节,包括源站改造、DNS配置、WAF策略设置等。通过合理配置源站架构和SSL证书,客户可以确保Web应用的高可用性和安全性。同时,WAF通过实时流量分析和防护机制,能够有效拦截和阻止各种网络攻击。
相关文章:
网络安全 | WAF防护开通流程与技术原理详解
关注:CodingTechWork 引言 随着互联网安全形势的日益严峻,Web应用防火墙(WAF, Web Application Firewall)逐渐成为网站和应用的标准防护措施。WAF能够有效识别和防止如SQL注入、跨站脚本攻击(XSS)、恶意流…...
【我的 PWN 学习手札】IO_FILE 之 FSOP
FSOP:File Stream Oriented Programming 通过劫持 _IO_list_all 指向伪造的 _IO_FILE_plus,进而调用fake IO_FILE 结构体对象中被伪造的vtable指向的恶意函数。 目录 前言 一、glibc-exit函数浅析 二、FSOP 三、Largebin attack FSOP (…...
Spring——自动装配
假设一个场景: 一个人(Person)有一条狗(Dog)和一只猫(Cat),狗和猫都会叫,狗叫是“汪汪”,猫叫是“喵喵”,同时人还有一个自己的名字。 将上述场景 抽象出三个实体类&…...
C语言——文件IO 【文件IO和标准IO区别,操作文件IO】open,write,read,dup2,access,stat
1.思维导图 2.练习 1:使用C语言编写一个简易的界面,界面如下 1:标准输出流 2:标准错误流 3:文件流 要求:按1的时候,通过printf输出数据,按2的时候,通过p…...
人工智能知识分享第九天-机器学习_集成学习
集成学习 概念 集成学习是机器学习中的一种思想,它通过多个模型的组合形成一个精度更高的模型,参与组合的模型称为弱学习器(基学习器)。训练时,使用训练集依次训练出这些弱学习器,对未知的样本进行预测时…...
腾讯云AI代码助手编程挑战赛-武器大师
作品简介 对话过程能够介绍二战 各种武器 冷战 武器 现代的 各种武器装备,陆海空三军都知道。 技术架构 使用全后端分离的架构,前端使用Vue脚手架,腾讯云修改样式css 开发环境、开发流程 系统:win11 开发工具:VS…...
Python机器学习笔记(十八、交互特征与多项式特征)
添加原始数据的交互特征(interaction feature)和多项式特征(polynomial feature)可以丰富特征表示,特别是对于线性模型。这种特征工程可以用统计建模和许多实际的机器学习应用中。 上一次学习:线性模型对w…...
java_深入理解main方法
深入理解main方法 在 main()方法中,我们可以直接调用 main 方法所在类的静态方法或静态属性。但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,[举例说明]…...
NLP中常见的分词算法(BPE、WordPiece、Unigram、SentencePiece)
文章目录 一、基本概念二、传统分词方法2.1 古典分词方法2.2 拆分为单个字符 三、基于子词的分词方法(Subword Tokenization)3.1 主要思想3.2 主流的 Subword 算法3.3 Subword 与 传统分词方法的比较 四、Byte Pair Encoding (BPE)4.1 主要思想4.2 算法过…...
HTTP/HTTPS ②-Cookie || Session || HTTP报头
这里是Themberfue 上篇文章介绍了HTTP报头的首行信息 本篇我们将更进一步讲解HTTP报头键值对的含义~~~ ❤️❤️❤️❤️ 报头Header ✨再上一篇的学习中,我们了解了HTTP的报头主要是通过键值对的结构存储和表达信息的;我们已经了解了首行的HTTP方法和UR…...
前端 动图方案
1、vue3lottie 解析使用Bodymovin导出为json格式的Adobe After Effects动画 vue3lottie的使用神器:vue3-lottie (electron也适用)-CSDN博客 2、MP4文件 //template部分 <video class"header-bg" src"../../assets/images/screen/layout/heade…...
C#语言的字符串处理
C#语言的字符串处理 引言 在现代编程中,字符串处理是一项重要的技能,几乎在所有编程语言中都有应用。C#语言作为一种强类型的、面向对象的编程语言,提供了丰富的字符串处理功能。这使得开发人员能够方便地进行文本操作,比如字符…...
【shell编程】报错信息:bash: bad file descriptor(包含6种解决方法)
大家好,我是摇光~ 在运行 Shell 脚本时,遇到 bash: bad file descriptor 错误通常意味着脚本尝试对一个无效或不可用的文件描述符(file descriptor)执行了读写操作。 以下是一些可能导致这个问题的原因、详细案例以及相应的解决…...
vscode 配置c/c++环境 中文乱码
D:\MIscrobingDownload\mingw64\binmingw配置到环境变量中 测试一下,按winr输入cmd打开终端 gcc -v g -v安装插件 一 二 run code 因为run code 插件配置实质上是用它提供的指令进行编译执行,因此无法直接使用断点调试功能,需要对配置进行…...
leetcode 面试经典 150 题:两数之和
链接两数之和题序号1题型数组解题方法1. 哈希表,2. 暴力法难度简单熟练度✅✅✅✅✅ 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输…...
【Unity报错】error Cs0103: The name ‘keyCode‘ does not exist in the current context
报错提示: 解决方法: KeyCode K大写...
家用万兆网络实践:紧凑型家用服务器静音化改造(二)
大家好,这篇文章我们继续分享家里网络设备的万兆升级和静音改造经验,希望对有类似需求的朋友有所帮助。 写在前面 在上一篇《家用网络升级实践:低成本实现局部万兆(一)》中,我们留下了一些待解决的问题。…...
“AI智能实训系统:让学习更高效、更轻松!
大家好,作为一名资深产品经理,今天我来跟大家聊聊一款备受瞩目的产品——AI智能实训系统。在这个人工智能技术飞速发展的时代,AI智能实训系统应运而生,为广大学习者提供了全新的学习体验。那么,这款产品究竟有哪些亮点…...
【Linux 之一 】Linux常用命令汇总
Linux常用命令 ./catcd 命令chmodclearcphistoryhtoplnmkdirmvpwdrmtailunamewcwhoami 我从2021年4月份开始才开始真正意义上接触Linux,最初学习时是一脸蒙圈,啥也不会,啥也不懂,做了很多乱七八糟,没有条理的笔记。不知…...
Git 从入门到精通
一、环境配置 下载地址:https://git-scm.com/downloads/ 二、用户配置 找到git bash git --version 查看当前版本 git config --global user.name szhipeng625 设置用户名 git config --global user.email szhipeng625gmail.com 设置邮箱 git config --global …...
【Uniapp-Vue3】创建自定义页面模板
大多数情况下我们都使用的是默认模板,但是默认模板是Vue2格式的,如果我们想要定义一个Vue3模板的页面就需要自定义。 一、我们先复制下面的模板代码(可根据自身需要进行修改): <template><view class"…...
Ansible之批量管理服务器
文章目录 背景第一步、安装第二步、配置免密登录2.1 生成密钥2.2 分发公钥2.3 测试无密连接 背景 Ansible是Python强大的服务器批量管理 第一步、安装 首先要拉取epel数据源,执行以下命令 yum -y install epel-release安装完毕如下所示。 使用 yum 命令安装 an…...
android compose 串口通信
1.添加依赖 implementation("io.github.xmaihh:serialport:2.1.1") 2.添加SerialHelper派生类 class SerialPortHelper(portName:String,baudRate:Int): SerialHelper(portName,baudRate) {var receivedDataBuffer mutableListOf<Byte>()override fun onDa…...
ios脚本巨魔商店多巴胺越狱基本操作教程
准备工作 确认设备兼容性:A9-A11(iPhone6s-X):iOS15.0-16.6.1;A12-A14(iPhoneXR-12PM):iOS15.0-16.5.1;A15-A16(iPhone13-…...
NLP项目实战——基于Bert模型的多情感评论分类(附数据集和源码)
在当今数字化的时代,分析用户评论中的情感倾向对于了解产品、服务的口碑等方面有着重要意义。而基于强大的预训练语言模型如 Bert 来进行评论情感分析,能够取得较好的效果。 在本次项目中,我们将展示如何利用 Python 语言结合transformers库&…...
.NET framework、Core和Standard都是什么?
对于这些概念一直没有深入去理解,以至于经过.net这几年的发展进化,概念越来越多,越来越梳理不容易理解了。内心深处存在思想上的懒惰,以为自己专注于Unity开发就好,这些并不属于核心范畴,所以对这些概念总是…...
Mybatis原理简介
看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程。如下图所示: 原理详解: MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根…...
腾讯云AI代码助手-公司职位分析AI助手
作品简介 腾讯云AI代码助手是一款智能工具,专注于为公司提供职位分析服务。通过自然语言处理和机器学习技术,它能快速解析职位描述,提取关键信息,并提供数据驱动的洞察,帮助公司优化招聘流程和职位设计。 技术架构 …...
腾讯云AI代码助手编程挑战赛-解忧助手
作品简介 何以解忧,唯有杜康。而随着Ai的发展,解忧不再只有杜康还有Ai,使用的是腾讯云AI代码助手来生成的所有代码,使用方便,快捷,高效。 技术架构 采用了全后端分离的架构,前端使用Vue.js,腾讯云的AI服务处理自然语…...
Sentinel服务保护 + Seata分布式事务
服务保护 【雪崩问题】微服务调用链路中某个服务,引起整个链路中所有微服务都不可用。 【原因】: 微服务相互调用,服务提供者出现故障。服务调用这没有做好异常处理,导致自身故障。调用链中所有服务级联失败,导致整个…...
【Leetcode·中等·数组】59. 螺旋矩阵 II(spiral matrix ii)
题目描述 英文版描述 Given a positive integer n, generate an n x n matrix filled with elements from 1 to n(2) in spiral order. Example 1: Input: n 3 Output: [[1,2,3],[8,9,4],[7,6,5]] 提示: 1 < n < 20 英文版地址 https://leetcode.com…...
WebSocket 扩展生态:协议与框架
在前七篇文章中,我们深入探讨了 WebSocket 的基础原理、开发实践和实战案例。今天,让我们把视野扩展到 WebSocket 的生态系统,看看有哪些扩展协议和框架可以帮助我们更好地开发 WebSocket 应用。我曾在一个大型即时通讯项目中,通过合理使用这些工具,将开发效率提升了 50%。 扩…...
MySQL —— 在CentOS9下安装MySQL
MySQL —— 在CentOS9下安装MySQL 1.查看自己操作系统的版本2.找到对应的安装源3.上传我们在windows下,下载的文件,解压4.执行rpm命令,启用MySQL8仓库5.执行dnf install -y mysql-community-server6.设置开机自启动7.获得初始密码8.登录MySQL…...
用VS C#构建Windows服务【纯操作版,附带项目地址】
1.点击“创建新项目”,选择“Windows 服务(.NET Framework)” 2、给项目命名 3、双击“Service1.cs”,右键,选择“添加安装程序”,就会生成一个“ProjectInstaller.cs”文件 4、双击“ProjectInstaller.cs”文件,右键“serviceProcessInstaller1”,选择“属性…...
1.UGUI相关
1.这一种UIcanvas下的组件,会显示在3d物体之前 2.可以设置3d物体在UI界面之前。选中第二个模式。这时候会指定一个摄像机。一般情况下,不用主摄像机。需要新建一个专门给UI的摄像机。相当于设置距离摄像机的远近。两个layer 可以理解成 章节,关卡。相同…...
大语言模型训练的数据集从哪里来?
继续上篇文章的内容说说大语言模型预训练的数据集从哪里来以及为什么互联网上的数据已经被耗尽这个说法并不专业,再谈谈大语言模型预训练数据集的优化思路。 1. GPT2使用的数据集是WebText,该数据集大概40GB,由OpenAI创建,主要内…...
Android 来电白名单 只允许联系人呼入电话
客户需求只允许通讯录中联系人可以呼入电话。参考自带的黑名单实现 CallsManager.java类中的onSuccessfulIncomingCall方法有一些过滤器,可以仿照黑名单的方式添加自己的过滤器。 packages/services/Telecomm/src/com/android/server/telecom/CallsManager.java …...
StarRocks Awards 2024 年度贡献人物
在过去一年,StarRocks 在 Lakehouse 与 AI 等关键领域取得了显著进步,其卓越的产品功能极大地简化和提升了数据分析的效率,使得"One Data,All Analytics" 的愿景变得更加触手可及。 虽然实现这一目标的道路充满挑战且漫…...
plane开源的自托管项目
Plane 是一个开源的自托管项目规划解决方案,专注于问题管理、里程碑跟踪以及产品路线图的设计。作为一款开源软件,Plane 的代码托管在 GitHub 平台上,允许任何人查看和贡献代码。它为用户提供了便捷的项目创建与管理手段,并配备了…...
WebLogic安全基线
WebLogic安全基线 一、 用户权限1 、检查weblogic 的启动用户2 、用户权限整改3 、使用普通用户重启weblogic 二、账户共用1 、检查weblogic 控制台的账户2 、账户共用整改3 、测试登录weblogic 控制台新账户 三、 账户清理1 、检查weblogic 控制台的账户2 、帐户清理整改 四、…...
复杂园区网基本分支的构建
目录 1、各主机进行网络配置。2、交换机配置。3、配置路由交换,进行测试。4、配置路由器接口和静态路由,进行测试。5、最后测试任意两台主机通信情况 模拟环境链接 拓扑结构 说明: VLAN标签在上面的一定是GigabitEthernet接口的,…...
设计模式-结构型-组合模式
1. 什么是组合模式? 组合模式(Composite Pattern) 是一种结构型设计模式,它允许将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。换句话说,组合模式允…...
32单片机从入门到精通之用户界面——用户界面(十四)
不论你现在处于什么样的困境和挑战,不要放弃希望和努力。成功之路不会一帆风顺,但是只要你坚定信念,勇敢面对困难,努力奋斗,就一定能够战胜困难,迈向成功的道路。困难和挫折只是暂时的,而坚持和…...
Redis 优化秒杀(异步秒杀)
目录 为什么需要异步秒杀 异步优化的核心逻辑是什么? 阻塞队列的特点是什么? Lua脚本在这里的作用是什么? 异步调用创建订单的具体逻辑是什么? 为什么要用代理对象proxy调用createVoucherOrder方法? 对于代码的详细…...
NFS 组件容器化部署实战指南
文章目录 前言部署NFS服务器K8S部署NFS问题记录 前言 使用nfs-client-provisioner这个应用,利用nfs server给kubernets提供作为持久化后端,并且动态提供pv。所有节点需要安装nfs-utils组件,并且nfs服务器与kubernets worker节点都能网络连通…...
LCE(Local Cascade Ensemble)预测模型和LSTM(Long Short-Term Memory)模型在效果和特点上存在显著差异
LCE(Local Cascade Ensemble)预测模型和LSTM(Long Short-Term Memory)模型在效果和特点上存在显著差异。以下是对两者的比较: 一、效果比较 LCE模型: 优势:LCE结合了随机森林和XGBoost的优势&a…...
rk3568平台Buildroot编译实践:内核rootfs定制 及常见编译问题
目录 编译前准备常规编译流程定制内核修改内核 参数并增量 保存修改rootfs并增量 保存修改rootfs包下载源rootfs软件包增删refBuildroot 是一个用于自动化构建嵌入式 Linux 系统的工具。它通过使用简单的配置文件和 Makefile,能够从源代码开始交叉编译出一个完整的、可以运行在…...
头歌python实验:网络安全应用实践-恶意流量检测
第1关:re 库的使用 本关任务:编写一个能正则匹配出 ip 地址的小程序。 re 的主要功能函数 常用的功能函数包括: compile、search、match、split、findall(finditer)、sub(subn)。 re.search 函数 re.search 扫描整个字符串并返回第一个成功的匹配。 函数语法: re…...
Linux内核编程(二十一)USB应用及驱动开发
一、基础知识 1. USB接口是什么? USB接口(Universal Serial Bus)是一种通用串行总线,广泛使用的接口标准,主要用于连接计算机与外围设备(如键盘、鼠标、打印机、存储设备等)之间的数据传输和电…...
机器学习实战——决策树:从原理到应用的深度解析
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 决策树(Decision Tree)是一种简单而直观的分类与回归模型,在机器学习中广泛应用。它的…...