Linux 下 IPsec-tools的使用

Ipsec-tools有人工和自动两种方式来管理SA。

Manual keyed connections using setkey

所有连接所需的参数均由管理员提供。不使用IKE协议来自动认证对端和协商参数。管理员来决定用哪个协议、算法和密钥来创建安全联盟。

Transport Mode

使用Setkey命令可以修改SAD和SPD中存储的所有参数。Setkey -f /etc/setkey.conf表示从setkey.conf文件中读取命令。

一个可能的/etc/setkey.conf文件如下:

#!/usr/sbin/setkey -f

# Configuration for 192.168.1.100

# Flush the SAD and SPD

flush;

spdflush;

# Attention: Use this keys only for testing purposes!

# Generate your own keys!

# AH SAs using 128 bit long keys

add 192.168.1.100 192.168.2.100 ah 0x200 -A hmac-md5 0xc0291ff014dccdd03874d9e8e4cdf3e6;

add 192.168.2.100 192.168.1.100 ah 0x300 -A hmac-md5 0x96358c90783bbfa3d7b196ceabe0536b;

# ESP SAs using 192 bit long keys (168 + 24 parity)

add 192.168.1.100 192.168.2.100 esp 0x201 -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831;

add 192.168.2.100 192.168.1.100 esp 0x301 -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df;

# Security policies

spdadd 192.168.1.100 192.168.2.100 any -P out ipsec esp/transport//require ah/transport//require;

spdadd 192.168.2.100 192.168.1.100 any -P in ipsec esp/transport//require

ah/transport//require;

脚本首先刷新SAD和SPD。然后创建AH SAs和ESP SAs。Add命令添加一个安全联盟到SAD,说明源和目的IP地址,IPsec 协议(ah),SPI(0x200)和算法。认证算法用-A表示,加密用-E,压缩用-C;IP 压缩现在并未提供支持。算法后要

提供密钥。可以以"ASCII"或0x十六进制的格式。

Linux对AH和ESP支持以下算法:hmac-md5和hmac-sha,des-cbc和3des-cbc。在短期内以下算法可能被支持:simple(no encryption),blowfish-cbc,aes-cbc,hmac-sha2-256和hmac-sha2-512。

Spdadd向SPD中添加安全策略。这些策略指定哪些数据包将被IPsec保护以及将使用哪种协议和密钥。命令需要数据包的源和目的地址,协议(和端口)和使用的策略(-P)。策略指出方向(in/out),采用何种方式(ipsec/discard/none),

协议(ah/esp/ipcomp),传输模式(transport)和level(use/require)。

IPsec通信的双方都需要创建配置文件。一旦配置完成可以使用setkey -f /etc/setkey.conf来载入。测试和显示是否配置成功:

# setkey -D

# setkey -DP

Tunnel Mode

当通信双方使用IPsec作为网关或者保护两个网络之间的通信时采用隧道模式。一个网关把原始IP数据包加密并封装再传给它的对端。对端将解封并传送原始未保护的数据包。

隧道模式中SA和SP的配置与传输模式相似。

#!/usr/sbin/setkey -f

# Flush the SAD and SPD

flush;

spdflush;

# ESP SAs doing encryption using 192 bit long keys (168 + 24 parity)

# and authentication using 128 bit long keys

add 192.168.1.100 192.168.2.100 esp 0x201 -m tunnel -E 3des-cbc 0x7aeaca3f87d060a12f4a4487d5a5c3355920fae69a96c831 -A hmac-md5 0xc0291ff014dccdd03874d9e8e4cdf3e6;

add 192.168.2.100 192.168.1.100 esp 0x301 -m tunnel -E 3des-cbc 0xf6ddb555acfd9d77b03ea3843f2653255afe8eb5573965df -A hmac-md5 0x96358c90783bbfa3d7b196ceabe0536b;

# Security policies

spdadd 172.16.1.0/24 172.16.2.0/24 any -P out ipsec

esp/tunnel/192.168.1.100-192.168.2.100/require;

spdadd 172.16.2.0/24 172.16.1.0/24 any -P in ipsec esp/tunnel/192.168.2.100-192.168.1.100/require;

Attention:当使用Linux 2.6.10以上核心时必须要定义转发策略(如果数据包需要被网关转发)。确认使用IPsec-tools 0.5(它会自动加上这条策略)或者如使用旧版本tools时需要自己加上。

如果在Kernel-mode(-k)下运行setkey还需要手工加上fwd-policy。

spdadd 172.16.2.0/24 172.16.1.0/24 any -P fwd ipsec esp/tunnel/192.168.2.100-192.168.1.100/require;

这个例子只使用了ESP协议。ESP能保证完整性和保密性。在这种情形下ESP算法的顺序是很重要的。首先要定义加密算法和它的密钥,然后是认证算法和它的密钥。

对于隧道的对端需要复制这个配置文件并且交换方向策略(in vs.out)。如果使用了转发策略,则必须另外反向IP地址的方向。

与BSD IPsec实现相反,Linux中的安全联盟只能使用传输或隧道中一种模式。传输模式是默认模式,所以如果需要隧道模式,必须定义-m tunnel。

如果隧道没有正常运行,请检查路由。主机需要知道它们要将数据包传给vpn网关。最简单的配置方式是将vpn网关设置为默认网关。

Automatic keyed connections using racoon

KAME对IKE的实现也被引进到Linux中,叫做racoon。这个实现能够自动建立IPsec加密连接。Racoon支持采用preshared keys,X.509证书和kerberos等方式进行认证。这部分将讲解主模式下利用preshared keys和X.509证书来

对racoon进行配置。

Preshared Keys

用racoon进行认证的最简单的方法是利用preshared keys。这些密钥必须在/etc/psk.txt文件中定义。这个文件不应该被非特权用户读取。

(chmod 400 /etc/psk.txt)具有以下语法:

# IPv4 Adressen

192.168.2.100 simple psk

5.0.0.1 0xe10bd52b0529b54aac97db63462850f3

# USER_FQDN

ralf@spenneberg.net This is a psk for an email address

# FQDN

www.spenneberg.net This is a psk

这个文件以列来组织。第一列保存被此psk认证的对端的身份。第二列就是PSK。

对racoon的配置比较直观。下面是一个典型的/etc/racoon.conf配置文件:

path pre_shared_key "/etc/psk.txt";

remote 192.168.2.100 {

exchange_mode main;

proposal {

encryption_algorithm 3des;

hash_algorithm md5;

authentication_method pre_shared_key;

dh_group modp1024;

}

}

sainfo address 172.16.1.0/24 any address 172.16.2.0/24 any {

pfs_group modp768;

encryption_algorithm 3des;

authentication_algorithm hmac_md5;

compression_algorithm deflate;

}

第一行说明racoon在哪里找到preshared keys。然后定义了一个对端192.168.2.100和IKE协商的第一阶段所需要的参数。第二段定义了SA的建立可能需要的参数。这个定义可以指定一个IP,或者一般性的使用anonymous来代替。在这

里定义了用于SA的加密、认证和压缩算法。这三个都需要被定义以避免在racoon的建立过程中出错。

Racoon并不在一开始就马上开始隧道协商,而是等到需要时才建立。所以内核需要知道什么时候通知racoon。为了实现这一点,管理员需要在没有合适的SA的情况下定义SP。

一旦内核需要根据SP保护一个数据包时而没有SA存在,racoon将会启动IKE协商然后将在完成时创建SA。内核这时就能传送数据包了。

假设192.168.1.100上需要如下策略:

#!/usr/sbin/setkey -f

#

# Flush SAD and SPD

flush;

spdflush;

# Create policies for racoon

spdadd 172.16.1.0/24 172.16.2.0/24 any -P out ipsec esp/tunnel/192.168.1.100-192.168.2.100/require;

spdadd 172.16.2.0/24 172.16.1.0/24 any -P in ipsec esp/tunnel/192.168.2.100-192.168.1.100/require;

一旦使用setkey -f /etc/setkey.conf加载这些策略,racoon就可以启动了。Racoon可以用racoon -F -f /etc/racoon.conf来启动。同时,对端的方向问题也要注意。/etc/psk.txt,/etc/setkey.conf和/etc/racoon.conf中的IP地址也要改变。

X.509 Certificates

Racoon支持使用X.509证书来实现认证过程。配置与PSK相似只是认证部分不同:

path certificate "/etc/certs";

remote 192.168.2.100 {

exchange_mode main;

certificate_type x509 "my_certificate.pem" "my_private_key.pem";

verify_cert on;

my_identifier asn1dn;

peers_identifier asn1dn;

proposal {

encryption_algorithm 3des;

hash_algorithm md5;

authentication_method rsasig;

dh_group modp1024;

}

}

sainfo address 172.16.1.0/24 any address 172.16.2.0/24 any {

pfs_group modp768;

encryption_algorithm 3des;

authentication_algorithm hmac_md5;

compression_algorithm deflate;

}

证书和私钥存储在/etc/certs。在配置文件中可用path certificate选项进行path设置。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值