技术教程 · 2019年12月5日 0

如何使用Strongswan设置IKEv2 VPN并在CentOS 8上进行加密

Strongswan是一种开源的多平台IPSec实现。这是基于IPSec的VPN解决方案,专注于强大的身份验证机制。Strongswan支持IKEv1和IKEv2密钥交换协议,基于X.509证书或预共享密钥的身份验证以及安全的IKEv2 EAP用户身份验证。

在本教程中,我将向您展示如何使用Strongswan安装IPSec VPN服务器。我们将创建一个具有“ EAP-MSCHAPv2”身份验证的IKEv2 VPN服务器,并在CentOS 8服务器上使用Letsencrypt证书。

先决条件

  • CentOS 8服务器
  • 根特权

我们要做什么?

  • 在CentOS 8上安装Strongswan
  • 生成SSL Letsencrypt
  • 配置Strongswan
  • 启用NAT防火墙
  • 启用端口转发
  • 测试中

第1步-在CentOS 8上安装Strongswan

在第一步中,我们将安装Strongswan IPsec实施软件以及EPEL存储库中所需的所有软件包。

在安装strongswan软件包之前,必须将EPEL存储库添加到CentOS 8系统。

为CentOS 8服务器添加EPEL存储库。

sudo dnf install epel-release

之后,使用下面的dnf命令从EPEL存储库中安装strongswan软件包。

sudo dnf install strongswan

等待strongswan软件包安装。

安装Strongswan

第2步-使用“加密”生成SSL证书

在本指南中,我们将使用域名“ vpn.hakase-labs.io”创建IKEv2 VPN服务器,并使用letencrypt生成的证书。

在此步骤中,我们将手动安装letsencrypt工具“ certbot”,并为服务器域名“ vpn.hakase-labs.io”生成证书。

使用下面的wget命令从GitHub下载certbot二进制文件。

wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto

之后,通过更改文件的权限使其可执行。

chmod +x /usr/local/bin/certbot-auto

并且已经安装了用于生成Letsencrypt证书的certbot工具。

使用“加密”创建SSL证书

在生成Letsencrypt证书之前,我们需要使用firewall-cmd打开服务器的HTTP和HTTPS端口。

通过运行下面的firewall-cmd命令,将HTTP和HTTPS服务添加到firewalld服务列表中。

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

现在,我们可以使用Letencrypt工具certbot-auto生成新的SSL证书文件。

配置防火墙

自行更改电子邮件地址和域名,然后运行下面的“ certbot-auto”命令。

certbot-auto certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email hakase@gmail.com -d vpn.hakase-labs.io

完成后,您将获得如下结果。

使用Certbot获取SSL证书

您域名的所有证书都会生成到“ /etc/letsencrypt/live/domain.com”目录中。

接下来,我们需要将证书文件“ fullchain.pem”,“ privkey.pem”和“ chain.pem”复制到“ /etc/strongswan/ipsec.d/”目录中。

cp /etc/letsencrypt/live/vpn.hakase-labs.io/fullchain.pem /etc/strongswan/ipsec.d/certs/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/privkey.pem /etc/strongswan/ipsec.d/private/
cp /etc/letsencrypt/live/vpn.hakase-labs.io/chain.pem /etc/strongswan/ipsec.d/cacerts/

已生成名为“ vpn.hakase-labs.io”的所有Strongswan VPN的letsencrypt证书,并将其复制到“ /etc/strongswan/ipsec.d”目录中。

tree /etc/strongswan/ipsec.d/

Strongswan证书

步骤3-配置Strongswan

转到“ / etc / strongswan”目录并备份默认的“ ipsec.conf”配置文件。

cd /etc/strongswan/
mv ipsec.conf ipsec.conf.asli

使用vim编辑器创建一个新的“ ipsec.conf”。

vim ipsec.conf

并粘贴以下配置。

config setup
    uniqueids=never # allow multiple connections per user
    charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    fragmentation=yes
    closeaction=restart
    rekey=no
    dpdaction=clear
    keyexchange=ikev2
    compress=yes
    dpddelay=35s
    lifetime=3h
    ikelifetime=12h

    ike=aes256gcm16-prfsha512-ecp384!
    esp=aes256gcm16-ecp384!

    left=%any
    leftid=@vpn.linuxcreatures.com
    leftcert=fullchain.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.15.1.0/24
    rightdns=1.1.1.1,8.8.8.8
    rightsendcert=never
    eap_identity=%identity

conn ikev2-pubkey
    auto=add

保存并退出。

接下来,我们需要编辑“ ipsec.secrets”文件以定义RSA服务器私钥和EAP用户密码凭据。

编辑“ ipsec.secrets”文件。

vim ipsec.secrets

粘贴下面的配置。

: RSA "privkey.pem"
hakase : EAP "hakase321@"
tensai : EAP "tensai321@"

保存并退出。

并且Strongswan IPSec配置已完成。将Strongswan服务添加到启动引导时间,然后启动该服务。

systemctl enable strongswan
systemctl start strongswan

启用S​​trongswan守护程序

Strongswan服务已启动并正在CentOS 8服务器上运行,请使用以下命令进行检查。

systemctl status strongswan
netstat -plntu

结果将显示如下。

Strongswan成功启动

步骤4-在Firewalld中启用NAT

在此步骤中,我们将启用NAT伪装,并使用“丰富规则”配置在Firewalld上添加IPSec协议身份验证标头(AH)和封装安全有效载荷(ESP)。

将用于身份验证和加密协议的“ AH”和“ ESP”添加到firewalld。

firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="esp" accept'
firewall-cmd --zone=public --permanent --add-rich-rule='rule protocol value="ah" accept'

添加ipsec UDP端口和服务。

firewall-cmd --zone=public --permanent --add-port=500/udp
firewall-cmd --zone=public --permanent --add-port=4500/udp
firewall-cmd --zone=public --permanent --add-service="ipsec"

现在,启用NAT模式伪装并重新加载firewalld配置规则。

firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload

防火墙配置

在firewalld上启用了NAT模式,请使用以下命令进行检查。

firewall-cmd --list-all

以下是结果。

列出防火墙端口

第5步-启用端口转发

要启用端口转发,我们需要编辑“ sysctl.conf”文件。

使用vim编辑器编辑“ /etc/sysctl.conf”文件。

vim /etc/sysctl.conf

将以下配置粘贴到此处。

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

保存并退出,现在使用下面的sysctl命令重新加载。

sysctl -p

端口转发已启用。现在重新启动Strongswan服务。

systemctl restart strongswan

启用端口转发

步骤6-测试Strongswan IPSec VPN

在这种情况下,我们将在MacOS X和android手机上进行测试。

在MacOS上

-打开“系统偏好设置”,然后单击“网络”菜单。

单击“ +”按钮创建新的VPN连接。

    • 接口:“ VPN”
    • VPN类型:“ IKEv2”
    • 服务名称:’IKEv2-vpn

在MacOS上配置VPN

-在“服务器地址”和“远程ID”上,输入VPN域名“ ikev2.hakase-labs.io”。
-点击“身份验证设置”。
-使用“用户名”进行身份验证。
-输入用户名“ tensai”,密码为“ tensai321 @ ” 。-
单击“确定”,然后单击“应用”。

MacOS VPN身份验证设置

客户端上已创建新的IKEv2 VPN连接。现在单击连接按钮。

新的IKEv2 VPN连接已创建

客户端已连接到Strongswan VPN服务器,并具有内部/专用IP地址10.15.1.1。

在Android上

-从Google-Play下载并安装原生的Strongswan Android应用程序。
-添加新的VPN配置文件
-键入服务器域名“ ikev2.hakase-labs.io”,然后使用IKEv2 EAP用户名和密码身份验证。

以下是我们连接到VPN服务器时的结果。

在Android上配置VPN

已在CentOS 8服务器上使用Strongswan和Letsencrypt创建了基于IKEv2 IPSec的VPN服务器。

参考