附:完整笔记目录~
ps:本人小白,笔记均在个人理解基础上整理,若有错误欢迎指正!
1.1.3 Web额外配置
-
引子:本章主要介绍Web服务常用到的一些额外配置,如负载均衡、CDN、WAF等。个人觉得本章衔接于第一节后好一些,但迪总把其放在第三节讲,那就依迪总思路来吧。
-
负载均衡
- 概念:简单来说,负载均衡是将用户的请求分散到多个服务器上,这些服务器会部署相同业务系统并共享同一数据。由于这种设计,1. 可对服务器进行分流。2. 若某一服务器损坏并不影响业务系统的正常运行。
- 影响:用户对业务系统进行访问时,会依据配置访问不同的服务器,从而导致访问ip不唯一。
-
反向代理
- 概念:有反向代理那就一定会有正向代理,先介绍一下什么是正向代理吧。正向代理代表客户端向目标服务器发起请求,一般常用于访问客户端无法直接访问的资源,如梯子。而反向代理则代表服务端去处理来自客户端的请求,即与客户端交互的仅是反向代理而非后端Web服务器。
- 影响:用户访问带有反向代理服务的Web系统时,实际处理用户请求为反向代理ip。
-
CDN
-
概念:CDN(Content Delivery Network 内容分发网络),各地区都会有其自己CDN服务器,而CDN服务器会缓存配置了CDN服务Web系统的静态资源(HTML、CSS、图片、视频等)。当用户尝试访问配置CDN服务的Web时,会优先访问距离其最近的CDN服务器,由CDN服务器将内容返回给用户。
注:若用户存在交互行为,则仍由后端Web服务器处理而非CDN服务器。
-
影响:用户对开启CDN服务的Web进行访问时,实际处理用户请求ip为距离其最近的CDN服务器ip。
-
-
OSS
-
概念:OSS(Object Storage Service 对象存储服务),即云存储服务。传统存储服务由硬盘实现,数据存放于本地,而云存储服务则将数据存储于云服务商所提供云端。
-
影响:
用户向目标服务器上传文件,若其文件为脚本文件。传统存储服务会将脚本文件保存至其Web服务器上,由于服务器上配置了脚本解析环境,则当用户访问其上传文件时会默认解析该脚本。
而使用OSS,由于OSS仅提供存储服务,而无任何额外环境配置。当访问使用OSS存储的文件资源时,会默认下载该文件而非解析。众所周知,所有的后门文件只有当服务器解析后才能连接,而OSS服务则彻底杜绝了文件上传漏洞。更何况OSS存储的文件在云服务商而非目标服务器。
-
-
WAF
-
概念:WAF(Web Application Firewall Web应用防火墙),为保护Web应用程序设计的安全设备或服务,通过分析http/https流量检测并拦截来自用户/攻击者的恶意行为。
-
类别
-
硬件WAF:物理设备,支持串/并行部署。华为的硬件waf嘛,长的跟1u交换机挺像。
-
软件WAF:顾名思义,以软件形式部署。如雷池
-
云WAF:由云服务商所提供。如阿里云WAF。
注:所有类别WAF若想起到对Web攻击的防护作用,均需将WAF配置于Web服务前,由流量先经过WAF再转发给Web服务器,与用户进行直接交互的始终为WAF。
是不是感觉有些熟悉呢,没错,一般情况下,WAF均是作为反向代理接入整个网络中。
-
-
-
实验
-
实现内容
- 通过Nginx分别实现Web服务的负载均衡&反向代理。
- 使用Clouddreve分别配置本地存储&云存储服务。
- 为Webgoat靶场部署雷池WAF,并观察WAF的拦截效果。
-
通过Nginx分别实现Web服务的负载均衡&反向代理。
-
使用宝塔面板安装Nginx(宝塔安装见上一篇)
-
创建一个站点并为bilibili做反向代理
-
访问反向代理ip,并观察返回结果
-
实验一结束(ps:负载均衡没做出来,跟我没注册域名有关系吗?有会的师傅可以教教我?)
-
-
使用Clouddreve分别配置本地存储&云存储服务。
-
Clouddreve:云盘系统,既能将各种文件存于本地(Clouddreve uploads目录下),也能连接OSS将数据存储于云上。(项目地址:https://github.com/cloudreve/Cloudreve)
-
下载安装并打开Clouddreve管理面板(5212端口下)
-
默认本地存储,尝试上传图片
-
开通OSS服务,通过Cloudreve面板配置OSS。
-
再次上传文件
文件被上传至OSS
-
尝试对上传至OSS的文件进行访问
-
实验二结束
-
-
为Webgoat靶场部署雷池WAF,并观察WAF的拦截效果。
-
使用docker部署WebGoat
sudo apt update sudo apt install docker.io sudo systemctl start docker sudo docker pull webgoat/webgoat-8.0 sudo docker run -d -p 8080:8080 webgoat/webgoat-8.0 # 浏览器输入xxx.xxx.xxx.xxx:8080/WebGoat访问
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
部署雷池,并将WebGoat加入防护
# 一句话命令自动安装雷池 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)" # 注:由于该命令会再次安装docker及其组件,导致之前已经打开的WebGoat容器会被关闭,需重新打开。 # emmm...服务器要是已存在docker服务,为避免不必要的bug还是建议手动安装吧,可参考雷池官网。
- 1
- 2
- 3
- 4
-
尝试进行SQL注入攻击
攻击者页面
雷池运维者页面
-
实验三结束
-
-
评论记录:
回复评论: