【玩转 EdgeOne】被DDOS了???紧急使用EdgeOne从零玩转EdgeOne搭配网站加速防止再次被DDOS攻击

2023-10-22 18:26:31 浏览数 (3)

前言

因服务器被DDOS攻击导致服务器直接崩掉了,我某个朋友拿我服务器来做测试真的无语了呀.......一秒就打死了.

之前我使用的是七牛云,接下来使用EdgeOne,腾讯出品你值得信赖!

别担心,EdgeOne一站式帮你解决种种烦恼,攻击卡顿都不怵,加速安全皆兼顾!

EdgeOne作为下一代CDN,是腾讯云发布的首款面向全球客户服务的一站式整合型服务产品,

也是国内市场上首款真正意义上的一站式边缘安全加速产品。与传统CDN相比,EdgeOne具备安全、灵活、

高效及敏捷等多重优势,可以基于腾讯全球边缘节点, 为全球客户提供TCP/UDP/HTTP/HTTPS安全防护和加速一体化服务,

满足各种行业与场景的多种业务需求!

边缘安全加速产品都具有哪些安全能力?

支持对 Web 应用层攻击,DDoS 攻击,CC 攻击,BOT/爬虫类攻击进行防护,也支持用户按业务需求,配置自定义复杂访问控制规则。

EdgeOne的接入

进入EdgeOne产品页面进行添加站点

imgimg

需要进行购买套餐

我们选择 九块九套餐就行了

imgimg
imgimg

购买完毕可以看到我们的控制台变化了

imgimg

验证我们的域名归属权

imgimg

回到站点列表可以看到我们的站点套餐是个人版本

imgimg

选择加速区域和接入模式,完成站点接入

选择接入模式,EdgeOne 为您提供了两种接入模式,分别为 NS 接入模式和 CNAME 接入模式,不同的接入模式区别如下:

模式

NS 接入(推荐)

CNAME 接入

适用场景

可修改原有域名解析服务商,将域名解析托管至 EdgeOne。

当前域名已托管在其他域名解析服务商处(例如:腾讯云DNSPod),不希望更改原有解析服务商。

接入方式

只需要去原域名解析服务商修改一次 DNS 服务器,托管域名解析后可针对域名一键开启安全加速。

每次新增子域名并开启加速时,都需要去相应的 DNS 解析服务商添加一次 CNAME 记录。

验证方式

需修改原有 NS 服务器至 EdgeOne 指定的地址。

通过添加 DNS 记录或者文本验证的方式验证主域名归属权。

调度方式

域名开启加速后,可通过 A 记录直接指向最近的 EdgeOne 边缘节点。

域名开启加速后,需通过 Cname 调度至最近的 EdgeOne 边缘节点。

我这里使用CNAME

点击域名管理、域名配置可以进行切换

imgimg

添加域名

域名配置指引

@ 直接将主域名 yby6.com 接入

www 将子域名 www.yby6.com 接入

test 将子域名 test.yby6.com 接入

  • 将泛域名 *.yby6.com 接入
imgimg

推荐配置我使用网站加速

imgimg

进行配置CNAME

imgimg

进入域名DNS云解析

将主机记录信息替换为EdgeOne

imgimg
imgimg

配置完成后将是部署中

imgimg

DDOS的防御

imgimg

我们已经部署成功了

接下来访问一下 我滴妈 咋变成不安全了啊!!!!

原来是EdgeOne没配置Https协议导致的那么我们就申请一个呗

imgimg

同学们就根据这个来一步步的就ok啦,我将不带大家进行了

imgimg

直接申请免费的会自动进行部署的

imgimg

部署成功!

imgimg

测试一下我们的加速

站点接入前,您可以通过打开浏览器,单击 F12 查看开发者工具,之后输入该站点的服务器地址

比如: 直接浏览器输入 127.0.0.1 你自己对应的服务器IP

可以看到我的第一次我是ip直接访问 好慢呀!

imgimg

第二次测试使用我们配置好的加速域名 yby6.com 可以看到非常的快啊! 缩短到564毫秒啦~

imgimg

使用Safari浏览器测试结果

imgimg

感谢腾讯云给我抵抗那些DDOS人的勇气呜呜呜呜~

边缘云函数

部署代码

imgimg

进行新增策略

imgimg

我这里直接使用文件名称来作为策略

它还可以有 HOST、URL PATH、URL Full、文件后缀、文件名称、以及全站请求

imgimg

哈哈哈哈哈!!!太强了啊!

imgimg

图片自适应缩放

imgimg

该示例通过获取请求头中的 User-Agent 信息,来识别客户端类型,并使用 fetch API 获取源站图片,根据客户端类型对图片进行缩放,以实现图片自适应缩放的效果。这种实现方式可以提高网站的用户体验,使得图片在不同的设备上都能够以最佳的尺寸呈现。

代码语言:javascript复制
addEventListener('fetch', event => {
  // 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站 
  event.passThroughOnException();
  event.respondWith(handleEvent(event));
});


async function handleEvent(event) {
  const { request } = event;
  const urlInfo = new URL(request.url);
  const userAgent = request.headers.get('user-agent');


  // 请求非图片资源
  if (!/.(jpe?g|png)$/.test(urlInfo.pathname)) {
    return fetch(request);
  }


  // 移动端图片宽度
  let width = 480;
  const isPcClient = isPc(userAgent);


  // PC 端图片宽度
  if (isPcClient) {
    width = 1280;
  }


  // 图片缩放
  const response = await fetch(request, {
    eo: {
      image: {
        width,
      }
    }
  });


  // 设置响应头
  response.headers.set('x-ef-client', isPcClient ? 'pc' : 'mobile');
  return response;
}


// 请求客户端类型判断
function isPc(userAgent) {
  const regex = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i;
 
  if(regex.test(userAgent)) {
    return false;
  }
  
  return true;
}

使用URL Path 来匹配后缀图片

imgimg

通过边缘函数实现自适应图片格式转换

创建函数

代码语言:javascript复制
// 浏览器使用图片格式
const broswerFormat = {
  Chrome: 'webp',
  Opera: 'webp',
  Firefox: 'webp',
  Safari: 'jp2',
  Edge: 'webp',
  IE: 'jxr'
};

addEventListener('fetch', event => {
  // 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站 
  event.passThroughOnException();
  event.respondWith(handleEvent(event));
});

async function handleEvent(event) {
  const { request } = event;
  const userAgent = request.headers.get('user-agent');
  const bs = getBroswer(userAgent);
  const format = broswerFormat[bs];
  
  // 无需转换图片格式
  if (!format) {
    return fetch(request);
  }

  // 图片格式转换
  const response = await fetch(request, {
    eo: {
      image: {
        format
      }
    }
  });

  // 设置响应头
  response.headers.set('x-ef-format', format);
  
  return response;
}

function getBroswer(userAgent) {
  if (/Edg/i.test(userAgent)) {
    return 'Edge'
  }
  if (/Trident/i.test(userAgent)) {
    return 'IE'
  }
  if (/Firefox/i.test(userAgent)) {
    return 'Firefox';
  }
  if (/Chrome/i.test(userAgent)) {
    return 'Chrome';
  }
  if (/Opera|OPR/i.test(userAgent)) {
    return 'Opera';
  }
  if (/Safari/i.test(userAgent)) {
    return 'Safari'
  }
}

函数触发规则中,配置该函数的触发条件,根据当前的场景需求,您可以配置两条触发条件,以 And 逻辑触发。

该请求 HOST 等于 Image.yby6.com。

该请求 URL Path 等于 /image/*。

当请求 URL 同时符合以上条件时,将触发以上的边缘函数,对图片进行自动处理。

imgimg

验证边缘函数的生效情况

谷歌浏览器

代码语言:javascript复制
在 Mac/linux 环境下,以测试 Chrome 浏览器为例,可以在终端内运行命令:
curl --user-agent "Chrome" https://image.example.com/image/test.jpg -i
查看响应的 Content-Type 信息,是否为 image/webp。

Safari浏览器

代码语言:javascript复制
在 Mac/linux 环境下,在终端内运行命令:curl --user-agent "safari" https://image.example.com/image/test.jpg -i
查看响应的 Content-Type 信息,是否为 image/jp2。
imgimg

EdgeOne使用的体验&心得

经过这次的EdgeOne体验感觉它的功能很强大我还有很多功能都没有去玩、他有规则引擎、安全防护、边缘函数、测试工具、诊断工具等等都可以去玩玩看

我感觉他的性能优势很强大EdgeOne利用分布在全球各地的边缘节点,可以加速内容传递和响应时间,提供更好的性能。这对于需要低延迟和高带宽的应用程序非常重要。

他的安全性边缘计算在于更加靠近终端用户,因此有助于减少潜在的网络攻击。EdgeOne提供了多种安全功能,包括DDoS和Web防护,可以帮助保护应用程序免受网络威胁的影响。灵活性可通过边缘函数EdgeOne使开发人员能够在边缘节点上运行自定义代码,这为构建灵活的边缘应用程序提供了机会.

输入图片说明输入图片说明

最后

本期结束咱们下次再见

0 人点赞