1.IPSec
1.1. 简介&功能
1.2. 组成&原理
2.IPSec VPN
2.1 setkey
2.2 openswan
3.推荐阅读
Internet Protocol Security (IPsec) is a protocol suite for securing Internet Protocol (IP) communications by authenticating and encrypting each IP packet of a data stream.
这是wikipedia对IPsec的定义中,有几个关键点:
IPSec是IETF(Internet Engineering Task Force,Internet工程任务组)的IPSec小组建立的一组IP安全协议集。
IPSec定义了在网际层使用的安全服务,其功能包括
IPSec的安全服务要求支持共享密钥完成认证和/或保密,并且手工输入密钥的方式是必须要支持的,
其目的是要保证IPSec协议的互操作性。
当然,手工输入密钥方式的扩展能力很差,因此在IPSec协议中引入了一个密钥管理协议,称Internet密钥交换协议——IKE,
该协议可以动态认证IPSec对等体,协商安全服务,并自动生成共享密钥。
IPSec原理简述
下面IPSec 配置实例,分别介绍手动配置密钥和自动协商密钥。
网络拓扑1
PC-A <======> PC-B
20.20.20.21/24 20.20.20.22/24
网络拓扑2
subnet -A <------> Gateway-A <======> Gateway-B <------> subnet-B
10.10.10.0/24 20.20.20.21/24 20.20.20.22/24 30.30.30.0/24
下面的实例在网络拓扑1下配置传输模式(transport mode),在网络拓扑2下配置隧道模式(tunnel mode)
加载SA和SP的命令: setkey -f setkey.conf
查看SA的命令: setkey -D
查看SP的命令: setkey -DP
清除SA的命令: setkey -F
清除SP的命令: setkey -PF
transport mode configure file
#!/usr/sbin/setkey -f
flush;
spdflush;
#ESP
add 20.20.20.21 20.20.20.22 esp 0x201 -E aes-cbc 0xfd64273b58d4e10af257ee5f7518a5e88a9ae77cf6f5a741 auth hmac-md5 0xca2cef3e4e00a0a111d3aa0048ec1ce1;
add 20.20.20.22 20.20.20.21 esp 0x301 -E aes-cbc 0xfd64273b58d4e10af257ee5f7518a5e88a9ae77cf6f5a742 auth hmac-md5 0xca2cef3e4e00a0a111d3aa0048ec1ce2;
#Security policies
spdadd 20.20.20.21 20.20.20.22 any -P out ipsec
esp/transport//require;
spdadd 20.20.20.22 20.20.20.21 any -P in ipsec
esp/transport//require;
tunnel mode configure file
#!/usr/sbin/setkey -f
flush;
spdflush;
#ESP
add 20.20.20.21 20.20.20.22 esp 0x201 -m tunnel -E 3des-cbc 0xfd64273b58d4e10af257ee5f7518a5e88a9ae77cf6f5a74e -A hmac-md5 0xca2cef3e4e00a0a111d3aa0048ec1ce3;
add 20.20.20.22 20.20.20.21 esp 0x301 -m tunnel -E 3des-cbc 0x435f03cdea95e04661282253b073b4d9502d96fd153fe5b -A hmac-md5 0xab9a40aa45320f50d584eae1bb762058;
#Security policies
spdadd 10.10.10.0/24 30.30.30.0/24 any -P in ipsec
esp/tunnel/20.20.20.21-20.20.20.22/require;
spdadd 30.30.30.0/24 10.10.10.0/24 any -P out ipsec
esp/tunnel/20.20.20.22-20.20.20.21/require;
在ubuntu下apt-get install openswan
进行安装。
配置好/etc/ipsec.secret
和/etc/ipsec.conf
之后,重启ipsec
服务: service ipsec restart
tansport mode
主机A和主机B配置完全一样
/etc/ipsec.secrets
20.20.20.21 20.20.20.22: PSK "hello,world!"
/etc/ipsec.conf
conn host-host
type=transport
authby=secret
left=20.20.20.21
right=20.20.20.22
pfs=yes
auto=start
tunnel mode
主机A和主机B配置完全一样
/etc/ipsec.secrets
20.20.20.21 20.20.20.22: PSK "hello,world!"
/etc/ipsec.conf
conn net-net
type=transport
authby=secret
left=20.20.20.21
leftsubnet=10.10.10.0/24
right=20.20.20.22
rightsubnet=30.30.30.0/24
pfs=yes
auto=start
#on host 20.20.20.21, eth2's IP is 20.20.20.21
ping 20.20.20.22
tcpdump -i eth2 -e