第十七天:代理服务器-CDN-网络安全

第十七天:代理服务器-CDN-网络安全

代理服务器(Proxy Server)

image-20211016225647920

特点

  1. 本身不生产内容
  2. 处于中间位置转发上下游的请求和响应
    • 面向下游的客户端:它是服务器
    • 面向上游的服务器:它是客户端

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

image-20211016225941320

为客服端工作

作用

  • 隐藏客户端身份

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

    image-20211016230133955

  • Internet访问控制

    在路由器上设置,哪些能上网,哪些不能上网

  • 数据过滤

    由于都经过了代理服务器,所以他就可以过滤数据

一些免费的正向代理
https://ip.jiangxianli.com/
lhttps://www.kuaidaili.com/free/inha/

如何设置代理

1.打开设置找到Internet选项

image-20211016230918451

2.然后点击连接

image-20211016230935821

3.填写代理服务器的端口和ip

image-20211016231005826

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

image-20211016225949864

为服务端工作

作用

  • 隐藏服务器身份

  • 安全防护

  • 负载均衡

    image-20211016231213630

    就是本来只能访问一台服务器,现在我们搞个代理,就可以让这个代理通过算法来分发到相关的服务器进行数据处理

抓包工具

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

image-20211016231939649

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

代理服务器相关字段

Via:追加经过的每一台代理服务器的主机名(或域名)

X-Forwarded-For:追加请求方的IP地址

X-Real-IP:客户端的真实IP地址

  • 代理服务器完全可以加这个字段把客服端的真实IP加到这个里面去,告诉真实的服务器

image-20211017092534443

在1阶段,会有这些请求头

Forwarded-For: 14.14.14.14

追加上了请求方的真实IP

X-Real-IP: 14.14.14.14

客服端的真实IP

Via:proxy1

在2阶段,会有这些请求头

X-Forwarded-For: 14.14.14.14,220.11.11.11

X-Real-IP: 14.14.14.14
Via: proxy1, proxy2

在3阶段,会有这些请求头

Via: proxy2

在4阶段,会有这些请求头

Via: proxy2, proxy1

CDN

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

什么是cdn

其实就是一个缓存节点,如果你在渗透时进行对方的CDN节点,那你渗透只是对方的节点服务器,那你的渗透实际上是无效的,因为你并没有进入到对方服务器。

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN可以明显提高Internet网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问网站的响应速度。

image-20210815180621981

作用

  • 利用最靠近每位用户的服务器
  • 更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户

没有CDN的情况

image-20211017093639993

image-20211017093749797

我们请求网站时这样请求的

image-20211017094019624

通过DNS服务器拿到IP,然后再用IP去访问网站服务器

有CDN的情况

image-20211017093607972

image-20211017093758401

很明显的就能看到,如果存在CDN服务器,我们就能更快速的获得资源,提高访问速度

CDN运营商在全国、乃至全球的各个大枢纽城市都建立了机房
部署了大量拥有高存储高带宽的节点,构建了一个跨运营商、跨地域的专用网络
内容所有者向CDN运营商支付费用,CDN将其内容交付给最终用户

具体的网站访问流程是这样的

image-20211017094143896

当用户请求某网站时,首先根据域名去DNS服务器寻找IP,但是DNS服务器发现这个域名存在CDN服务器,所以DNS就去请求专门的CDN DNS服务器,然后把IP返回给客服端,然后客服端根据IP地址,去请求CDN全局负载均衡服务器,然后再返回给客服端,客服端拿这个最终的IP地址去访问服务器,获得资源

image-20211017094715670

整个流程图

image-20211017094958109

例子

通过CDN访问jQuery

//jQuery官网
<script
  src="http://code.jquery.com/jquery-1.12.4.min.js"
  integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
  crossorigin="anonymous">
</script>

//bootCDN
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>


通过CDN可以快速得获取数据

网络安全

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

image-20211017095411595

截获:窃听通信内容

中断:中断网络通信

篡改:篡改通信内容

伪造:伪造通信内容

网络层-ARP欺骗

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

  • ARP欺骗可以造成的效果

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

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

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

ARP欺骗步骤

ARP欺骗的原理:
ARP欺骗包是通过一个恶毒的程序自动发送的,正常的TCP/IP网络是不会有这样的错误包发送的,而人工发送又比较麻烦。也就是说当***没有运行这个恶毒程序的话,网络上通信应该是一切正常的,保留在各个连接网络计算机上的ARP缓存表也应该是正确的,只有程序启动开始发送错误ARP信息以及ARP欺骗包时才会让某些计算机访问网络出现问题。

欺骗步骤举例如下:
Step1:假设一个交换机连接了3台机器,依次是服务器A,B,C。
A服务器:IP的地址为:192.168.1.1 MAC: AA-AA-AA-AA-AA-AA
B服务器:IP的地址为:192.168.1.2 MAC: BB-BB-BB-BB-BB-BB
C服务器:IP的地址为:192.168.1.3 MAC: CC-CC-CC-CC-CC-CC

Step2:正常情况下在A服务器上运行ARP -A查询ARP缓存表应该出现如下信息。
Interface: 192.168.1.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.1.3 CC-CC-CC-CC-CC-CC dynamic

Step3:在B服务器上运行ARP欺骗程序,来发送ARP欺骗包。
B向A发送一个由B自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.1.3(C的IP地址),MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A不知道被伪造了)。而且A不知道其实是从B发送过来的,A这里只192.168.1.3(C的IP地址)和无效的DD-DD-DD-DD-DD-DD mac地址。
Step4:欺骗完毕后在A服务器上运行cmd 窗口中输入“arp -a”来查询ARP缓存信息。你会发现原来正确的信息现在已经出现了错误。
Interface: 192.168.1.1 on Interface 0x1000003 Internet Address Physical Address Type 192.168.1.3 DD-DD-DD-DD-DD-DD dynamic

从上面的介绍可以清楚的明白网络中传输数据包最后都是要根据MAC地址信息的,也就是说虽然网络日常通讯都是通过IP地址,但是最后还是需要通过ARP协议进行地址转换,将IP地址变为MAC地址。而上面例子中在A服务器上的关于C服务器的MAC地址已经错误了,所以即使以后从A服务器访问C服务器这个192.168.1.3这个地址也会被ARP协议错误的解析成MAC地址为DD-DD-DD-DD-DD-DD的。

问题也会随着ARP欺骗包针对网关而变本加厉,当网络中一台服务器,反复向其他服务器,特别是向网关,发送这样无效假冒的ARP应答信息包时,严重的网络堵塞就会开始。由于网关MAC地址错误,所以从网络中计算机发来的数据无法正常发到网关,自然无法正常上网。这就造成了无法访问外网的问题,另外由于很多时候网关还控制着我们的局域网LAN上网,所以这时我们的LAN访问也就出现问题了。
防护方法

静态ARP
DHCP Snooping
网络设备可借由DHCP保留网络上各电脑的MAC地址,在伪造的ARP数据包发出时即可侦测到
利用一些软件监听ARP的不正常变动

Dos、DDos

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

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

    image-20211017101059002

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

  • 黑客使用网络上两个或以上被攻陷的电脑作

  • 为“僵尸”向特定的目标发动DoS攻击2018年3月,GitHub遭到迄今为止规模最大的DDoS攻击

    image-20211017101156244

DOS攻击分类

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

  • 每个带宽都是有限的,不断的发送数据包,占满你的带宽

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

  • SYN洪水攻击(SYN flooding attack)

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

    攻击方法

    • 跳过发送最后的ACK信息
    • 修改源IP地址,让目标送SYN-ACK到伪造的IP地址,因此目标永不可能收到ACK(第3次握手)
  • LAND攻击(局域网拒绝服务攻击,Local Area Network Denial attack)

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

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

    防护

    大多数防火墙都能兰截类似的攻击包,以保护系统部分操作系统通过发布安全补丁修复了这一漏洞
    路由器应同时配置上行与下行筛选器,屏蔽所有源地址与目标地址相同的数据包

DOS、DDoS防御

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

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

防火墙

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

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

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

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

黑洞引导

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

流量清洗

  • 当流量被送到DDoS防护清洗中心时,通过采用抗DDoS软件处理,将正常流量和恶意流量区分开
  • 正常的流量则回注回客户网站
应用层-DNS劫持

DNS劫持,又称为域名劫持

  • 攻击者篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP
  • 导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址
  • 从而实现非法窃取用户信息或者破坏正常网络服务的目的

比如说你打开的是百度,结果给你跳转到了一个赌博网站,这就是DNS劫持

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

比如:114.114.114.114

谷歌: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协议默认是采取明文传输的,因此会有很大的安全隐患
常见的提高安全性的方法是:对通信内容进行加密后,再进行传输

常见的加密方式

相关单词

encrypy:加密

derypt:解密

plaintext:明文

ciphertext:密文

不可逆

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

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

    image-20211017104047595

    特点

    ​ 根据任意长度的消息,计算出固定长度的散列值计算速度快,能快速计算出散列值
    消息不同,散列值也不同
    具备单向性

    哪怕只有一个字不一样,也会完全不一样

    应用

    ​ 防止数据被篡改,判断今天的文件和昨天的文件是否一致

    image-20211017104846990

在实际生活中,当我们的密码忘记了,也只能采取密码重置的功能,因为都是采取不可逆加密,所以服务器也帮不到你

image-20211017105341808

可逆

  • 对称加密:DES、3DES、AES等
  • 非对称加密:RSA等

其它

  • 混合密码系统

  • 数字签名

  • 证书

须知

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

Alice、Bob:互相通信
Eve:窃听者
lMallory:主动攻击者

image-20211017103803724

image-20211017103819313

如防止被窃听

image-20211017103853618

在传输之前先加密,加密了在传输,窃听者只能得到密文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现甘特图,需要使用Echarts的Gantt模块。首先,需要引入Echarts和Gantt模块的JS文件,在HTML中建立一个容器用于渲染图表。然后,需要定义一个包含任务信息的JSON数据,例如funListT07。最后,使用Echarts的API绘制甘特图,可以参考以下代码: ``` // 引入Echarts和Gantt模块 <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/gantt.min.js"></script> // 在HTML中建立容器 <div id="container" style="height:600px;"></div> // 定义任务信息的JSON数据 var data = [ { id: 1, name: "零部件01", start: "2022-01-01", end: "2022-01-05", }, { id: 2, name: "零部件02", start: "2022-01-03", end: "2022-01-08", }, { id: 3, name: "零部件03", start: "2022-01-06", end: "2022-01-10", }, { id: 4, name: "零部件04", start: "2022-01-02", end: "2022-01-09", }, { id: 5, name: "零部件05", start: "2022-01-05", end: "2022-01-10", }, { id: 6, name: "零部件06", start: "2022-01-06", end: "2022-01-12", }, { id: 7, name: "零部件07", start: "2022-01-03", end: "2022-01-10", }, ]; // 绘制甘特图 var chart = echarts.init(document.getElementById('container')); var option = { tooltip: {}, legend: { data: ['任务'], textStyle: { fontSize: 14, }, }, grid: { top: '10%', bottom: '10%', }, xAxis: { type: 'time', splitLine: { show: false, }, }, yAxis: { type: 'category', data: data.map(function (item) { return item.name; }), splitLine: { show: false, }, }, series: [ { name: '任务', type: 'gantt', data: data.map(function (item) { return { name: item.name, value: [ item.start, item.end, item.id, ], }; }), label: { position: 'inside', formatter: function (params) { return params.name; }, }, }, ], }; chart.setOption(option); ``` 以上代码就可以绘制出funListT07的甘特图了。需要注意的是,数据中的日期格式必须为"yyyy-MM-dd",并且时间轴的类型必须为"time"。同时,还可以根据需要进行其他的样式和配置调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值