如何使用Strongswan设置IKEv2 VPN并让我们在CentOS 7上加密

如何使用Strongswan设置IKEv2 VPN并让我们在CentOS 7上加密

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

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

先决条件

  • CentOS 7服务器
  • Root权限

我们将要做什么?

  1. 在CentOS 7上安装Strongswan
  2. 生成SSL Letsencrypt
  3. 配置Strongswan
  4. 启用NAT防火墙
  5. 启用端口转发
  6. 测试

第1步 - 在CentOS 7上安装Strongswan

在第一步中,我们将安装strongswan IPsec实现软件和EPEL存储库所需的所有软件包。

安装EPEL存储库并使用下面的yum命令安装strongswan软件包。

yum -y install epel-release
yum -y install strongswan

等待安装strongswan软件包。

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

我们将使用域名“ikev2.hakase-labs.io”创建IKEv2 VPN服务器,并使用从letsencrypt生成的证书。

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

安装'certbot'letsencrypt工具。

yum -y install certbot

在certbot安装之后,我们需要使用firewall-cmd打开服务器的HTTP和HTTPS端口。

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

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

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

运行下面的certbot命令。

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

已经生成了vpn域名'ikev2.hakase-labs.io'的Letsencrypt证书,它们位于'/ etc / letsencrypt / live'目录中。

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

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

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

tree /etc/strongswan/ipsec.d/

第3步 - 配置Strongswan

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

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

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

vim ipsec.conf

并粘贴以下配置。

#global configuration IPsec
#chron logger
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

#define new ipsec connection
conn hakase-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    ike=aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes256-aes128-sha256-sha1-modp2048-modp4096-modp1024,aes256-sha1-modp1024,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16-aes256gcm12-aes128gcm16-aes128gcm12-sha256-sha1-modp2048-modp4096-modp1024,3des-sha1-modp1024!
    esp=aes128-aes256-sha1-sha256-modp2048-modp4096-modp1024,aes128-sha1,aes128-sha1-modp1024,aes128-sha1-modp1536,aes128-sha1-modp2048,aes128-sha256,aes128-sha256-ecp256,aes128-sha256-modp1024,aes128-sha256-modp1536,aes128-sha256-modp2048,aes128gcm12-aes128gcm16-aes256gcm12-aes256gcm16-modp2048-modp4096-modp1024,aes128gcm16,aes128gcm16-ecp256,aes256-sha1,aes256-sha256,aes256-sha256-modp1024,aes256-sha256-modp1536,aes256-sha256-modp2048,aes256-sha256-modp4096,aes256-sha384,aes256-sha384-ecp384,aes256-sha384-modp1024,aes256-sha384-modp1536,aes256-sha384-modp2048,aes256-sha384-modp4096,aes256gcm16,aes256gcm16-ecp384,3des-sha1!
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@ikev2.hakase-labs.io
    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

保存并退出。

配置细节:

  • 创建名为“hakase-vpn”的新IPSec VPN隧道连接。
  • 指定IKEv2和ESP密码套件以进行身份​​验证。
  • “左”服务器配置使用域名“ikev2.hakase-labs.io”并使用位于“/etc/strongswan/ipsec.d/certs”目录中的letsencrypt证书“fullchain.pem”。
  • 使用EAP身份验证方法'eap-mschapv2'的'正确'客户端/远程设置,将虚拟IP地址范围'10 .15.1.0 / 24'分配给所有连接的客户端,并使用公共DNS Cloudflare和google。

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

编辑'ipsec.secrets'文件。

vim ipsec.secrets

粘贴下面的配置。

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

保存并退出。

配置细节:

  • 使用位于'/etc/strongswan/ipsec.d/private'目录下的letsencrypt证书'privkey.pem'指定RSA服务器私钥。
  • 使用'user:EAP“密码”'格式定义EAP用户凭据。

strongswan IPSec配置已完成。 启动strongswan服务并使其在系统引导时每次启动。

systemctl start strongswan
systemctl enable 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

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


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


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

在Android上

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

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

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

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏