--------------------------------------------------------------------------------
 

RedHat EL4 默认***的配置是IPsec,下文将详细的介绍如何配置基于IPsec和Cipe的***。如果你安装了X和RedHat的网络管理工具,你可以使用system-config-network-gui (或是redhat-config-network-gui)配置IPsec或Cipe!
网络环境
服务器A ,eth0 ip 10.0.10.111/24 gw 10.0.10.1, eth1 ip 192.168.1.254/24 gw 192.168.0.254
服务器B ,eth0 ip 10.0.20.222/24 gw 10.0.20.1, eth1 ip 192.168.2.254/24 gw 192.168.0.254

一。RedHat 下 IPsec 说明
1. EL4默认安装了ipsec-tools RPM包,此RPM包中包含设置 IPsec 连接所必需的库、守护进程和配置文件。确认是否安装了这个RPM包:
代码:
  #rpm -q ipsec-tools
  2.ipsec-tools中的主要文件说明:
代码:
*/lib/libipsec.so — 包含红帽企业 Linux 中使用的 Linux 内核与 IPsec 实现间的 PF_KEY 信任的钥匙管理套接字接口。
    */sbin/setkey — 在内核中操作 IPsec 的钥匙管理和安全属性。该可执行文件被 racoon 钥匙管理守护进程控制。关于 setkey 的更多信息,请参阅 setkey(8) man手册页。
    */sbin/racoon — IKE 钥匙管理守护进程,用来管理和控制 IPsec 连接的系统之间的安全关联和钥匙共享。守护进程可以通过编辑 /etc/racoon/racoon.conf 文件而被控制。当IPsec运行的时候,你可以通过ps查看到racoon在后台运行。关于 racoon 的详细信息,请参阅 racoon(8) man手册页。
    */etc/racoon/racoon.conf — racoon 守护进程配置文件,用来配置 IPsec 连接的各个方面,包括连接中使用的验证方法和加密算式。简单配置IPsec的时候这个文件并不需要你去编辑。要获得完整的指令列表,请参阅 racoon.conf(5) 说明书页。
二。IPsec的Host2Host配置
IPsec 可以通过host to host连接的配置来连接两台主机。这类连接使用每个主机所连的网络来创建彼此间点到点的安全隧道。
配置之初你需要以下信息:
代码:
    *两台主机的 IP 地址
    *用来把 IPsec 连接从其它设备或连接中区别出来的独特名称(如 ipsec0)
    *固定的加密钥匙或被 racoon 自动生成的钥匙
    *被用来初始连接和在会话中交换加密钥匙的预共享验证钥匙
    例如:假定服务器 A 和服务器 B 想通过 IPsec 隧道来彼此连接。它们想使用值为 KissingwolfATlinuxsir 的预共享钥匙来连接,并且用户同意让 racoon 自动生成和共享每个服务器间的验证钥匙。网络管理员决定将两台服务器的连接都命名为 ipsec0。
我们需要分别在A和B服务器上建立/etc/sysconfig/network-scripts/ifcfg-ipsec0文件和/etc/sysconfig/network-scripts/keys-ipsec0文件
代码:
    #vi /etc/sysconfig/network-scripts/ifcfg-ipsec0
    #vi /etc/sysconfig/network-scripts/keys-ipsec0
    服务器A的ifcfg-ipsec0文件
代码:
    DST=10.0.20.222
    TYPE=IPSEC
    ONBOOT=yes
    IKE_METHOD=PSK
    服务器B的ifcfg-ipsec0文件
代码:
    DST=10.0.10.111
    TYPE=IPSEC
    ONBOOT=yes
    IKE_METHOD=PSK
    连接被设置成网络服务启动时开启设备(ONBOOT=yes),并使用预共享钥匙验证方法(IKE_METHOD=PSK)。
服务器A和B的keys-ipsec0文件必须完全保持一致:
代码:
    IKE_PSK=KissingwolfATlinuxsir
    keys-ipsec0 文件的权限要求严格,必须设为非root用户无任何操作权限
代码:
     #chown root.root /etc/sysconfig/network-scripts/keys-ipsec0
     #chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0
    分别在服务器A和B上均创建完这两个文件后,我们需要确认两服务器上的/etc/racoon/racoon.conf 文件是如下内容:
代码:
     # Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
sainfo anonymous
{
 pfs_group 2;
 lifetime time 1 hour ;
 encryption_algorithm 3des, blowfish 448, rijndael ;
 authentication_algorithm hmac_sha1, hmac_md5 ;
 compression_algorithm deflate ;
}
     如果设置正确接下来我们就可以开启ipsec0设备了!分别在服务器A和B上ifup 设备ipsec0:
代码:
     # ifup ipsec0
     好象是没什么作用,你没有在ifconfig的显示中发现这个ipsec0设备,确实是这样的。你可以通过tcpdump 来查看服务器A和B间传输的网络分组, 并校验它们是否通过 IPsec 被加密了。 分组应该包括 AH 头,而且应该被显示为 ESP 分组。ESP 意味着它被加密了。
代码:
     # tcpdump -n  host 10.0.10.111
     15:14:20.617872 10.0.10.111 > 10.0.20.222: AH(spi=0x0aaa239f,seq=0x223): ESP(spi=0x0ec0331e,seq=0x223) (DF)
     .............................................
    
三。IPsec的Network2Network配置
IPsec 还可以使用网络到网络连接配置实现两个独立的网络通过互联网安全的连接到一起。网络到网络配置要求你在所连接网络的每一方设置 IPsec 网关来处理和路由发送从一个网络上的节点到另一个远程网络上的节点间的信息。
两个网络之间使用 IPsec 网关来验证和引发使用安全隧道的连接。在传输中被劫获的分组将需要强力解密才能攻破保护这些 LAN 之间的分组的加密术。从 192.168.1.0/24 IP 范围的一个节点到 192.168.2.0/24 上的另一个节点间的通信对于这些节点而言是完全透明的,因为对 IPsec 分组的处理、加密、解密、以及选路都是由 IPsec 网关一手完成的。
配置之初你需要以下信息:
代码:
 * 两端IPsec 网关的可从外部进入的 IP 地址
    * 两端被 IPsec 网关提供服务的 LAN/WAN 的网络地址范围
    * 把来自网络节点的数据路由发送到互联网的网关设备的 IP 地址,你也可以把他理解为 LAN/WAN 的网关地址。
    * 用来把 IPsec 连接从其它设备或连接中区别出来的独特名称(如 ipsec0)
    * 固定的加密钥匙或被 racoon 自动生成的钥匙
    * 用来引发连接和在会话中交换加密钥匙的预共享验证钥匙
例如:假设 LAN A 和 LAN B 想通过 IPsec 隧道来彼此连接。LAN A 的网络地址在 192.168.1.0/24 范围内,LAN B 使用 192.168.2.0/24 范围。LAN A 的网关 IP 地址是 192.168.1.254,LAN B 的网关地址是 192.168.2.254。IPsec 网关至于每个 LAN 的网关,并且使用两个网络设备:eth0 被分派给可从外部进入的静态 IP 地址,它被用来进入互联网;eth1 充当在每个节点间和 eth0 设备中处理和传输 LAN 分组以便传输到互联网的选路点。
每个网络间的 IPsec 连接使用一个值为 KissingwolfATlinuxsir 的预共享钥匙,A 和 B 的管理员都同意让 racoon 自动生成和共享每个 IPsec 网关之间的验证钥匙。LAN A 的管理员决定把 IPsec 连接命名为 ipsec0,而 LAN B 的管理员决定把 IPsec 连接也命名为 ipsec0
我们需要分别在A和B服务器上建立/etc/sysconfig/network-scripts/ifcfg-ipsec0文件和/etc/sysconfig/network-scripts/keys-ipsec0文件
代码:
    #vi /etc/sysconfig/network-scripts/ifcfg-ipsec0
    #vi /etc/sysconfig/network-scripts/keys-ipsec0
    服务器A的ifcfg-ipsec0文件
代码:
    TYPE=IPSEC
    ONBOOT=yes
    IKE_METHOD=PSK
    SRCGW=192.168.1.254
    DSTGW=192.168.2.254
    SRCNET=192.168.1.0/24
    DSTNET=192.168.2.0/24
    DST=10.0.20.222
    服务器B的ifcfg-ipsec0文件
代码:
    TYPE=IPSEC
    ONBOOT=yes
    IKE_METHOD=PSK
    SRCGW=192.168.2.254
    DSTGW=192.168.1.254
    SRCNET=192.168.2.0/24
    DSTNET=192.168.1.0/24
    DST=10.0.10.111
    连接被设置成引导时被引发(ONBOOT=yes),并使用预共享钥匙验证方法(IKE_METHOD=PSK)。LAN A 输入目标网关(即 LAN B 的网关 DSTGW=192.168.2.254),以及源网关(即 LAN A 的网关 IP 地址 SRCGW=192.168.1.254)。然后输入目标网络,即 LAN B 的网络范围(DSTNET=192.168.2.0/24),以及源网络(SRCNET=192.168.1.0/24)。最后输入目标 IP 地址,它是 LAN B 的可从外界进入的 IP 地址(10.0.20.222)。LAN B需要做了同样的事情,只是把目标换成了LAN A的。
服务器A和B的keys-ipsec0文件必须完全保持一致:
代码:
    IKE_PSK=KissingwolfATlinuxsir
    keys-ipsec0 文件的权限要求严格,必须设为非root用户无任何操作权限
代码:
     #chown root.root /etc/sysconfig/network-scripts/keys-ipsec0
     #chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0
    分别在服务器A和B上均创建完这两个文件后,我们需要确认两服务器上的/etc/racoon/racoon.conf 文件是如下内容:
代码:
     # Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
sainfo anonymous
{
 pfs_group 2;
 lifetime time 1 hour ;
 encryption_algorithm 3des, blowfish 448, rijndael ;
 authentication_algorithm hmac_sha1, hmac_md5 ;
 compression_algorithm deflate ;
}
     如果设置正确接下来我们就可以开启ipsec0设备了!分别在服务器A和B上ifup 设备ipsec0:
代码:
     # ifup ipsec0
     连接被激活,LAN A 和 LAN B 能够彼此通信。通过对 IPsec 连接运行 ifup,192.168.1.0/24到192.168.2.0/24的路由会通过初始脚本被自动创建。要显示网络的路由列表,运行以下命令:
代码:
     # /sbin/ip route list
     要测试 IPsec 连接,运行 tcpdump 工具来查看在主机(或网络)间传输的网络分组,并校验它们是否通过 IPsec 被加密了。分组应该包括 AH 头,而且应该被显示为 ESP 分组。ESP 意味着它被加密了。例如,要检查 LAN A 的 IPsec 连接,在服务器A上键入:
代码:
     #tcpdump -n -i eth0 host 10.0.1.111
     12:17:03.143517 10.0.2.222 > 10.0.1.111: AH(spi=0x021c9734,seq=0x365): \
   10.0.2.222 > 10.0.1.111: ESP(spi=0x00c897ad,seq=0x365) (DF) \
   (ipip-proto-4)
     ..........................................................................
     本文出自 51CTO.COM技术博客