5. 网络层安全IPSec

5.1 IPSec协议

(1)前面使用Outlook进行数字签名和数字加密是应用层实现的安全安全套接字实现的安全是在应用层和传输层之间插入了一层来实现数据通信安全。而IPSec是网络层实现的安全。不需要应用程序的支持,只要配置通信双方的安全规则,传输层的数据传输单元就会被加密后封装到网络层,实现数据通信安全。IPSec工作在OSI模型的网络层

(2)IPSec主要的两个协议

  ①鉴别首部(Authentication Header, AH)协议:提供源点鉴别和数据完整性,但不能保密。AH协议的功能都包含在ESP协议中,因此不再使用AH协议。

  ②封装安全有效载荷(Encapsulation Security Payload, ESP)协议:提供源点鉴别、数据完整性和保密,支持IPv4和IPv6。

5.2 安全关联

(1)IPSec协议的IP数据报(简称IPSec数据报),可以在两个主机之间、两个路由器之间或一个主机和一个路由器之间发送。但发送IPSec数据报之前,源实体和目的实体之间必须创建一条网络逻辑连接,即安全关联(Security Association, SA)

(2)安全关联的状态信息(以Client到Web服务器的安全关联SA1为例)

  ①源点(Client的IP)和终点(Web服务器的地址)

  ②一个32位的连接标识符,称为安全参数索引(Security Parameter Index, SPI)

  ③所使用的加密类型(如DES)、加密密码

  ④完整性检查类型(例如,使用报文摘要MD5的报文鉴别码MAC)

  ⑤鉴别使用的密钥(比如指定身份验证密钥为abc)

【注意】要实现安全通信,Web服务器与Client发送IPSec数据报之前,也要建立一条安全关联SA。

5.3 实战:在Windows系统上配置IPSec实现安全通信

(1)实验环境:Win2003Web(192.168.80.20)WinXP(192.168.80.50)

(2)IPSec(IP安全策略)规则的主要组成

  ①筛选器:定义SA的条件,如源地址、目标地址、协议和端口号等

  ②筛选器动作(允许、拒绝和加密通信):只有“协商安全”才需要指明加密算法和完整性算法,以及身份验证方法。如果是允许和拒绝,则不需要指定上述内容。

  ③身份验证方法(Kerberos、数字证书、共享密钥):默认使用Kerberos来验证,这是为域中的计算机准备的身份验证方法。共享密钥则要求通信双方要使用相同的密钥(可自定义,如abc123)

(3)在Win2003虚拟机上创建IP安全策略

  ①运行“secpol.msc”(也可以从管理工具中找到)打开“本地安全策略”→“IP安全策略”→“创建IP安全策略”。(注意,Windows可以有多个IP安全策略,但同一时间只有一个生效,在“本地安全设置”中有三个默认的IP安全策略,他们是针对加入域的计算机预设的,这里我们要创建自己的IP安全策略)

  ②新增“筛选器”:名称为toWindowsXP,源地址为我的IP、目标地址为192.168.80.50、协议为任意,并选中该筛选器。

  ③设置toWindowsXP筛选器的操作:安全措施为协商安全,并设定数据完整性和加密算法以及新密钥的生成时间。同时勾选“接受不安全的通讯,但总是用IPSec响应”(这意味着只允许进行安全通信)和勾选“使用会话密钥完全向前保密”(意味着通信过程中生成的新的会话密钥就不会使用以前用过的会话密钥)

  ④将身份验证方法修改为“预共享密钥”,如abc123。(可编辑默认的Kerberos来达到修改验证方法的目的)。

  ⑤最后右击创建好的“WebIPSec”,并点击“指派”使策略生效。

(4)在WinXP虚拟机上创建IP安全策略

  ①参照Win2003上操作添加筛选器,目标地址填写192.168.80.20,也就是Win2003Web的地址。

  ②按同样的方法创建筛选器操作和指定身份验证方法(预共享密钥也应设为abc123)

  ③指定新创建的IP安全策略,然后ping 192.168.80.20(注意,第一个响应是Negotiating IP Security,即协商IP安全,说明Win2003返回的ICMP响应数据包是经过IPSec策略加密通信的

5.4 实战:查看安全关联和加密数据包

(1)XP上查看安全关联:运行“mmc” →“文件”→“添加/删除管理单元”→添加“独立管理单元”并选中“IP安全监视器”

(2)Win2003上抓包分析IPSec数据包的格式

  ①IPSec数据包格式

    A.当使用ESP(封装安全有效载荷)时,网络层IP数据包的首部的协议字段变为50。当目标主机检查到协议字段为50时,就知道在IP首部后面紧接着是ESP首部。

    B.在ESP首部中,有标志一个安全关联的安全参数索引SPI(32位)和序号(32位)。同时,在原IP数据报后面增加了两个字段,即ESP尾部和ESP鉴别码(MAC)。

    C.ESP尾部和传输层报文(IP的数据报)一起加密因此攻击者无法得知所使用的传输层协议(它在IP数据报的数据部分中)

    D.SA指明的算法和密钥,对“ESP首部+传输层报文段(或IP数据报)+ESP尾部”生成报文鉴别码MAC。

  ②抓包分析IPSec数据包

第10章 网络安全(4)_网络层安全IPSec的更多相关文章

  1. 第10章 网络安全(5)_访问控制列表ACL

    6. 访问控制列表ACL 6.1 标准访问控制列表 (1)标准ACL ①标准ACL是基于IP数据包的源IP地址作为转发或是拒绝的条件.即,所有的条件都是基于源IP地址的. ②基本不允许或拒绝整个协议组 ...

  2. 第10章 网络安全(3)_安全套接字层SSL

    4. 安全套接字层 4.1 安全套接字层(SSL)和传输层安全(TLS) (1)SSL/TLS提供的安全服务 ①SSL服务器鉴别,允许用户证实服务器的身份.支持SSL的客户端通过验证来自服务器的证书, ...

  3. 《mysql必知必会》学习_第10章_20180731_欢

    第10章,计算字段. P64 select concat (vend_name,'(',vend_country,')') from vendors order by vend_name; # 拼接, ...

  4. Linux就这个范儿 第10章 生死与共的兄弟

    Linux就这个范儿 第10章 生死与共的兄弟 就说Linux系统的开机.必须经过加载BIOS.读取MBR.Boot Loader.加载内核.启动init进程并确定运行等级.执行初始化脚本.启动内核模 ...

  5. JavaScript高级程序设计(第三版)学习笔记8、9、10章

    第8章,BOM BOM的核心对象是window,具有双重角色,既是js访问浏览器的一个接口,又是ECMAScript规定的Global对象.因此,在全局作用域中声明的函数.变量都会变成window对象 ...

  6. 【安富莱】【RL-TCPnet网络教程】第10章 RL-TCPnet网络协议栈移植(FreeRTOS)

    第10章     RL-TCPnet网络协议栈移植(FreeRTOS) 本章教程为大家讲解RL-TCPnet网络协议栈的FreeRTOS操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就 ...

  7. <<Python基础教程>>学习笔记 | 第10章 | 充电时刻

    第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简 ...

  8. 《构建之法》之第8、9、10章读后感 ,以及sprint总结

    第8章: 主要介绍了软件需求的类型.利益相关者,获取用户需求分析的常用方法与步骤.竞争性需求分析的框架NABCD,四象限方法以及项目计划和估计的技术. 1.软件需求:人们为了解决现实社会和生活中的各种 ...

  9. 敏捷软件开发:原则、模式与实践——第10章 LSP:Liskov替换原则

    第10章 LSP:Liskov替换原则    Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type). 10.1 违反LSP的情形 10.1.1 简单例子 对L ...

随机推荐

  1. Singer 学习十二 指南

    版本0.3.0 tap是一个应用程序,需要一个配置文件和可选的状态文件作为输入,并产生有序的流记录, 状态和模式信息作为输出. 一个记录是任何类型的JSON编码的数据.tap 状态消息用于保留一个调用 ...

  2. 普林斯顿数学指南(第一卷) (Timothy Gowers 著)

    第I部分 引论 I.1 数学是做什么的 I.2 数学的语言和语法 I.3 一些基本的数学定义 I.4 数学研究的一般目的 第II部分 现代数学的起源 II.1 从数到数系 II.2 几何学 II.3 ...

  3. python装饰器学习笔记

    定义:本质上就是个函数,(装饰器其他函数)就是为了给其他函数添加附加功能 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 #-*-coding:utf-8-*- 1 imp ...

  4. BeanShell用法(摘抄至网络)

    说明:本文部分资料摘抄至 来源: http://www.cnblogs.com/puresoul/p/4915350.html 来源: http://www.cnblogs.com/puresoul/ ...

  5. java中==与equals

    == ==可用于比较基本类型与引用类型,对于基本类型变量比较的是其存储的值是否相等,对于引用类型则比较的是其是否指向同一个对象. 如: int a = 10; int b = 20; double d ...

  6. nginx基于目录的映射:

    nginx基于目录的映射: location /wxchat/ { #proxy_redirect off; proxy_set_header Host $host; proxy_set_header ...

  7. ionic 监听页面滚动,点击停止滚动

    类似今日头条,页面上有很多card,点击每个card跳转该card的详情页面.这里有一个问题,当我滚动页面时,会先后触发touchstart.touchmove.touchend,但是当touchen ...

  8. 根据时间段获取时间段内所有时间点(js)

    Date.prototype.format=function (){var s='';s+=this.getFullYear()+'-';// 获取年份.s+=(this.getMonth()+1)+ ...

  9. OpenGL学习记录

    1.QT OpenGL工程建立: http://www.cnblogs.com/tornadomeet/archive/2012/08/22/2651574.html 2.Qt自定义界面类并提升(提升 ...

  10. window10 禁止更新

    win+R 运行 在服务里找到WindowsUpdate 双击  弹出的对话框 启动类型选禁用