IPSec功能实现

从Linux 2.6内核开始,内核就自身带有IPSec模块,配合IPSec-Tools,能很好的实现Linux的IPSec功能。
IPSec-Tools主要包含libipsec、setkey、racoon和racoonctl这4个模块,setkey主要用于配置SAD(安全关联数据库)和SPD(安全策略数据库),racoon用于IKE协商。
IPSec-Tools的配置文件均放在/etc/racoon目录下,setkey.conf文件保存着sad和spd的配置信息,racoon.conf文件保存着IKE各个协商阶段各采用什么方式进行协商。

SPD 的内容用来存放IPSec 的规则,有目的端IP、来源端IP、只执行AH 或ESP、同时执行AH 及ESP、目的端Port、来源端Port、走Transport 或Tunnel 模式。
IPSec功能实现

SAD 数据库中的参数有SPI 值、目的端IP、AH 或ESP、AH 验证算法、AH 验证的加密密钥、ESP 验证算法、ESP 验证的加密密钥、ESP 的加密算法、ESP 的加密密钥、走Transport 或Tunnel 模式,其中SPI(Security ParameterIndex,索引值)是两部VPN 主机之间以随机数或手动指定的唯一值,其目的是要作为数据库的索引值,这对整个IPSec 的运行没有其他用途。

IPSec功能实现
IPSec功能实现

主机A 送给主机B 的封包特征有符合主机A 上SPD 数据库内容,封包就会被送入到IPSec 的AH 及ESP 机制中,接着,AH、ESP 就会到SAD 数据库中找到处理这个封包的参数,完成处理后的封包随即被送往主机B ,在主机B 找到这个封包之后,就把这个封包的特征与其SPD 数据库的内容进行匹配,如果匹配的结果符合,这个封包就会送入AH 及ESP 机制处理,接着,AH、ESP 就会从SAD 数据库中找到处理这个封包的参数,最后,将处理完成的数据往上层传递。看完以上的流程之后,相信你可以更加了解IPSec 的运行流程。

setKey.conf配置

flush; #效果等同于在命令行执行setkey -F, 即清除SAD信息
spdflush; #效果等同于在命令行执行setkey -FP, 即清除SPD信息
add 10.166.22.22 10.188.11.11 esp 29579 -m transport -E 3des-cbc 0x9086d234780b898efab61237874345789885b87c076cccf9;

配置SAD
A->B, spi: 29579, mode: transport,加密方式: 3des, key: 0x9086d234780b898efab61237874345789885b87c076cccf9
说明:模式默认为传输模式,所以-m transport 也可以省略

配置SPD
spdadd 10.166.22.22 10.188.11.11 any -P in ipsec esp/transport//require;
定义A->B的流量走IPSec

psk.txt配置
生成psk.txt预共享密钥文件
psk.txt里填入:192.168.59.133 mekmitasdigoat
执行:chmod 600 psk.txt.修改权限

racoon.conf配置
path include “/etc/racoon”; #配置文件位置
path pre_shared_key “/etc/racoon/psk.txt”; #共享密钥文件
path certificate “/etc/racoon/cert”; #证书文件目录

Ipsec功能

一,加密,验证

1.加密
对称加密算法:用相同的密钥进行加解密,密钥会在IP网络中传递。
IPSec使用的对称加密算法有:DES、3DES、AES、AES-128、AES-192、AES-256。
非对称加密算法:拥有一对密钥,公钥进行加密,私钥进行解密。
IPSec使用的非对称加密算法有:DH768/1024/1536bit。

使用时会结合两种加密算法:数字信封。
加密过程:用对称密钥加密明文得到密文;用非对称密钥的私钥加密对称密钥得到密钥包。
解密过程:用公钥解密密钥包得到对称密钥;用对称密钥解密密文,得到明文数据。
2. 验证
IPSec使用的验证算法:MD5(产生128位的签名散列值,速度快、安全性较差)、SHA1(产生160位的散列值,签名较长速度慢,但相对安全)。

二,协议封装

认证头协议AH: AH是基于IP的传输层协议,协议号为51。
AH协议会在每个数据包的IP报头后面添加一个AH报文头,AH协议只支持认证,不支持加密。发送方会对报文及密钥进行Hash算法,并将结果发送给对端;对端接收到数据后以同样的Hash算法进行验证。

封装安全载协议ESP:ESP是基于IP的传输层协议,协议号为50。
ESP协议会在每个数据包的IP报头后面添加一个ESP报头,并且在数据包后面追加一个ESP报尾。ESP会将数据包的载荷进行加密,但是没有对IP头进行加密。

三,封装模式

传输模式:传输模式在正常的原IP头后面插入AH头或者ESP头,保护了传输层的数据载荷。
隧道模式:隧道模式在原IP头之前插入AH头或者ESP头,同时会生成新的IP头,隧道模式不仅保护了传输层的载荷,也对原IP头进行了加密,保护了网络层载荷,更加的安全,但是由于生成了新的IP报头,所以占用的网络带宽更大。

四,IKE协议

基于UDP(User Datagram Protocol)500 端口号,的应用层协议。
IKE协议分为两个阶段:IKE SA(阶段一),IPSEC SA(阶段二)。
IKE SA:用于交换协商加密算法、验证算法、DH及密钥、隧道两端的IP地址、密钥生存周期
IPSEC SA:在第一阶段协商后的基础上,进行加密后的数据交互。

五,交换模式
1.主模式: 经过三个步骤,共交换六条信息,三个步骤是策略协商交换,Diffie-Hellman共享值,nonce交换以及身份验证交换。
2.野蛮模式: 三个步骤,只交换三条信息::头两条消息协商策略,交换Diffie-Hellman共享值必须的辅助数据以及身份信息;第二条消息认证响应方;第三条认证发起方,并为发起方提供在场证据。

上一篇:解开ESP8266无法发送邮件的疑惑,并在原有基础上再修改!


下一篇:2021-2022-1 20212813《Linux内核原理与分析》第二周作业