网络安全基本知识

网络安全基本知识

一、IP

1. 概念

IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。

现在使用的 IP 地址主要为:IPV4 和 IPV6。

2. IPv4协议

IPv4 协议以 4字节,32比特表示,每个字节之间用 “.” 号分割,例如:“192.0.2.235”。

IPv4 可用地址仅为 4,294,967,296个。2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商。

3. IPv6协议

IPv6 协议以 128比特表示,每个字节之间用 “:” 号分割,例如:“2031:0000:1F1F:0000:0000:0100:11A0:ADDF”。IPv6 可用地址有 2^128个。

二、域名

1. 概念

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。

2. 作用

由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

3. 购买

域名可用在域名提供商那里购买注册,例如腾讯云阿里云等。

4. 备案

根据 《互联网信息服务管理办法》 以及 《非经营性互联网信息服务备案管理办法》 ,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度。未取得许可或者未履行备案手续的,不得从事互联网信息服务。即所有对中国大陆提供服务的网站都必须先进行 ICP 备案,才可开通服务。

通俗点儿讲所谓的“备案”类似于我们国人现实生活中的“上户口”,需要提供的信息有:姓名、家庭住址(域名)、父母(网站所有人)、联系方式等等。

5. 二级域名与多级域名

一级域名,是由一个合法的字符串+域名后缀组成,例如:baidu.com 就是一级域名;

二级域名:二级域名是在一级域名前面加上一个字符串,例如:baike.baidu.com;

多级域名:多级域名就是在一级域名前加上多个字符串组成。

三、DNS

1. 概念

域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

国内常用 DNS:114 DNS阿里DNS百度DNS360 DNSGoogle DNS

2. 本地 hosts 文件

hosts 文件是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”。

当用户访问某个域名时,系统会首先自动从 hosts 文件中寻找对应的 IP地址。如果找到,系统会根据找到的 IP进行服务器的访问,如果没有找到,则系统会再将网址提交 DNS域名解析服务器进行IP地址的解析。

在 Windows系统中,hosts 文件路径为:C:\windows\system32\drivers\etc\hosts 目录下;在Linux 系统中,hosts 文件路径为:/etc/hosts

3. A记录和CNAME

A 记录

A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的网页服务器(web server)上。同时也可以设置域名的子域名。

CNAME

CNAME 被称为规范名字,也称别名记录。当需要将多个域名需要指向同一服务器IP时,此时我们就可以将一个域名做 A记录指向服务器IP,然后将其他的域名做别名(即CNAME)到A记录的域名上。这样用户就可以在访问不同域名时访问到同一个服务。

4. 常见 DNS 攻击

域名劫持

通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容。

缓存投毒

利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上。

DNS劫持

DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。

DNS DDoS攻击

通过控制大批僵尸网络利用真实DNS协议栈发起大量域名查询请求,利用工具软件伪造源IP发送海量DNS查询,发送海量DNS查询报文导致网络带宽耗尽而无法传送正常DNS查询请求。

四、CDN

1. 概念

CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。

简单来说,CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求(类似于京东这样电商的本地仓库)。

2. CDN的实现

网站运行商在 CDN运营商那里购买 CDN服务时,会得到一个专有的 CDN加速 DNS 服务器地址,网站运营商将自己的域名解析到这个专有 DNS 服务器上。

当用户请求目标网站时,本地 DNS 会返回专有 DNS服务器的地址,域名解析服务交给这个专有 DNS 服务器。CDN 运营商的专有 DNS 服务器会根据用户的 IP 地址得到用户所在的地理位置,再返回距离用户最近的 CDN服务器的地址。于是用户就会去返回的这个 CDN 服务器请求资源,从而实现用户访问的加速。

3. CDN 检测

由于CDN 的机制,会对我们进行渗透测试时造成困难。因此检测网站是否使用了 CDN对我们而言是一件十分重要的事情。

根据 CDN的原理,我们可以在不同地区访问网站,看看解析得到的IP是否是同一个,如果不是,那么该网站就可能使用了 CDN服务。

我们可以通过各种在线服务平台对网站进行CDN检测,例如:Ping.cn-全国多地区网络节点在线ping检测平台等。

五、URL + URN = URI

1. 概念

URL = Uniform Resource Locator 统一资源定位符,一种定位资源的主要访问机制的字符串;

URN = Uniform Resource Name 统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源;

URI = Uniform Resource Identifier 统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。

2. 三者之间的区别

URL

标准格式:

protocol 😕/ hostname[:port] / path / [;parameters][?query]#fragment

  • **protocol:**协议;
  • **hostname:**主机名;
  • **port:**端口;
  • **path:**路径;
  • **parameters:**参数;
  • query:查询;
  • **fragment:**参数片段。

举例:

http://127.0.0.1:8000/file/1.txt

URI

标准格式:

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

  • **user:**用户信息

举例:

                hierarchical part
                ┌───────────────────┴─────────────────────┐
                authority               path
                ┌───────────────┴───────────────┐┌───┴────┐
                abc://username:password@example.com:123/path/data?key=value&key2=value2#fragid1
                └┬┘   └───────┬───────┘ └────┬────┘ └┬┘           └─────────┬─────────┘ └──┬──┘
                scheme  user information     host     port                  query         fragment
URN

举例:

urn:example:mammal:monotreme:echidna
└┬┘ └──────────────┬───────────────┘
scheme path

六、HTTP

1. 概念

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出。

2. 简介

  • 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应
  • 现在主要应用 http1.1 协议
  • http是无状态协议,不会保存多次请求之间的关系,使用cookie做状态管理
  • 持久连接节省通信量(HTTP1.1和部分HTTP1.0)
  • 通过请求方法告知服务器意图,get,post

3. HTTP 请求

请求报文

HTTP 的请求报文包含三个部分:请求行 + 请求头 + 数据体。请求头与数据体之间由空行隔开,每一个请求头之间需要换行。

通过浏览器的 Network 选项,我们可以看到我们在请求网站时发送的 HTTP 请求头的内容:

GET / HTTP/1.1
Host: www.example.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6

HTTP 请求报文的请求首行由:请求方式 + 请求地址 + 请求协议组成。

HTTP的头信息包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成:

  • 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联;
  • 请求头标:允许客户端传递关于自身的信息和希望的响应形式;
  • 响应头标:服务器和于传递自身信息的响应;
  • 实体头标:定义被传送资源的信息。即可用于请求,也可用于响应;
HTTP 请求方法
序号方法描述
1GET请求指定的页面信息,并返回实体主体;
2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头;编写扫描工具时使用这个方法效率最高。
3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改;
4PUT从客户端向服务器传送的数据取代指定的文档的内容;
5DELETE请求服务器删除指定的页面;
6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器;
7OPTIONS允许客户端查看服务器的性能;
8TRACE回显服务器收到的请求,主要用于测试或诊断;
9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。
HTTP 请求头
Header解释示例
Accept指定客户端能够接收的内容类型Accept: text/plain, text/html
Accept-Charset浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzip
Accept-Language浏览器可接受的语言Accept-Language: en,zh
Accept-Ranges可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
AuthorizationHTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cache
Connection表示是否需要持久连接。(HTTP 1.1默认进行持久连接)Connection: close
CookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。Cookie: $Version=1; Skin=new;
Content-Length请求的内容长度Content-Length: 348
Content-Type请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencoded
Date请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect请求的特定的服务器行为Expect: 100-continue
From发出请求的用户的EmailFrom: user@email.com
Host指定请求的服务器的域名和端口号Host: www.zcmhi.com
If-Match只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为EtagIf-Range: “737060cd8c284d8af7ad3082f209582d”
If-Unmodified-Since只在实体在指定时间之后未被修改才请求成功If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards限制信息通过代理和网关传送的时间Max-Forwards: 10
Pragma用来包含实现特定的指令Pragma: no-cache
Proxy-Authorization连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range只请求实体的一部分,指定范围Range: bytes=500-999
Referer先前网页的地址,当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives/71.html
TE客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息TE: trailers,deflate;q=0.5
Upgrade向服务器指定某种传输协议以便服务器进行转换(如果支持)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-AgentUser-Agent的内容包含发出请求的用户信息User-Agent: Mozilla/5.0 (Linux; X11)
Via通知中间网关或代理服务器地址,通信协议Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning关于消息实体的警告信息Warn: 199 Miscellaneous warning

3. HTTP 响应

响应报文与请求报文一样,由三个部分组成(响应行,响应头,响应体)。响应头与响应体之间由空行隔开,每一个请求头之间需要换行。

浏览器捕捉到的响应头:

HTTP/1.1 200 OK
Content-Encoding: gzip
Age: 170477
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Sat, 01 May 2021 12:58:12 GMT
Etag: "3147526947+ident+gzip"
Expires: Sat, 08 May 2021 12:58:12 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: ECS (sab/5695)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 648
HTTP 响应码
分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误
HTTP 响应头
响应头说明示例
Access-Control-Allow-Origin指定哪些网站可以跨域源资源共享Access-Control-Allow-Origin: *
Accept-Patch指定服务器所支持的文档补丁格式Accept-Patch: text/example;charset=utf-8
Accept-Ranges服务器所支持的内容范围Accept-Ranges: bytes
Age响应对象在代理缓存中存在的时间,以秒为单位Age: 12
Allow对于特定资源的有效动作;Allow: GET, HEAD
Cache-Control通知从服务器到客户端内的所有缓存机制,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒Cache-Control: max-age=3600
Connection针对该连接所预期的选项Connection: close
Content-Disposition对已知MIME类型资源的描述,浏览器可以根据这个响应头决定是对返回资源的动作,如:将其下载或是打开。Content-Disposition: attachment; filename=“fname.ext”
Content-Encoding响应资源所使用的编码类型。Content-Encoding: gzip
Content-Language响就内容所使用的语言Content-Language: zh-cn
Content-Length响应消息体的长度,用8进制字节表示Content-Length: 348
Content-Location所返回的数据的一个候选位置Content-Location: /index.htm
Content-MD5响应内容的二进制 MD5 散列值,以 Base64 方式编码Content-MD5: IDK0iSsgSW50ZWd0DiJUi==
Content-Range如果是响应部分消息,表示属于完整消息的哪个部分Content-Range: bytes 21010-47021/47022
Content-Type当前内容的MIME类型Content-Type: text/html; charset=utf-8
Date此条消息被发送时的日期和时间(以RFC 7231中定义的"HTTP日期"格式来表示)Date: Tue, 15 Nov 1994 08:12:31 GMT
ETag对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列ETag: “737060cd8c284d8af7ad3082f209582d”
Expires指定一个日期/时间,超过该时间则认为此回应已经过期Expires: Thu, 01 Dec 1994 16:00:00 GMT
Last-Modified所请求的对象的最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT
Link用来表示与另一个资源之间的类型关系,此类型关系是在RFC 5988中定义Link:; rel=“alternate”
Location用于在进行重定向,或在创建了某个新资源时使用。Location: http://www.itbilu.com/nodejs
P3PP3P策略相关设置P3P: CP="This is not a P3P policy!
Pragma与具体的实现相关,这些响应头可能在请求/回应链中的不同时候产生不同的效果Pragma: no-cache
Proxy-Authenticate要求在访问代理时提供身份认证信息。Proxy-Authenticate: Basic
Public-Key-Pins用于防止中间攻击,声明网站认证中传输层安全协议的证书散列值Public-Key-Pins: max-age=2592000; pin-sha256="……";
Refresh用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。Refresh: 5; url=http://itbilu.com
Retry-After如果某个实体临时不可用,那么此协议头用于告知客户端稍后重试。其值可以是一个特定的时间段(以秒为单位)或一个超文本传输协议日期。示例1:Retry-After: 120示例2: Retry-After: Dec, 26 Dec 2015 17:30:00 GMT
Server服务器的名称Server: nginx/1.6.3
Set-Cookie设置HTTP cookieSet-Cookie: UserID=itbilu; Max-Age=3600; Version=1
Status通用网关接口的响应头字段,用来说明当前HTTP连接的响应状态。Status: 200 OK
TrailerTrailer用户说明传输中分块编码的编码信息Trailer: Max-Forwards
Transfer-Encoding用表示实体传输给用户的编码形式。包括:chunkedcompressdeflategzipidentityTransfer-Encoding: chunked
Upgrade要求客户端升级到另一个高版本协议。Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Vary告知下游的代理服务器,应当如何对以后的请求协议头进行匹配,以决定是否可使用已缓存的响应内容而不是重新从原服务器请求新的内容。Vary: *
Via告知代理服务器的客户端,当前响应是通过什么途径发送的。Via: 1.0 fred, 1.1 itbilu.com (nginx/1.6.3)
Warning一般性警告,告知在实体内容体中可能存在错误。Warning: 199 Miscellaneous warning
WWW-Authenticate表示在请求获取这个实体时应当使用的认证模式。WWW-Authenticate: Basic

七、HTTPS

1. 概念

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。

2. 通信流程

HTTPS通信主要包括几个节点,发起请求、验证身份、协商秘钥、加密会话,具体流程如下(此例子只有客户端对服务端的单向验证):

  1. 客户端向服务端发起建立HTTPS请求:
    1. 客户端生成随机数R1 发送给服务端;
    2. 客户端告诉服务端自己支持哪些加密算法。
  2. 服务器向客户端发送数字证书:
    1. 服务端生成随机数R2;
    2. 从客户端支持的加密算法中选择一种双方都支持的加密算法(此算法用于后面的会话密钥生成);
    3. 服务端生成把证书、随机数R2、会话密钥生成算法,一同发给客户端;
  3. 客户端验证数字证书,证书验证通过后客户端生成会话密钥(双向验证则此处客户端也会向服务器发送证书):
    1. 验证证书的可靠性,先用CA的公钥解密被加密过后的证书,能解密则说明证书没有问题,然后通过证书里提供的摘要算法进行对数据进行摘要,然后通过自己生成的摘要与服务端发送的摘要比对;
    2. 验证证书合法性,包括证书是否吊销、是否到期、域名是否匹配,通过后则进行后面的流程;
    3. 获得证书的公钥、会话密钥生成算法、随机数R2;
    4. 生成一个随机数R3;
    5. 根据会话秘钥算法使用R1、R2、R3生成会话秘钥;
    6. 用服务端证书的公钥加密随机数R3并发送给服务端。
  4. 服务器生成会话密钥(双向验证此处服务端也会对客户端的证书验证):
    1. 服务器用私钥解密客户端发过来的随机数R3;
    2. 根据会话秘钥算法使用R1、R2、R3生成会话秘钥。
  5. 客户端与服务端开始进行加密会话。

3. HTTPS 的优缺点

优点
  1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2. HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性;
  3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
缺点
  1. 相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗;
  2. HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用;
  3. 最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行;
  4. 成本增加:部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。

​ Reference:

  1. 郭浩然. 网站安全之HTTPS优缺点分析
  2. 脚本之家在线工具 (jb51.net)
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值