曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5725|回复: 0
打印 上一主题 下一主题

使用 ipsec-tools 设置 SAD 和 SPD

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2012-9-7 14:06:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 《
IPSec 中的 AH 机制详解》 和 《IPSec 中的 ESP 机制详解》 里分别介绍了 IPSec 中的 AH 和 ESP 这两种协议,并给出了 wireshark 的抓包截图,但没有给出如何配置这两种情况的实验环境。

如果要让 IPSec 可以正常工作,那么需要适当的管理工具来管理 AH 和 ESP 运行所需要的参数,这些管理工具在开源领域从不缺乏,但要看你自己习惯用什么样的软件,比如常见的有 OpenSwan 和 ipsec-tools ,这里介绍的是 ipsec-tools 这一款,它的官方网站是 http://ipsec-tools.sourceforge.net ,但在官网只提供源代码,要编译才能安装,这不是很方便。在 Fedora 17 里,可以直接使用 yum 来安装:
# yum install ipsec-tools
此外,在 http://rpm.pbone.net 这个网站上可以找到许多不同 Linux 发行版可用的 RPM 安装包,将对应的版本下载后,可以使用下面的命令进行安装:
# yum localinstall ipsec-tools-0.8.0-4.fc17.i686.rpm

下面以一个简单的只启用了 AH 协议的 IPSec VPN 的配置文件为例说明。

首先,我们在 192.168.1.109 这台 /root 目录下编辑一个文件 192-168-1-109.conf ,其文件内容为:
[Plain Text] 纯文本查看 复制代码
flush;
 spdflush;
 
 #===============<SAD>=================
 
 add 192.168.1.109 192.168.1.107 ah 0x201 -m transport
 -A hmac-sha1 0xab4812053387b8b9d9ccfd5125f7c9ca96a90d53;
 
 add 192.168.1.107 192.168.1.109 ah 0x301 -m transport
 -A hmac-sha1 0x39a294ea5fcc323c8b62f7eff7e37f1b04a8350e;



#===============<SPD>=================
 spdadd 192.168.1.109 192.168.1.107 any -P out ipsec
 ah/transport//require;
 
 spdadd 192.168.1.107 192.168.1.109 any -P in ipsec
 ah/transport//require;

这个 192-168-1-109.conf  文件所在的主机 192.168.1.109 我们称之为数据库服务器,它包含了两个数据库,SAD (Security Association Database)和 SPD (Security Policy Database)。简单的说,SPD 是用来存放 IPSec 通信规则的;SAD 是用来存放 IPSec 规则所使用的参数的,如这些参数有:SPI 值,目的端 IP,AH 或 ESP 协议,AH 验证算法,AH 验证的加密密钥,ESP 验证算法,ESP 验证算法的加密密钥,ESP 加密算法,ESP 加密算法的加密密钥,使用隧道模式还是传输模式 等等。

我们可以将上面的 192-168-1-109.conf 稍作修改后,然后传给 192.168.1.107 这台客户机,这样两者以后的任何通信,一律会采用 IPSec 机制处理,修改的内容如下:
[Plain Text] 纯文本查看 复制代码
flush;
 spdflush;
 
 #===============<SAD>=================
 
 add 192.168.1.109 192.168.1.107 ah 0x201 -m transport
 -A hmac-sha1 0xab4812053387b8b9d9ccfd5125f7c9ca96a90d53;
 
 add 192.168.1.107 192.168.1.109 ah 0x301 -m transport
 -A hmac-sha1 0x39a294ea5fcc323c8b62f7eff7e37f1b04a8350e;



#===============<SPD>=================
 spdadd 192.168.1.107 192.168.1.109 any -P out ipsec
 ah/transport//require;
 
 spdadd 192.168.1.109 192.168.1.107 any -P in ipsec
 ah/transport//require;

实际上,修改的内容不多:SAD 部分无需做任何改动。SPD 部分只要调换一下传输方向即可(in 和 out) 。保存后,可以将该文件保存为 192-168-1-109.conf ,然后我们使用 scp  命令将其上传到 192.168.1.09 这台客户机上,使用 scp  命令是保证传输过程中的加密安全性,上传命令如下:
# scp /root/192-168-1-109.conf 192.168.1.109:/root/192-168-1-109.conf

传输完毕后,我们可以使用 setkey 命令来启动 IPSec 了,setkey 命令在安装 ipsec-tools 软件包时会被同时安装。当然,数据库服务器和客户机两边都需要使用该命令来启动 IPSec,用法是:
# setkey -f /root/192-168-1-107.conf
# setkey -f /root/192-168-1-107.conf
如果想取消 IPSec 的运行,可以使用下面的命令:
# setkey -D -F
setkey -P -F

下面以 192-168-1-107.conf  这个文件为例,说明一下各行配置的含义:

第 1 行和第 2 行:在加载文件内所定义的 IPSec 参数之前,需要先清除一下 IPSec 原有的参数内容,这些参数内容分别保存在 SAD 和 SPD 两个数据库中。其中,flush 是清除 SAD 数据库内容,spdflush 是清除 SPD 数据库内容。

第 4 行:以 # 符号开头的行是注释行。另外,一个配置行的是以分号作为结束的,如果没遇到分号,那么就不认为该配置行结束。

第 6 行和第 7 行:add 是将其后的参数加入到 SAD 数据库的命令。
192.168.1.109 192.168.1.107
表示从 192.168.1.109 传送数据到 192.168.1.107 。ah 指采用 AH 协议。0x200 是个安全索引值,该值不能在其它的配置行里重复。
-m transport
  表示使用传输模式,默认时就是个该模式,如果要用隧道模式那么就用 -m tunnel 参数。
-A hmac-sha1
  表示采用的验证算法是 hmac-sha1 。
0xab4812053387b8b9d9ccfd5125f7c9ca96a90d53
表示加密密钥;hmac-sha1 算法使用的加密密钥长度为 20 个字节,只要长度符合,内容随便,但是我们可以使用xxd  命令轻松生成该密钥。

第 9 行和第 10 行:这两行和第6,第7行的含义相同,只是“方向”不同。这里,仍然选择 hmac-sha1 算法,但也可以选择其他的算法,比如 hmac-md5 ,但是前者比后者还要安全一点。此外,加密密钥也不一样,这对整个加密应用会更安全些。

第 14 行:下面内容是 SPD 数据库的内容。这些参数用于控制进出 VPN 主机的数据包中哪些是需要使用 IPSec 协议的,以及使用 IPSec 协议中的哪些协议。

第15 行:spdadd 是将其后参数加入到 SPD 数据库的命令。
spdadd 192.168.1.109 192.168.1.107 any -P out
ipsec
表示任何从 192.168.1.109 出到 192.168.1.108 的数据包都使用 IPSec 处理,比如如果写成:spdadd 192.168.1.109 [any] 192.168.1.107[110] tcp -P out ipsec ,那么该句的意思是:192.168.1.109 任何端口发送到 192.168.1.107 的 110 端口的数据包,且通信协议是 TCP 的话,那么都必须使用 IPSec 协议处理。如果端口部分没有定义,默认就是 any ,也就是任何一个端口的意思。

第 16 行
ah/transport//require;
是指如果数据包流量符合第 15 行中的定义,那么这些数据包必须采用”传输模式“的 AH 协议来处理。

第 18 和第 19 行:这两行的内容和第15,16行除了方向定义相反外,其它的都相同。

至于启用数据库服务器和客户端之间采用 ESP 协议的配置和 AH 协议基本一样,这里就不赘述,只列出配置文件内容:
[Plain Text] 纯文本查看 复制代码
flush;
 spdflush;
 
 #===============<SAD>=================
 
 add 192.168.1.109 192.168.1.107 esp 0x201 -m transport
 -E 3des-cbc 0xbfd606cc5200183f9af30060b0518df880850b7c5cbc832c
 -A hmac-sha1 0xab4812053387b8b9d9ccfd5125f7c9ca96a90d53;
 
 add 192.168.1.107 192.168.1.109 esp 0x301 -m transport
 -E 3des-cbc 0x25a95bffa6c1d38ed7661a187e226aba1fb2548a4c24333c 
 -A hmac-sha1 0x39a294ea5fcc323c8b62f7eff7e37f1b04a8350e;
 
 
 
 #===============<SPD>=================
 spdadd 192.168.1.109 192.168.1.107 any -P out ipsec
 esp/transport//require;
 
 spdadd 192.168.1.107 192.168.1.109 any -P in ipsec
 esp/transport//require;

上面需要注意的是 ESP 协议中所使用的加密算法以及加密密钥的长度,密钥的生成方法仍然可以采用 xxd 命令,只需要注意密钥长度即可。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-6-2 21:41 , Processed in 0.092951 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表