17.代理_CDN_网络安全

代理服务器(Proxy Server)

类似于房产中介,因为我们有时候无法直接找到服务器,就好比我们无法一下子找到房东,所以我们要借代理服务器来找到我们想要的服务器(就好比上外网(google.com))

◼ 特点
本身不生产内容
处于中间位置转发上下游的请求和响应
✓ 面向下游的客户端:它是服务器
✓ 面向上游的服务器:它是客户端

在这里插入图片描述

正向代理、反向代理

◼ 正向代理:代理的对象是客户端

在这里插入图片描述

我ABC客户端找到你,让你代理服务器帮我干一件事情

◼ 反向代理:代理的对象是服务器

在这里插入图片描述

选择访问哪一个服务器,帮服务器干事情,为服务器提供负载均衡的能力

正向代理—作用

◼ 隐藏客户端身份(防止公网IP地址泄露)

◼ 绕过防火墙(突破访问限制)

在这里插入图片描述

◼ Internet访问控制

在路由器上面设置只有代理服务器可以上网,在来由代理服务器来选择谁可以上网

在这里插入图片描述

◼ 数据过滤

可以对请求和响应进行过滤,发现外网传回来了黄色的信息,就把它过滤掉,通过我这台代理服务器上的网都是健康的

◼ …

◼ 一些免费的正向代理

https://ip.jiangxianli.com/

https://www.kuaidaili.com/free/inha/

可以设置整台电脑的代理

反向代理—作用

◼ 隐藏服务器身份

◼ 安全防护

用了代理服务器,客户端就无法直接访问Web服务器集群,Web服务器集群不对外公开了,客户端只能访问代理服务器

相对来说安全了一点

◼ 负载均衡

在这里插入图片描述

突然之间涌入大量数据包,服务器会受不了宕机,因为服务器除了要处理客户端发过来的数据,还要运行业务,做各种算法处理

代理服务器只负责转发,利用负载均衡算法来决定把服务器转发给那台服务器,根本就不用运行业务,压力没有那么大

负载:服务器能够承受多少容量

均衡:大家平摊一点

大量的运算在Web服务器集群上,做各种算法运算,IO处理,耗时运算

抓包工具的原理

可以通过代理服务器实现抓包功能

◼ Fiddler、Charles等抓包工具的原理:在客户端启动了正向代理服务

改了客户端的代理,以后我们上网都要经过这两个工具

在这里插入图片描述

代理服务器就是代理上下游的响应,上下游都得穿过它

◼ 需要注意的是

Wireshark的原理是:通过底层驱动,拦截网卡上流过的数据

底层:操作系统、网卡

代理服务器—相关的头部字段

◼ Via:追加经过的每一台代理服务器的主机名(或域名)//不是IP,这里是一个名字

◼ X-Forwarded-For:追加请求方的IP地址(下一级的IP地址,有多少个下级IP就写多少)

◼ X-Real-IP:客户端的真实IP地址(公网IP地址,就一台,不会变的)

在这里插入图片描述

◼ ①

X-Forwarded-For: 14.14.14.14

X-Real-IP: 14.14.14.14

Via: proxy1

◼ ②

X-Forwarded-For: 14.14.14.14, 220.11.11.11

X-Real-IP: 14.14.14.14

Via: proxy1, proxy2

◼ ③

服务器的IP是隐藏的

Via: proxy2

◼ ④

Via: proxy2, proxy1

①、②是请求头,③、④是响应头

CDN

◼ CDN(Content Delivery Network或Content Dstribution Network),译为:内容分发网络

利用最靠近每位用户的服务器

更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户(动态资源也可以,不过这又是另外一回事)

在这里插入图片描述

经过的路由器越多,网速就越慢,所以采用了CDN技术

CDN—使用CDN前后

在这里插入图片描述

使用CDN前,所有的用户都从这台服务主机下载资源,就会负载过重

使用CDN后,所有的用户都从最近的CDN节点服务器下载资源,服务主机可以正常工作(镜像站点)

◼ CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房

部署了大量拥有高存储高带宽的节点,构建了一个跨运营商、跨地域的专用网络

跨运营商:不管你是什么ISP,都支持

专用网络:CDN之间是相连的,资源共享

◼ 内容所有者向CDN运营商支付费用,CDN将其内容交付给最终用户

内容所有者:这台服务器的主人

CDN—使用CDN前

在这里插入图片描述

输入域名,发送请求访问DNS服务器拿到IP地址,然后根据IP地址请求到对应的网站服务器

CDN—使用CDN后

在这里插入图片描述

输入特殊的域名,发起请求去访问DNS服务器,DNS服务器发现你这个域名比较特殊,我没办法给你IP地址,因为这个域名对应着CDN相关的服务器,他就会把这个请求发给CDN DNS服务器,CDN DNS服务器返回对应的IP地址给客户端,这个IP地址是CDN全局负载均衡系统,客户端根据IP地址去请求CDN全局负载均衡系统,CDN全局负载均衡系统根据客户端的请求,分析出它的地理位置,给它一个离它最近的CDN节点,这个时候客户端就会访问到最近的节点,从这个节点上去拿数据

在这里插入图片描述

CDN边缘节点:离客户端最近的节点

有很多层,这里只列出了两层,越往下节点越多

接入网类型:是什么ISP

CDN边缘节点有可能没有内容,没有内容会向上一层节点要内容

CDN边缘节点为周边用户服务的,周边用户服务想访问的内容有可能是类似的,所以它不会去缓存所有的内容

所有的CDN节点都没有内容了,才会去向源站发起请求

利用算法来返回离用户最近的CDN节点

CDN—使用举例
◼ 使用cdn引入jquery

在这里插入图片描述

只是刚好网站域名带有CDN字样,不是说访问CDN服务器的域名都得带有CDN字样,碰巧而已

jqueryCDN网站:https://www.bootcdn.cn/jquery/

vueCDN网站:https://www.bootcdn.cn/vue/

网络通信中面临的4种安全威胁

◼ 截获:窃听通信内容

拦下来,看一下在发过去

◼ 中断:中断网络通信

◼ 篡改:篡改通信内容

◼ 伪造:伪造通信内容

我根本就没有发消息给你,但有人伪装成是我发的

在这里插入图片描述

网络层—ARP欺骗

◼ ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning)、ARP病毒、ARP攻击

◼ ARP欺骗可以造成的效果

可让攻击者获取局域网上的数据包甚至可篡改数据包

可让网络上特定电脑之间无法正常通信(例如网络执法官这样的软件)

在这里插入图片描述

如何来控制谁跟谁可以通信

PC机会在同网段内发送ARP广播,网络执法官通过接收ARP广播来获取各pc机的MAC地址,

执法官给A发送ARP请求,源IP是C的IP地址,源MAC地址却是不存在的,A更新自己的MAC地址表,当A想给C发送数据时,会发往一个不存在的地方,A跟C之间将无法通信

让送至特定IP地址的流量被错误送到攻击者所取代的地方

在这里插入图片描述

因为A的MAC地址表里的B的MAC地址被改成其它的,A本来想发送给B的,却错误的发送到了其它地方

…

ARP欺骗—核心步骤举例

◼ 假设主机C是攻击者,主机A、B是被攻击者

C只要收到过A、B发送的ARP请求,就会拥有A、B的IP、MAC地址,就可以进行欺骗活动

ARP请求是广播包,只要是同一个网段的都可以收到

C发送一个ARP响应给B,把响应包里的源IP设为A的IP地址,源MAC设为C的MAC地址

B收到ARP响应后,更新它的ARP表,把A的MAC地址(IP_A, MAC_A)改为(IP_A, MAC_C)

当B要发送数据包给A时,它根据ARP表来封装数据包的头部,把目标MAC地址设为MAC_C,而非MAC_A

当交换机收到B发送给A的数据包时,根据此包的目标MAC地址(MAC_C)而把数据包转发给C

C收到数据包后,可以把它存起来后再发送给A,达到窃听效果。C也可以篡改数据后才发送数据包给A

ARP欺骗—防护

像一些360软件就可以做到

◼ 静态ARP

动态ARP会更新MAC地址表,而静态不会,有效的防止了ARP欺骗

◼ DHCP Snooping

网络设备可借由DHCP保留网络上各电脑的MAC地址,在伪造的ARP数据包发出时即可侦测到

DHCP是负责自动分配IP地址的地方,它知道每台PC机的IP地址和其对应的MAC地址

◼ 利用一些软件监听ARP的不正常变动

◼ …

网络安全的问题,针对不同端的,有不同端的问题

DoS、DDoS

◼ DoS攻击(拒绝服务攻击,Denial-of-Service attack)

使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问

把你的电脑搞崩,把你的服务器搞崩,用户访问的时候提供不了服务

◼ DDoS攻击(分布式拒绝服务攻击,Distributed Denial-of-Service attack)

黑客使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动DoS攻击

僵尸:又叫肉鸡

在网络上找存在漏洞的主机,(主要是服务器,因为它们的IP是公网IP)利用它们的漏洞,获取它们的权限,命令让它们向目标发起DOS攻击

在这里插入图片描述

2018年3月,GitHub遭到迄今为止规模最大的DDoS攻击

◼ DoS攻击可以分为2大类(这里只举出了几种,还有好几种没列出来)

带宽消耗型:UDP洪水攻击、ICMP洪水攻击

占满你的网络带宽,不断的发送数据包过去,这样子用户正常的数据就无法通过

资源消耗型:SYN洪水攻击、LAND攻击

消耗主机上的资源,都是针对TCP三次握手而展开的攻击

DoS、DDoS防御

◼ 防御方式通常为:入侵检测、流量过滤、和多重验证

堵塞网络带宽的流量将被过滤,而正常的流量可正常通过

防火墙

防火墙可以设置规则,例如允许或拒绝特定通讯协议,端口或IP地址

例如我只允许80端口的数据过来

当攻击从少数不正常的IP地址发出时,可以简单的使用拒绝规则阻止一切从攻击源IP发出的通信

设置这个IP数据不准过来

复杂攻击难以用简单规则来阻止,例如80端口遭受攻击时不可能拒绝端口所有的通信,因为同时会阻止合法流量

很多协议走的是80端口,例如HTTP协议

防火墙可能处于网络架构中过后的位置,路由器可能在恶意流量到达防火墙前即被攻击影响

防火墙一般在路由器后面

在这里插入图片描述

交换机:大多数交换机有一定的速度限制和访问控制能力

路由器:和交换机类似,路由器也有一定的速度限制和访问控制能力

黑洞引导

将所有受攻击计算机的通信全部发送至一个“黑洞”(空接口或不存在的计算机地址)或者有足够能力处理洪流的网络设备商,以避免网络受到较大影响

流量清洗

当流量被送到DDoS防护清洗中心时,通过采用抗DDoS软件处理,将正常流量和恶意流量区分开

正常的流量则回注回客户网站

阿里云、腾讯云有DDoS防御套餐,只不过你要出点钱

传输层—SYN洪水攻击

◼ SYN洪水攻击(SYN flooding attack)

攻击者发送一系列的SYN请求到目标,然后让目标因收不到ACK(第3次握手)而进行等待、消耗资源

不让主机建立连接,让主机一直处于等待状态,消耗资源

◼ 攻击方法

跳过发送最后的ACK信息

用一些手段是可以做到的

修改源IP地址,让目标发送SYN-ACK到伪造的IP地址,因此目标永不可能收到ACK(第3次握手)

在这里插入图片描述
攻击者发送的ACK请求当中源IP是不存在的

◼ 防护

参考:RFC 4987

传输层—LAND攻击

◼ LAND攻击(局域网拒绝服务攻击,Local Area Network Denial attack)

通过持续发送相同源地址和目标地址的欺骗数据包,使目标试图与自己建立连接,消耗系统资源直至崩溃

主机跟自己建立连接之后,属于空连接,中间就不会再有数据包了

在这里插入图片描述

◼ 有些系统存在设计上的缺陷,允许设备接受并响应来自网络、却宣称来自于设备自身的数据包,导致循环应答

◼ 防护

大多数防火墙都能拦截类似的攻击包,以保护系统

部分操作系统通过发布安全补丁修复了这一漏洞

路由器应同时配置上行与下行筛选器,屏蔽所有源地址与目标地址相同的数据包

应用层—DNS劫持

◼ DNS劫持,又称为域名劫持

一开始输入域名,我们会先向DNS服务器要IP地址,然后在去访问网站

攻击者篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP

输入的是百度域名,打开的却是赌博网站

导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址

在这里插入图片描述

黑客把DNS服务器域名对应的IP地址改掉

从而实现非法窃取用户信息或者破坏正常网络服务的目的

在这里插入图片描述

通过DNS劫持的方式,让用户访问我假冒的网站,网站内容与真实的毫无差别,用户在我网站登录,从而获取用户信息

◼ 为防止DNS劫持,可以考虑使用更靠谱的DNS服务器,比如:114.114.114.114

域名:https://www.114dns.com/

可以在IP设置那边改

谷歌:8.8.8.8、8.8.4.4

微软:4.2.2.1、4.2.2.2

百度:180.76.76.76

阿里:223.5.5.5、223.6.6.6

◼ HTTP劫持:对HTTP数据包进行拦截处理,比如插入JS代码

在这里插入图片描述

比如你访问某些网站时,在右下角多了个莫名其妙的弹窗广告,或者点了个按钮,到了其它地方的网站

网站本身自己就有的弹窗不算

HTTP协议的安全问题

◼ HTTP协议默认是采取明文传输的,因此会有很大的安全隐患

在这里插入图片描述

传输的数据一目了然

常见的提高安全性的方法是:对通信内容进行加密后,再进行传输

就算黑客拿到了,也不知道我这个是什么

◼ 常见的加密方式有

不可逆

✓ 单向散列函数:MD5、SHA等

可逆

✓ 对称加密:DES、3DES、AES等

✓ 非对称加密:RSA等

其它

✓ 混合密码系统

✓ 数字签名

✓ 证书

常见英文

◼ encrypt:加密

◼decrypt :解密

◼plaintaxt :明文

◼ciphertext:密文

学前须知

◼ 为了便于学习,设计4个虚拟人物

Alice、Bob:互相通信

Eve:窃听者

Mallory:主动攻击者

在这里插入图片描述

在这里插入图片描述

如何防止被窃听?

在这里插入图片描述

单向散列函数—几个网站

◼MD5加密

https://www.cmd5.com/hash.aspx

◼MD5解密

https://www.cmd5.com/

暴力破解,通过枚举的方式

密码越奇怪越好,越复杂越好

◼ 其它加密

https://www.sojson.com/encrypt_des.html

https://tool.chinaz.com/tools/md5.aspx

单向散列函数

◼ 单向散列函数,可以根据根据消息内容计算出散列值

◼ 散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值

在这里插入图片描述

单向散列函数—特点

◼ 根据任意长度的消息,计算出固定长度的散列值

◼ 计算速度快,能快速计算出散列值

◼ 消息不同,散列值也不同

◼ 具备单向性

在这里插入图片描述

不可逆

在这里插入图片描述

拿到两段散列值,我们无法知道它们之前是有多么的相似

单向散列函数—称呼

◼ 单向散列函数,也被称为

消息摘要函数(message digest function)

把很长的数据,加密成一小段数据,有点像是对一篇文章进行了提取和总结

哈希函数(hash function)

输出的函数像hash值

◼ 输出的散列值,也被称为

消息摘要(message digest)

指纹(fingerprint)

做为你的标识,不是很像指纹吗

单向散列函数—常见的几种单向散列函数

◼MD4、MD5

产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全

是不是加密,要看你怎么看,没有必要揪着是摘要还是加密不放

但是你密码复杂一点还是可以用的

◼SHA-1

产生160bit的散列值

撒盐可以增强我的密码性,

◼SHA-2

 SHA-256、SHA-384、SHA-512 ,散列值长度分别是256bit、384bit、512bit

除以8就知道占了多少字节

◼SHA-3

全新标准

单向散列函数—如何防止数据被篡改

在这里插入图片描述

一个个去比对太麻烦了

单向散列函数—应用:防止数据被篡改

在这里插入图片描述

可以通过单向散列函数来却确定值是否被改变

在官网拿到的散列值,和我从镜像站点拿到的散列值进行比对,来核验数据是否被篡改了

单向散列函数—应用:密码加密

在这里插入图片描述

登录时拿请求的密码MD5值和数据库当中的MD5值进行比较,一样就登录成功

数据库当中的密码都是搞密文,搞明文,可就把用户给坑惨了

用户不会去要旧密码,没有这个需求,所以用不可逆加密是没有问题的

现在用户忘记密码,都是重置密码

状态码和错误代号冲突了怎么办

在这里插入图片描述

需要前后端约定好,虽说状态码和错误代号都是由服务器发过来的

是通过响应体JS来判断,状态行来判断,完全由你们公司开发来决定

猜你喜欢

转载自blog.csdn.net/m0_53008479/article/details/121048459