谈谈CDN怎么选

刚才在hostloc看见一个帖子说“高防CDN,免费测试,打死退款,支持USDT”。遂对其官网进行测试,发现果然没有什么防护轻松被击落。
就想着写此文讲讲CDN怎么选

CDN的分类

按照阿里云的分类标准,CDN是被分成普通CDN、SCDNDCDNPCDN的。其中PCDN不在本文讨论范围内。

普通的CDN

CDN内容分发网络(Content Delivery Network),解决跨地域跨运营商网络性能问题,提供稳定快速的加速服务,遍布全球的加速节点,全球或出海业务均可获益,面向开发者的生态可自定义加速逻辑,提升用户体验。

普通CDN的特点是只对静态资源进行缓存加速,也没有什么防护能力。但胜在其边缘缓存能力强大,对于静态资源的加速效果是十分显著的。对于一般的个人博客而言,可以大大提升访问速度。
缺点也很明显:不抗揍,挨打就欠费。
如何选择:如果不考虑防护,那么可以无脑选择性价比高的产品入手。往往CDN配置起来不会很复杂,性价比高的产品可能只是稳定性少打折扣而已(打折扣多了就被骂了做不起来了)。

DCDN

全速加速(DCDN)是在CDN加速的基础上升级的产品,智能区分访问的是动态还是静态,静态直接调用阿里云CDN加速,动态会通过协议优化等快速回源拉取内容数据。相比于CDN加速只能静态加速资源,DCDN可同时进行静态和动态的加速。

和普通的CDN相比,仅仅是多了一个动态请求的加速功能。对于大型企业网站、购物站等高并发的站点来说比较有用,对于个人站点来说毫无作用。
怎么选:DCDN很贵,有钱可以任性。

SCDN

SCDN是有安全防护的CDN服务,体现在能够提前预判外界攻击行为,将恶意请求切换到高防IP,无需人工操作,目的是通过数据清洗将恶意流量移除,而让真实用户正常打开页面,这样就可以做到智能加速和安全运行。
目前小厂卖的CDN往往都是SCDN。我本人使用的也是这种类型的。分辨SCDN的优劣可以从以下几个方面入手:

  • 看官方宣传贴下方有无跳脸攻击记录的
  • 看网络测评(不过广告居多)
  • 申请免费测试后自己测试下防护

具体选择方式:根据自己的能力和需求看规则的自定义程度、连接数带宽限制等来选择。

【网页优化】中英文间自动添加空格

@> 有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。
——vinta

Demo

这是一段中文与English混排的文字,我在编辑时并没有手动Pangu。

使用

text-autospace.js上传到你的服务器,并在body尾部引入。

1
<script type="text/javascript" src="text-autospace.min.js"></script>

在head中插入以下css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
html hanla:after {
content: " ";
display: inline;
font-family: Arial;
font-size: 0.89em;
}

html code hanla,
html pre hanla,
html kbd hanla,
html samp hanla {
display: none;
}

html ol > hanla,
html ul > hanla {
display: none;
}

Hytron HK BGP Standard 测评

配置

这台服务器是黑五入手的,详细配置如下:

项目 信息
CPU數量 1vCPU $2.52 USD
内存(MB) 1024MB (1GB) $2.52 USD
硬盤空間(GB) 10GB $4.20 USD
流量(GB) 500GB (0.5TB) $4.20 USD
帶寬速率(Gbps) 7Gbps
1
2
3
4
5
6
7
8
9
10
11
12
13
-> System Information

CPU Model Name: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
CPU Cache Size: L1: 64.00 KB / L2: 4.00 MB / L3: 16.00 MB
CPU Specifications: 1 vCPU(s)
Virtualization Ready: Yes (Based on Intel VT-x, Nested Virtualization Enabled)
Virtualization Type: KVM
Memory Usage: 150.04 MiB / 981.21 MiB
Swap Usage: [ no swap partition or swap file detected ]
Disk Usage: 2.05 GiB / 9.78 GiB
Boot Disk: /dev/vda1
OS Release: Ubuntu 20.04 LTS (x86_64)
Kernel Version: 5.4.0-29-generic

叠了黑五半价券之后,年付大概 70¥

常规参数

CPU 硬盘跑分
网络速度
回程线路

DDoS 防护

我是专门为了它的 CFMT 线路接入购买的,在测评时也测试了一下它的DDoS防护。
测试使用的攻击平台由我的朋友提供,为了防止被滥用就不公开了。
第一次测试 UDP 反射攻击。攻击带宽大约 700Gbps。丢包率如下图(前三分之一为未开始攻击时的丢包率,后三分之二为攻击时)
UDP反射
第二次测试 SYN Flood 攻击。攻击带宽大约 50Gbps。所有外网流量都无法流入,但停止攻击后立刻复活。

从基础数据来看, CPU 单核跑分 852 分是在一个还说得过去的水平的,对于一台普通的高防网站服务器来说够用了。硬盘 IO 在 VPS 范围呢则是比较高的一个水平,可惜硬盘太小了,加大容量得加钱。
网络带宽没有续表,但是由于其三网绕日本 NTT 的线路导致到国内带宽缩水很多。我加钱上的 7Gbps 到国内仅剩 1Gbps 了。
我购买这台机器主要是为了它的 DDoS 防护。目前来看它的防护确实耀眼。得益于Cloudflare Magic Transmit的加持,使其能够防护超过 5Tbps 的 DDoS 攻击,我个人认为是比较满意的了。

Typecho 登录返回 302 的解决方法

之前学校要开课就拿 Typecho 糊了一个小网站拿来配合,今天发现登不上去了感觉非常离谱。
F12 抓包看了一下发现登录返回了 302 而且没有附带报错信息,非常非常的离谱。
查了一下文档,没有查到(不过也正常,ty 文档约等于空气)。
研究了一下发现:
修改 Typecho 根目录下的config.inc.php`,添加这么一行:

1
define('__TYPECHO_SECURE__', true);

然后清除一下缓存,他就好了。
总之就是非常离谱

使用 Git CMD 代替 Git Bash

Git BashWindows下的使用简直是反人类,在搜索资料之后博主总结出了调出Git自带cmd的方法。
打开注册表编辑器,定位到HKEY_CLASSES_ROOT\Directory\Background\shell
右键shell,新建一个项。命名为git_cmd
进入git_cmd,修改“默认”值为Git Cmd Here
新建一个字符串值Icon,修改为C:\path\to\git\git-cmd.exe
再新建一项,命名为command,修改“默认”值为"C:\path\to\git\git-cmd.exe" "--cd=%v."

修复跨域 (CORS) 问题

如果你在进行前后端分离的开发时发现在测试环境内没有任何问题,而一上生产环境就会出现前端根本无法向后端发出请求的问题,那么恭喜你,你成为了万恶的CORS的受害者之一!!!
你可以按F12打开开发者工具,选择网络选项卡,按F5刷新网页。不出意外的话你会看见一长串的CORS Error。同时,控制台也会输出错误。

什么是 CORS

@> 跨源资源共享 (CORS)(或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它origin(域,协议和端口),这样浏览器可以访问加载这些资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的”预检”请求。在预检中,浏览器发送的头中标示有HTTP方法和真实请求中会用到的头。
跨源HTTP请求的一个例子:运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。
出于安全性,浏览器限制脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest 和 Fetch API 遵循同源策略。这意味着使用这些 API 的 Web 应用程序只能从加载应用程序的同一个域请求 HTTP 资源,除非响应报文包含了正确 CORS 响应头。
@>
@> 来源: 跨源资源共享(CORS) - HTTP | MDN

如何修复

如果你使用了支持修改返回头的CDN,你可以直接在CDN侧配置。
CDN侧添加如下四个返回头:

标头名称
Access-Control-Allow-Methods GET,POST,HEAD,OPTIONS
Access-Control-Allow-Origin *
Cross-Origin-Opener-Policy cross-origin
Cross-Origin-Resource-Policy cross-origin
如果你没有使用CDN,那么直接在Nginx配置文件中写规则即可。

使用 CloudFlare Workers 反向代理 Gravatar

前言

博主非常不建议用这种方法自建你的 Gravatar 源。因为 Cloudflare 由于被国内某些小脑萎缩群体用来搭建代理之后,连接延迟大大增加!

方法

科赋锐控制面板,找到左边菜单的Workers
依次点击创建应用程序 -> 创建Worker
随便写一个名称,然后部署。
编辑代码,替换成如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
addEventListener("fetch", event => {
let url = new URL(event.request.url);
url.hostname = "secure.gravatar.com";

let request = new Request(url, event.request);
event.respondWith(
fetch(request, {
headers: {
'Referer': 'https://secure.gravatar.com/',
'User-Agent': 'Cloudflare Workers'
}
})
);
});

大功告成!

在 Ubuntu 上部署你的灯塔系统

ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。 协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面。
这是一个非常棒的信息收集工具,特别是在挖掘src漏洞的时候,前期的信息收集,个人感觉这款系统效果显著。集成于web界面,指纹识别,fofa采集,敏感泄露,子域名,c段,截图等…各种功能。

官方给出的一键安装脚本只支持了 CentOS 为了保险起见我采用手动安装的方式。
那么开始吧!

安装 Docker

为了方便管理,还是使用 Docker 容器的方式来运行 ARL 比较好。
Docker 官方给出了自动安装的脚本,那么我们就不用手动配置了。

1
2
3
4
apt update
apt upgrade
curl -fsSL https://get.docker.com | bash -s docker
apt install docker-compose -y

使用以上命令,将会安装 Docker 与 Docker Compose。

安装 ARL

先下载好 ARL 的包:

1
2
3
4
5
mkdir -p docker_arl
cd docker_arl
wget https://github.com/TophantTechnology/ARL/releases/download/v2.6/docker.zip
unzip docker.zip
rm -rf docker.zip

修改一下配置文件,把该开的开开,并且解除对于某些网站的屏蔽。
改掉这段
继续安装。

1
2
docker volume create --name=arl_db
docker-compose up -d

至此,已成艺术安装成功。

完事之后别忘了添加下指纹。

1
2
3
git clone https://github.com/loecho-sec/ARL-Finger-ADD
cd ARL-Finger-ADD
python ARL-Finger-ADD.py https://127.0.0.1:5003/ admin arlpass

【瞎折腾】自建支持分线路解析的权威域名服务器

[post cid=”21” /]
接上文,使用 PowerDNS 搭建根服务器后,我又想尝试搭建权威域名服务器。

首先说一下我的观点:自建权威域名服务器犀利而无用。他要求高昂的成本但几乎没有回报。我的权威域名服务器是在两台我弃用的服务器上搭建的,因此可以无视成本。但我不建议各位这么做。

利用 PowerDNS 的 Lua 支持,我们可以轻松的搭建出一套支持分线路解析的 GeoDNS 服务器。
需要:

  • 一个 Maxmind 账户
  • 至少两台 VPS 服务器(目前域名服务商要求最少需要两个权威域名服务器)

配置地理信息库

  1. Maxmind 官网 获取账户的密钥,需要密钥来更新数据库。
  2. 安装geoipupdate 工具。
1
apt install geoipupdate
  1. 创建文件夹/etc/geoip,并修改/etc/GeoIP.conf
1
2
3
4
AccountID [账户编号]
LicenseKey [授权密钥]
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
DatabaseDirectory /etc/geoip
  1. 用 Cron 设置上自动更新:
1
2
3
crontab -e
# 加上一行:
0 0 * * 0 /usr/bin/geoipupdate
  1. 安装 GeoIP 后端
1
apt install -y pdns-backend-geoip
  1. 修改配置文件/etc/powerdns/pdns.conf
1
2
3
enable-lua-records=yes
launch=gmysql,geoip
geoip-database-files=/etc/geoip/GeoLite2-City.mmdb

配置 GeoDNS

在 PowerDNS Lua 中,用户的 IP 地址作为一个变量bestwho存在。不过如果用户的 DNS 服务器没有告知上游服务器用户的地址,那么bestwho就会指向 DNS 服务器的地址。
PowerDNS 提供了一个 lua 函数pickclosest,该函数从一个 IP 列表中选择离bestwho地理位置最近的服务器返回。
还有一个函数country,可以分辨国家。
两者的使用:

1
2
A "pickclosest({'1.1.1.1','8.8.8.8','114.114.114.114','223.5.5.5'})"
A ";if(country('CN')) then return '223.5.5.5' else return '1.1.1.1' end"
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×