免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1619 | 回复: 0
打印 上一主题 下一主题

OpenSWan安装配置指南 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-14 09:27 |只看该作者 |倒序浏览
一、OpenSWan简介
    OpenSWan是Linux下IPsec的最佳实现方式,其功能强大,最大程度地保证了数据传输中的安全性、完整性问题。
    OpenSWan支持2.0、2.2、2.4以及2.6内核,可以运行在不同的系统平台下,包括X86、X86_64、IA64、MIPS以及ARM。
    OpenSWan是开源项目
FreeS/WAN
停止开发后的后继分支项目,由三个主要组件构成:
      配置工具(ipsec命令脚本
      Key管理工具(pluto
      内核组件(KLIPS/26sec
    26sec使用2.6内核内建模块Netkey,用来替代OpenSWan开发的KLIPS模块,2.4及以下版本内核无Netkey模块支持,只能使用KLIPS。如果你用的是2.6.9以上的内核,推荐使用26sec,可以不用给内核打Nat-T补丁就可以使用NAT,2.6.9以下版本内核的NETKEY存在Bug,推荐使用KLIPS。
    更多详情请参见OpenSWan项目主页:
http://www.openswan.org

二、系统环境
   本文使用VMWare建立五台虚拟Linux主机来进行试验。
   操作系统:
CentOS 4.4
   内核版本:2.6.9-42
   主机网络参数设置: 如无特殊说明,子网掩码均为255.255.255.0
  主机名
    网卡eth0
   网卡eth1
   默认网关
    用途
LServer
192.168.1.103
192.168.2.1
192.168.1.1
Left网关
RServer
192.168.1.104
192.168.3.1
192.168.1.1
Right网关
LClient
192.168.1.113
192.168.2.2
192.168.2.1
Left客户机
RClient
192.168.1.114
192.168.3.2
192.168.3.1
Right客户机
Laptop
192.168.1.105
192.168.1.1
Laptop客户机
三、安装设置操作系统
   推荐使用CentOS 4.4,基于RedHat Enterprise AS 4.4安全加强的免费可升级独立分发版本Linux操作系统,安装过程不再详述。需要注意的是,安装时请确保选中开发软件包,以及libgmp软件包(gmp、gmp-devel)、gawk、flex、bison。
   以下步骤只需在LServer、RServer及Laptop上执行。
   系统按前述参数安装完毕后在LServer、RServer执行以下命令:
sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print $1"= 0"}' >> /etc/sysctl.conf   编辑/etc/sysctl.conf
vi /etc/sysctl.conf   将下面两项:  
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1   改为:  
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0   执行以下命令使设置生效:
sysctl -p   在LServer上执行以下命令设置NAT:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -d ! 192.168.3.0/24 -j MASQUERADE   在RServer上执行以下命令设置NAT:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -d ! 192.168.2.0/24 -j MASQUERADE
四、安装OpenSWan
   1. 下载源码包
cd ~
wget
http://www.openswan.org/download/openswan-2.4.7.tar.gz
   2. 解压源码包
tar zxvf openswan-2.4.7.tar.gz   3. 安装UserLand
cd openswan-2.4.7
make programs
make install   4. 安装KLIPS IPstack (可选,如果用26sec则不需安装)
      1)安装NAT-Traversal内核补丁
export KERNELSRC=/usr/src/kernels/2.6.9-42.EL-i686
make nattpatch > /usr/src/openswan-ipsec-natt.patch
cd $KERNELSRC
cat /usr/src/openswan-ipsec-natt.patch | patch -p1 -s
make clean
make oldconfig        当执行make oldconfig命令时,由于添加了Nat-t补丁,会出现以下提示:
IPSEC NAT-Traversal (KLIPS compatible) (IPSEC_NAT_TRAVERSAL) [N/y/?] (NEW)        按y键确认后继续完成make oldconfig命令
        继续执行以下命令重新编译安装内核
make
make modules_install
make install        编译安装完成新内核后请重启系统,以启用新内核
      2)安装KLIPS
cd ~/openswan-2.4.7
make KERNELSRC=/lib/modules/`uname -r`/build module minstall
depmod -a        加载KLIPS模块前必须先卸载NETKEY模块
rmmod xfrmuser af_key esp4 ah4 ipcomp xfrm4_tunnel        执行以下命令加载KLIPS
modprobe ipsec
   5. 验证安装
      执行下面的命令验证OpenSWan是否正确安装
ipsec --version      如果程序正确安装,此命令将显示以下三种可能结果:
      如果已加载的IPsec stack是NETKEY,显示如下
Linux Openswan U2.4.7/K2.6.9-42.EL (netkey)
See `ipsec --copyright' for copyright information.      如果已加载的IPsec stack是KLIPS,显示如下
Linux Openswan 2.4.7 (klips)
See `ipsec --copyright' for copyright information.      如果没有加载任何IPsec stack,显示如下
Linux Openswan U2.4.7/K(no kernel code presently loaded)
See `ipsec --copyright' for copyright information.
   6. 特别说明
      如果系统中NETKEY、KLIPS模块同时存在,OpenSWan按以下规则加载其一:
        通常情况下,OpenSWan启动时使用已经加载的模块;
        如果NETKEY与KLIPS两者都已经加载,OpenSWan不能启动;
        如果未加载任何模块,OpenSWan首选加载NETKEY;
        如果NETKEY加载失败,OpenSWan加载KLIPS;
        如果两者都不能正常加载,OpenSWan启动失败。
五、配置OpenSWan
   1. OpenSWan主要配置文件
/etc/ipsec.secrets                 用来保存private RSA keys 和 preshared secrets (PSKs)
/etc/ipsec.conf                    配置文件(settings, options, defaults, connections)   2. OpenSWan主要配置目录
/etc/ipsec.d/cacerts               存放X.509认证证书(根证书-"root certificates")
/etc/ipsec.d/certs                 存放X.509客户端证书(X.509 client Certificates)
/etc/ipsec.d/private               存放X.509认证私钥(X.509 Certificate private keys)
/etc/ipsec.d/crls                  存放X.509证书撤消列表(X.509 Certificate Revocation Lists)
/etc/ipsec.d/ocspcerts             存放X.500 OCSP证书(Online Certificate Status Protocol certificates)
/etc/ipsec.d/passwd                XAUTH密码文件(XAUTH password file)
/etc/ipsec.d/policies              存放Opportunistic Encryption策略组(The Opportunistic Encryption policy groups)   3. OpenSWan连接方式
      OpenSWan有两种连接方式:
      1) Network-To-Network方式
         顾名思义,Network-To-Network方式是把两个网络连接成一个虚拟专用网络。当连接建立后,每个子网的主机都可透明地访问远程子网的主机。
         要实现此种连接方式,要满足以下两个条件:
         I. 每个子网各自拥有一台安装有OpenSWan的主机作为其子网的出口网关;
         II.每个子网的IP段不能有叠加
      2) Road Warrior方式
         当使用Network-To-Network方式时,作为每个子网网关的主机不能像子网内部主机那样透明访问远程子网的主机,也就是说:
         如果你是一个使用Laptop的移动用户,经常出差或是在不同的地点办公,你的Laptop将不能用Network-To-Network方式与公司网络进行连接。
         Road Warrior方式正是为这种情况而设计的,连接建立后,你的Laptop就可以连接到远程的网络了。
   4. OpenSWan的认证方式
      Openswan支持许多不同的认证方式,包括RSA keys、pre-shared keys、XAUTH、x.509证书方式
   5. 使用RSA数字签名(RSASIG)认证方式配制OpenSWan
      1) 在LServer、RServer及Laptop上生成新的hostkey
ipsec newhostkey --output /etc/ipsec.secrets
      继续以下2-4步骤配置LServer-RServer之间的Network-To-Network方式链接:
      2) 在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)
ipsec showhostkey --left         此命令的输出格式如下所示:
# RSA 2192 bits   LServer.FoxBB.Com   Sat Mar  3 15:45:00 2007
leftrsasigkey=0sAQOBIJFmj......      3) 在RServer上执行下面的命令获得rightrsasigkey(即RServer的公钥 Pulic Key)
ipsec showhostkey --right         此命令的输出格式如下所示:
# RSA 2192 bits   RServer.FoxBB.Com   Sat Mar  3 15:51:56 2007
rightrsasigkey=0sAQNZZZjj......      4) 在LServer及RServer上编辑/etc/ipsec.conf
vi /etc/ipsec.conf         在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面2,3步所取得的值)
conn net-to-net
    left=192.168.1.103             # LServer外网IP地址
    leftsubnet=192.168.2.0/24      # LServer内网IP段
   
[email=leftid=@LServer.FoxBB.Com]leftid=@LServer.FoxBB.Com[/email]
      # LServer的标识
    leftrsasigkey=0sAQOBIJFmj...   # LServer的公钥
    leftnexthop=%defaultroute      # LServer的下一跳指定为默认路由地址
    right=192.168.1.104            # RServer外网IP地址
    rightsubnet=192.168.3.0/24     # RServer内网IP段
   
[email=rightid=@RServer.FoxBB.Com]rightid=@RServer.FoxBB.Com[/email]
[email=rightid=@ab.example.com][/email]
     # RServer的标识
    rightrsasigkey=0sAQNZZZjj...   # Rserver的公钥
    rightnexthop=%defaultroute     # RServer的下一跳指定为默认路由地址
    auto=add                       # 添加这个链接,但是在OpenSWan启动时不自动连接
     继续以下5-10步骤配置LServer-Laptop之间的Road Warrior方式:
     5) 在LapTop上执行下面的命令获得leftrsasigkey(即Laptop的公钥Pulic Key)
ipsec showhostkey --left        此命令的输出格式如下所示:
# RSA 2192 bits   Laptop.FoxBB.Com   Sun Mar 11 09:14:25 2007
leftrsasigkey=0sAQOa8tu4E......     6) 在LServer上执行下面的命令获得rightrsasigkey(即LServer的公钥 Pulic Key)  
ipsec showhostkey --right        此命令的输出格式如下所示:
# RSA 2192 bits   LServer.FoxBB.Com   Sat Mar  3 15:45:00 2007
rightrsasigkey=0sAQOBIJFmj......     7) 在Laptop上编辑/etc/ipsec.conf
vi /etc/ipsec.conf        在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面5,6步所取得的值)
conn road
    left=%defaultroute             # 通过默认路由获取Laptop的IP
   
[email=leftid=@Laptop.FoxBB.Com]leftid=@Laptop.FoxBB.Com[/email]
       # Laptop的标识
    leftrsasigkey=0sAQOa8tu4E...   # Laptop的公钥
    right=192.168.1.103            # LServer外网IP
    rightsubnet=192.168.2.0/24     # LServer内网IP段
   
[email=rightid=@LServer.FoxBB.Com]rightid=@LServer.FoxBB.Com[/email]
     # LServer的标识
    rightrsasigkey=0sAQOBIJFmj...  # LServer的公钥
    auto=add                       # 添加这个链接,但是在OpenSWan启动时不自动连接     8) 在LServer上执行下面的命令获得leftrsasigkey(即LServer的公钥Pulic Key)
ipsec showhostkey --left        此命令的输出格式如下所示:
# RSA 2192 bits   LServer.FoxBB.Com   Sat Mar  3 15:45:00 2007
leftrsasigkey=0sAQOBIJFmj......     9) 在Laptop上执行下面的命令获得rightrsasigkey(即Laptop的公钥 Pulic Key)  
ipsec showhostkey --right        此命令的输出格式如下所示:
# RSA 2192 bits   Laptop.FoxBB.Com   Sun Mar 11 09:14:25 2007
rightrsasigkey=0sAQOa8tu4E......     10)在LServer上编辑/etc/ipsec.conf
vi /etc/ipsec.conf        在最后添加如下内容(leftrsasigkey及rightrsasigkey行换成前面8,9步所取得的值)
conn road
    left=192.168.1.103             # LServer外网IP
   
[email=leftid=@LServer.FoxBB.Com]leftid=@LServer.FoxBB.Com[/email]
      # LServer的标识
    leftsubnet=192.168.2.0/24      # LServer内网IP段
    leftrsasigkey=0sAQOBIJFmj...   # LServer的公钥
    rightnexthop=%defaultroute     # correct in many situations
    right=%any                     # Laptop的外网IP,可能使用动态IP,所以用%any代替任意IP
   
[email=rightid=@Laptop.FoxBB.Com]rightid=@Laptop.FoxBB.Com[/email]
      # Laptop的标识
    rightrsasigkey=0sAQOa8tu4E...  # Laptop的公钥
    auto=add                       # 添加这个链接,但是在OpenSWan启动时不自动连接
        注意:在Network-To-Network方式下,两边网关/etc/ipsec.conf中的链接配置是一样的,即left和right是相同的,而在Road Warrior方式Laptop和网关上的链接配置是不同的,即left指正在配置的本地主机,right指与本地主机对应的远程主机。
     11)在LServer、RServer及Laptop上执行下面的命令启动OpenSWan
service ipsec start     12)在LServer及RServer上执行下面的命令验证OpenSWan是否正常运行
ipsec verify        如果OpenSWan正常运行,将会得到类似下面的输出
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                              [OK]
Linux Openswan U2.4.7/K2.6.9-42.EL (netkey)
Checking for IPsec support in kernel                         [OK]
NETKEY detected, testing for disabled ICMP send_redirects    [OK]
NETKEY detected, testing for disabled ICMP accept_redirects  [OK]
Checking for RSA private key (/etc/ipsec.secrets)            [OK]
Checking that pluto is running                               [OK]
Two or more interfaces found, checking IP forwarding         [OK]
Checking NAT and MASQUERADEing                              
Checking for 'ip' command                                    [OK]
Checking for 'iptables' command                              [OK]
Opportunistic Encryption Support                             [DISABLED]     13)在LServer或RServer上执行下面的命令进行LServer-RServer之间的Network-To-Network连接
ipsec auto --up net-to-net        将会得到类似下面的输出(如果最后的输出行中出现IPsec SA established,说明连接成功 )
104 "net-to-net" #1: STATE_MAIN_I1: initiate
003 "net-to-net" #1: received Vendor ID payload [Openswan (this version) 2.4.7  PLUTO_SENDS_VENDORID PLUTO_USES_KEYRR]
003 "net-to-net" #1: received Vendor ID payload [Dead Peer Detection]
003 "net-to-net" #1: received Vendor ID payload [RFC 3947] method set to=110
106 "net-to-net" #1: STATE_MAIN_I2: sent MI2, expecting MR2
003 "net-to-net" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): no NAT detected
108 "net-to-net" #1: STATE_MAIN_I3: sent MI3, expecting MR3
004 "net-to-net" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1536}
117 "net-to-net" #2: STATE_QUICK_I1: initiate
004 "net-to-net" #2: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0xa329d030      14)在Laptop上执行下面的命令进行Laptop-LServer之间的Road Warrior连接
ipsec auto --up road        将会得到类似下面的输出(如果最后的输出行中出现IPsec SA established,说明连接成功)
104 "road" #1: STATE_MAIN_I1: initiate
003 "road" #1: received Vendor ID payload [Openswan (this version) 2.4.7  PLUTO_SENDS_VENDORID PLUTO_USES_KEYRR]
003 "road" #1: received Vendor ID payload [Dead Peer Detection]
003 "road" #1: received Vendor ID payload [RFC 3947] method set to=110
106 "road" #1: STATE_MAIN_I2: sent MI2, expecting MR2
003 "road" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): no NAT detected
108 "road" #1: STATE_MAIN_I3: sent MI3, expecting MR3
004 "road" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_RSA_SIG cipher=oakley_3des_cbc_192 prf=oakley_md5 group=modp1536}
117 "road" #2: STATE_QUICK_I1: initiate
004 "road" #2: STATE_QUICK_I2: sent QI2, IPsec SA established {ESP=>0x070f9aae      15)测试IPSEC链接
        在LClient上执行
ping 192.168.3.2        或在RClient上执行
ping 192.168.2.2        在ping命令执行期间,在LServer或RServer上执行
tcpdump -i eth0        如果LClient和RClient可以互相ping通,tcpdump有类似下面的输出,说明Network-To-Network方式IPSEC已经成功连接
13:28:09.931263 IP 192.168.1.104 > 192.168.1.103: ESP(spi=0xa329d030,seq=0x126)
13:28:09.935244 IP 192.168.1.103 > 192.168.1.104: ESP(spi=0xae29b36c,seq=0x126)
13:28:10.818461 IP 192.168.1.104 > 192.168.1.103: ESP(spi=0xa329d030,seq=0x127)
13:28:10.823472 IP 192.168.1.103 > 192.168.1.104: ESP(spi=0xae29b36c,seq=0x127)     16)设置自动连接
        测试通过后,可以把连接配置中
auto=add         更改为:
auto=start        这样当OpenSWan启动时就可自动进行连接

     
(待续)


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49674/showart_400277.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP