QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 860|回复: 4

CIPE 服务器配置

[复制链接]
发表于 2004-11-22 14:36:37 | 显示全部楼层 |阅读模式
局域网192.168.1.0/24--->eth0:lan.example.com | eth1:192.168.1.1| cipcb0:10.0.1.1----->eth0:remote.example.net|cipcd0:10.0.1.2

CIPE 安装

在 Linux 下安装 CIPE 和安装网络接口一样。CIPE RPM 软件包包含 /etc/cipe/ 中的配置文件、CIPE 守护进程(/usr/sbin/ciped-cb)、载入内核模块和激活/解除 CIPE 接口(if*-cipcb)的网络脚本、以及 /usr/share/doc/cipe-<version>/samples/ 中的配置文件范例。其中还包括了一个详细解释 CIPE 协议和各类实现细节的文本信息文件。

以下说明详细描述了一个配置范例。它涉及了一个想要安全地连接到带有 CIPE 网关的远程 LAN 的工作站客户。这个工作站使用电缆调制解调器连接的动态 IP 地址,启用了 CIPE 的网关机器使用 192.168.1.0/24 范围。这被称为是“典型”的 CIPE 配置。图 6-1显示了这种典型 CIPE 设置。

在客户和 CIPE 服务器间安装 CIPE 会允许你使用互联网作为 WAN 交通的传输媒介来进行安全的端到端连接。客户工作站通过互联网给启用了 CIPE 的防火墙发送一份文件,每个分组都被加以时间戳、并被给予接收端的地址。然后,目标防火墙读取它的头信息,剥离它,并把它传送给远程 LAN 路由器,接着再被选路发送到目标节点。整个过程天衣无缝,并对终端用户完全透明。传输的主要过程是在启用了 CIPE 的对端间完成的。


CIPE 服务器配置

要设置 CIPE 服务器,从红帽企业 Linux 光盘或通过红帽网络来安装 cipe RPM 软件包。

        重要       
       

如果你使用的是较老的红帽企业 Linux,并且/或者有一个较老的 CIPE,你应该升级到最新的版本。

下一步是把位于 /usr/share/doc/cipe-version/samples/ 的配置文件范例复制到 /etc/cipe/ 中(这里的 version 是安装在你的系统上的 CIPE 版本)。复制完毕后,你将需要编辑 /etc/cipe/options.cipcbx(x 是从0开始的递增数字,为那些想要在 CIPE 服务器上不止有一个 CIPE 连接的客户提供)文件来包括你的 LAN 子网地址和可公共选路的防火墙 IP 地址。以下是包括在红帽企业 Linux CIPE RPM 中的 options 文件范例。在这个例子中,它被重命名为 options.cipbcb0:

# Surprise, this file allows comments (but only on a line by themselves)
# This is probably the minimal set of options that has to be set
# Without a "device" line, the device is picked dynamically

# the peer's IP address
ptpaddr         6.5.4.3

# our CIPE device's IP address
ipaddr          6.7.8.9

# my UDP address. Note: if you set port 0 here, the system will pick
# one and tell it to you via the ip-up script. Same holds for IP 0.0.0.0.
me              bigred.inka.de:6789

# ...and the UDP address we connect to. Of course no wildcards here.
peer            blackforest.inka.de:6543

# The static key. Keep this file secret!
# The key is 128 bits in hexadecimal notation.
key             xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ptpaddr 是远程 LAN 的 CIPE 地址。ipaddr 是工作站的 CIPE IP 地址。me 地址是客户的可公共选路的 IP 地址,它通过互联网发送 UDP 分组。peer 是 CIPE 服务器的可公共选路的 IP 地址。注意,客户工作站的 IP 地址是 0.0.0.0,因为它使用动态连接。CIPE 客户将会处理到 CIPE 服务器的连接。key 字段(用 x 代表;你的钥匙应该是密钥)是共享静态钥匙。这个钥匙在两个对端上必须是相同的,否则连接就不能成立。关于如何为你的 CIPE 机器生成共享静态钥匙,请参阅第 6.8 节。

这是客户工作站将会使用的被编辑过的 /etc/cipe/options.cipcb0:

ptpaddr        10.0.1.2
ipaddr         10.0.1.1
me             0.0.0.0
peer           LAN.EXAMPLE.COM:6969
key            123456ourlittlesecret7890shhhh

这是 CIPE 服务器的 /etc/cipe/options.cipcb0 文件:

ptpaddr        10.0.1.1
ipaddr         10.0.1.2
me             LAN.EXAMPLE.COM:6969
peer           0.0.0.0
key            123456ourlittlesecret7890shhhh
 楼主| 发表于 2004-11-22 14:39:06 | 显示全部楼层
6.6. 配置客户的 CIPE

成功地配置了 CIPE 服务器并测试了它的功能后,你现在就可以在客户机器上使用这种连接了。

CIPE 客户应该能够自动地连接和断开 CIPE 连接。因此,CIPE 包含内建的机制来为个别使用自定设置。例如,远程职员可以通过键入以下命令来连接到 LAN 上的 CIPE 设备:

/sbin/ifup cipcb0

设备应该自动出现;防火墙规则和选路信息也应该和连接一起配置。远程职员应该能够使用以下命令来终止连接:

/sbin/ifdown cipcb0

配置客户需要创建在设备被载入后需运行的脚本。服务配置本身可以通过用户创建的文件 /etc/sysconfig/network-scripts/ifcfg-cipcb0 来本地配置。这个文件中包含一些参数,如判定 CIPE 连接是否在引导时发生的参数;代表 CIPE 设备名称的参数等。以下是一个连接到 CIPE 服务器的远程客户的 ifcfg-cipcb0 文件:

DEVICE=cipcb0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

# This is the device for which we add a host route to our CIPE peer through.
# You may hard code this, but if left blank, we will try to guess from
# the routing table in the /etc/cipe/ip-up.local file.
PEERROUTEDEV=

# We need to use internal DNS when connected via cipe.
DNS=192.168.1.254

CIPE 设备的名称是 cipcb0。CIPE 设备将会在引导时间被载入(通过 ONBOOT 字段配置),而且将不会使用一种引导协议(如 DHCP)来接收该设备的 IP 地址。PEERROUTEDEV 字段决定连接到客户的 CIPE 服务器设备名称。如果这个字段中没有指定任何设备,在设备被载入后就会为它决定一个。

如果你的内部网络是在防火墙背后,你需要设置规则来允许客户机器上的 CIPE 接口发送和接收 UDP 分组。关于为红帽企业 Linux 配置防火墙的信息请参阅第7章 。我们这个配置例子中使用了 iptables 规则。

        注记       
       

客户应该这样配置,因此所有被本地化的参数都被放在一个用户创建的叫做/etc/cipe/ip-up.local 的文件中。CIPE 会话被关闭后,应该使用 /etc/cipe/ip-down.local 来还原本地参数。

客户机器上的防火墙应该被配置接受 CIPE UDP 封装分组。规则的差距可能会很大,但是对 UDP 分组的基本接受对于 CIPE 连接来说却是必需的。以下的 iptables 规则允许连接到 LAN 上的远程客户机器进行 UDP CIPE 传输;最后一条规则添加了 IP 伪装来允许远程客户与 LAN 和互联网通信。

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.1
/sbin/iptables -A INPUT -j ACCEPT -i cipcb0
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

你必须还在客户机器上添加用来像访问本地网络一样访问 CIPE 连接背后的节点的选路规则。这可以通过运行 route 命令来完成。在我们的例子中,客户工作站需要添加以下网络路线:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2

以下显示了用于客户工作站的最终 /etc/cipe/ip-up.local 脚本:

#!/bin/bash -v
if [ -f /etc/sysconfig/network-scripts/ifcfg-$1 ] ; then
        . /etc/sysconfig/network-scripts/ifcfg-$1
else
        cat <<EOT | logger
Cannot find config file ifcfg-$1. Exiting.
EOF
        exit 1
fi

if [ -n ${PEERROUTEDEV} ]; then
        cat <<EOT | logger
Cannot find a default route to send cipe packets through!
Punting and hoping for the best.
EOT
        # Use routing table to determine peer gateway
        export PEERROUTEDEV=`/sbin/route -n | grep ^0.0.0.0 | head -n 1 \
           | awk '{ print $NF }'`

fi

####################################################
# Add The routes for the remote local area network #
####################################################

route add -host 10.0.1.2 dev $PEERROUTEDEV
route add -net 192.168.1.0 netmask 255.255.255.0 dev $1

####################################################
# IP TABLES Rules to restrict traffic              #
####################################################

/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p udp -s 10.0.1.2
/sbin/iptables -A INPUT -j ACCEPT -i $1
/sbin/iptables -A INPUT -j ACCEPT -i lo
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
回复

使用道具 举报

 楼主| 发表于 2004-11-22 14:42:41 | 显示全部楼层
定制 CIPE

CIPE 的配置方法多种多样,你可以在启动 ciped 时作为命令行参数来传递它们,也可以生成新的共享静态钥匙。这给安全管理员定制 CIPE 会话来在保证安全的同时还提高生成率方面提供了灵活性。

        注记       
       

最常用的参数应该被放在 /etc/cipe/options.cipcbx 文件中,它们会在运行时间被自动载入。

请注意,任何在命令行中作为选项来传递的参数将会超越和在 /etc/cipe/options.cipcbx 配置文件中设置的相应参数。

表 6-1详细描述了一些运行 ciped 守护进程时的命令行参数。
参数        描述       
arg        把参数传递给 /etc/cipe/ip-up 初始脚本       
cttl        设置载体生存时间值(TTL);推荐的值是64       
debug        启用调试的布尔值       
device        给 CIPE 设备命名       
ipaddr        CIPE 机器的可公开选路的 IP 地址       
ipdown        选择另一个 ip-down 脚本,而不是默认的 /etc/cipe/ip-down       
ipup        选择另一个 ip-up 脚本,而不是默认的 /etc/cipe/ip-up       
key        为 CIPE 连接指定一个共享静态密钥       
maxerr        在 CIPE 守护进程退出前允许的错误数量       
me        CIPE 机器的 UDP 地址       
mtu        设置设备的最大传输单位       
nokey        不使用加密       
peer        对端的 CIPE UDP 地址       
ping        设置 CIPE 特有的(非 ICMP)保持活跃 ping 间隔       
socks        用于代理连接的 SOCKS 服务器的 IP 地址和端口号码       
tokey        设置动态钥匙的活跃时间;默认为10分钟(600秒)       
tokxc        共享钥匙互换的超时值;默认为10秒钟       
tokxts        共享钥匙互换时间戳的超时值;默认为0(无时间戳)       
toping        保存活跃 ping 的超时值;默认为0       

表 6-1. CIPE 参数
CIPE 的钥匙管理

如前面所提到,CIPE 包括一个静态链接钥匙(link key)和加密交通的安全组合来在载体网络如互联网中创建一个安全隧道。静态链接钥匙为两个启用了 CIPE 的网络安全传递信息提供了一个公共参考点。因此,这两个启用了 CIPE 的网络网关分享完全相同的钥匙这一点是极端重要的,否则 CIPE 通信就不能够进行。

生成 CIPE 钥匙需要你懂得哪类钥匙是兼容的。随机的字母数字生成器是行不通的。静态钥匙必须是128位、32字符的字符串。这些字符串可以通过运行以下命令来被创建。该命令使用 od 来创建使用 /dev/random 随机数字设备的十六进制密钥:

od -N 16 /dev/random -t x4 | awk '{print $2 $3 $4 $5}'

把输出放在 /etc/cipe/options.cipcb0 文件中以用于所有 CIPE 服务器和客户。
回复

使用道具 举报

 楼主| 发表于 2004-11-22 14:43:20 | 显示全部楼层
IPsec 主机到主机配置

IPsec 可以通过主机到主机连接的配置来连接一个桌面或工作站到另一个桌面或工作站。这类连接使用每个主机所连的网络来创建彼此间的安全隧道。主机到主机连接的要求很少,每个主机的 IPsec 配置的要求也很少。主机只需要到载体网络(如互联网)的专用连接和红帽企业 Linux 就能够创建 IPsec 连接。

创建连接的第一步是从每个工作站收集系统和网络信息。对于主机到主机连接,你需要以下信息:

两个主机的 IP 地址

用来把 IPsec 连接从其它设备或连接中区别出来的独特名称(如 ipsec0)

固定的加密钥匙或被 racoon 自动生成的钥匙

被用来初始连接和在会话中交换加密钥匙的预共享验证钥匙

例如:假定工作站 A 和工作站 B 想通过 IPsec 隧道来彼此连接。它们想使用值为 foobarbaz 的预共享钥匙来连接,并且用户同意让 racoon 自动生成和共享每个主机间的验证钥匙。两个主机用户都决定把它们的连接命名为 ipsec0。

以下是工作站 A 的主机到主机 IPsec 连接的 ifcfg 文件。在这个例子中用来识别该连接的独特名称是 ipsec0,因此其结果文件被命名为 /etc/sysconfig/network-scripts/ifcfg-ipsec0。

DST=X.X.X.X
TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK

工作站 A 将会把 X.X.X.X 替换成工作站 B 的 IP 地址,而工作站 B 将会把 X.X.X.X 替换成工作站 A 的 IP 地址。连接被设置成引导时被引发(ONBOOT=yes),并使用预共享钥匙验证方法(IKE_METHOD=PSK)。

以下是预共享钥匙文件(叫做 /etc/sysconfig/network-scripts/keys-ipsec0),两个工作站都使用它来彼此验证。该文件的内容应该完全一致,并且只有根用户才应该有读写权。

IKE_PSK=foobarbaz

        重要       
       

要改变 keys-ipsec0 文件的权限,因此只有根用户才有读写权,在创建了该文件后执行以下命令:

chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0

要在任何时候改变验证钥匙,编辑两个工作站上的 keys-ipsec0 文件。两个文件必须完全一致才能保证正确的连接性。

除了 include "/etc/racoon/X.X.X.X.conf" 这个声明外,/etc/racoon/racoon.conf 文件应该完全一致。该声明(以及它引用的文件)在 IPsec 隧道被激活时被生成。对于工作站 A,include 声明中的 X.X.X.X 是工作站 B 的 IP 地址。工作站 B 的情况正好相反。下面显示了一个当 IPsec 连接被激活时的典型 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 ;
}
include "/etc/racoon/X.X.X.X.conf"

要启动连接,在每个主机上以根用户身份重新引导工作站或执行以下命令:

/sbin/ifup ipsec0

要测试 IPsec 连接,运行 tcpdump 工具来查看在主机(或网络)间传输的网络分组,并校验它们是否通过 IPsec 被加密了。分组应该包括 AH 头,而且应该被显示为 ESP 分组。ESP 意味着它被加密了。例如:

17:13:20.617872 pinky.example.com > ijin.example.com: \
    AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)
后退        起点
回复

使用道具 举报

 楼主| 发表于 2004-11-22 17:53:05 | 显示全部楼层
od -N 16 /dev/random -t x4 | awk '{print $2 $3 $4 $5}'
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 01:41 , Processed in 0.044552 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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