12
2019
03
15:35:15

基于Libreswan的Ipsec VPN在Ubuntu上使用预共享和RSA密钥

https://www.howtoing.com/libreswan-based-ipsec-vpn-using-preshared-and-rsa-keys/

在本教程中,LibreSwan将安装在Ubuntu平台上。 LibreSwan是IPsec协议的开源实现,它基于FreeSwan项目,可以在RedHat的Linux发行版上使用该软件包。 然而,项目的源代码中给出了详细的说明,以便在其他Linux平台上进行编译。 安装过程之后,将配置基于网关的IPsec VPN网关,以保护数据从发送方到接收方的对等体。

有关IPsec协议的详细信息,请参见我们上一篇文章 。 但是,关于LibreSwan的IPsec协议的两个部分的简要信息如下所述。

基于IPsec的VPN由Internet密钥交换协议和封装安全有效载荷 (ESP)协议组成。

- > IKE

正如名称所示,IKE协议的目的是认证(使用VPN的预共享密钥,公开密钥加密,自由连接)对等体来动态生成密钥并与VPN对等体共享密钥。 IPsec第二阶段的加密密钥也取决于IKE。 Libreswan使用项目的pluto程序实现IKE协议。

- > ESP 

ESP协议是在Linux内核(NETEY / XFRM)IPsec中实现的对等体约定策略的实际规范。

Libreswan功能

  • 支持基于预共享密钥的认证。

  • 支持基于公钥的认证。

  • 支持IKE v1 / v2版本的密钥交换。

  • 支持NSS加密库。

  • 还支持Xauth和DNSSec。

Ubuntu 16.04所需的软件包 

需要在Ubuntu上安装以下软件包才能成功编译LibreSwan。 源代码中还提供了简要信息,当您安装LibreSwan时如何启用或禁用插件/功能和命令。

编译LibreSwan

apt-get -y update
apt-get install  libunbound-dev libevent-dev  libsystemd-dev libnss3-dev libnspr4-dev pkg-config \ libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make libnss3-tools

在Ubuntu上安装LibreSwan依赖项

所需软件包的安装如下所示。

安装依赖关系

使用wget命令下载IPsec工具的最新源代码,并使用以下tar命令进行解压缩。

wget https://download.libreswan.org/libreswan-3.20.tar.gz

tar -xzf libreswan-3.20.tar.gz

cd libreswan-3.20

下载并解压缩LibreSwan

没有必要运行configure命令,只需运行make命令即可 这将显示如下所示的两种构建LibreSwan的方法。

在LibreSwan上运行make命令

最后,运行make all命令在平台上构建LibreSwan。

make all

运行使所有

现在运行make install命令安装IPsec程序。

运行make install

启动IPsec服务

如上图所示,需要使用以下命令在Ubuntu平台上启用IPSec服务。

systemctl enable ipsec.service

启用IPSec服务

在启动IPsec服务之前需要初始化NSS加密库。 它由LibreSwan用于IPsec VPN中的加密算法使用。

IPsec initnss


初始化NSS加密

最后,使用以下命令启动IPSec服务。

ipsec setup start

启动IPSec设置

运行ipsec status命令查看Ubuntu平台上LibreSwan的设置。

ipsec status

ipsec状态

LibreSwan配置

在本教程中,将使用预共享密钥和RSA密钥(公共/私有密钥对)在对等体之间建立IPsec VPN。 两个对等体的配置(左/右)如下。

基于预共享密钥的VPN 

ipsec.conf (configuration file of left VM)              ipsec.secrets  (configuration file of left VM)

版本2 192.168.15.145 192.168.15.245:PSK“vpn_psk123”

配置设置 
protostack = netkey 
conn vpn_psk

ike = aes256-sha256; modp4096 
phase2alg = aes256-sha256; modp4096 
左= 192.168.15.145 
leftsubnet = 172.16.10.0 / 24 
right = 192.168.15.245 
rightsubnet = 192.169.50.0 / 24 
authby =秘密 
type = tunnel 
自动=开始

ipsec.conf (configuration file of right VM)              ipsec.secrets  (configuration file of right VM)

版本2 192.168.15.245 192.168.15.145:PSK“vpn_psk123”

配置设置 
protostack = netkey 
conn vpn_psk

ike = aes256-sha256; modp4096 
phase2alg = aes256-sha256; modp4096 
左= 192.168.15.245 
leftsubnet = 192.169.50.0 / 24 
right = 192.168.15.145 
rightsubnet = 172.16.10.0 / 24 
authby =秘密 
type = tunnel 
自动=开始

在ipsec.conf和ipsec.secrets文件中设置上述配置后,双方运行以下命令启动IPSec协商过程。

ipsec restart

预共享密钥VPN的状态

ipsec状态setkey -D命令的输出如下所示。

ipsec status

ipsec状态

setkey -D

setkey

基于RSA(公共/私有)密钥的VPN 

需要为两台机器生成RSA密钥,并将它们包含在配置文件中。 本教程中显示了RSA密钥的简化版本。 还要确保包含的公钥应该是单行的。

生成RSA密钥

如下图所示,以下命令用于生成两个对等体的密钥。

 ipsec newhostkey --output /etc/ipsec.secrets

生成RSA密钥

生成的公钥将添加到ipsec.secrets文件中,如下所示。

添加pubkey到ipsec秘密

类似地,使用与以下快照中所示的右侧机器相同的命令生成RSA密钥。

生成rsa键

如上所示,密钥生成命令自动在两台对等机器上包含/etc/ipsec.secrets中的RSA公钥。 RSA的私钥存储在NSS的数据库/etc/ipsec.d/*.db文件下。

生成RSA密钥后,下一步将更改ipsec.conf文件中两台机器的配置。

ipsec.conf (configuration file of left VM)             

版本2 

配置设置 
protostack = netkey 
conn vpn_rsa

ike = aes256-sha256; modp4096 
phase2alg = aes256-sha256; modp4096 
左= 192.168.15.145 
leftsubnet = 172.16.10.0 / 24 
right = 192.168.15.245 
rightsubnet = 192.169.50.0 / 24 
authby = rsasig 
leftrsasigkey = 0sAQPgMUjAb8QOQaJ1FTkIQf3f [........] ALQNXUf $ 
rightrsasigkey = 0sAQOs7aPh6LppUGgC454 + W [........] fSd2zQE 
type = tunnel 
自动=开始

ipsec.conf (configuration file of right VM)              

版本2

配置设置 
protostack = netkey 
conn vpn_rsa

ike = aes256-sha256; modp4096 
phase2alg = aes256-sha256; modp4096 
左= 192.168.15.245 
leftsubnet = 192.169.50.0 / 24 
right = 192.168.15.145 
rightsubnet = 172.16.10.0 / 24 
         authby = rsasig 
rightrsasigkey = 0sAQPgMUjAb8QOQaJ1FTkIQf3f [........] ALQNXUf $ 
leftrsasigkey = 0sAQOs7aPh6LppUGgC454 + W [........] fSd2zQE 
type = tunnel 
自动=开始

更改LibreSwan配置文件后,下一步是使用以下命令在两台机器上重新启动IPsec服务。

ipsec restart

左侧设备上的IPsec VPN状态如下图所示。 说明RSASIG用于认证IPsec隧道对等体的策略。

本教程的目的是探索提供IPsec协议实现的“LibreSwan”。 它在RedHat发行版中可用,但是可以轻松地为另一个平台(如Ubuntu / Debian)进行编译。 在本文中,第一个LibreSwan工具是从源代码构建的,然后使用在网关设备之间的预共享和RSA密钥配置两个VPN。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/308.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: