Виртуальная частная сеть используется для создания частной сети из общедоступного интернет-соединения для защиты ваших данных.

VPN использует зашифрованный туннель для безопасной отправки и получения данных.

strongSwan – одно из самых известных программ для VPN, которое поддерживает различные операционные системы, включая Linux, OS X, FreeBSD, Windows, Android и iOS.

Он использует протоколы IKEv1 и IKEv2 для безопасного установления соединения.

Вы можете расширить его функциональность с помощью встроенных плагинов.

В этом руководстве мы объясним пошаговые инструкции по настройке KEv2 VPN-сервера с StrongSwan в Ubuntu 20.04.

Установка StrongSwan

По умолчанию StrongSwan доступен в репозитории Ubuntu 20.04 по умолчанию.

Вы можете установить его с другими необходимыми компонентами, используя следующую команду:

1
apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y

После установки всех пакетов вы можете приступить к созданию сертификата CA.

Как создать сертификат для VPN-сервера

Затем вам нужно будет сгенерировать сертификат и ключ для VPN-сервера, чтобы проверить подлинность сервера на стороне клиента.

Сначала создайте закрытый ключ для корневого СА с помощью следующей команды:

1
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem

Затем создайте корневой CA и подпишите его, используя указанный выше ключ:

1
ipsec pki --self --in /etc/ipsec.d/private/ca.key.pem --type rsa --dn "CN=My VPN Server CA" --ca --lifetime 3650 --outform pem > /etc/ipsec.d/cacerts/ca.cert.pem

Затем создайте закрытый ключ для VPN-сервера, используя следующую команду:

1
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem

Наконец, сгенерируйте сертификат сервера, используя следующую команду:

1
ipsec pki --pub --in /etc/ipsec.d/private/server.key.pem --type rsa | ipsec pki --issue --lifetime 2750 --cacert /etc/ipsec.d/cacerts/ca.cert.pem --cakey /etc/ipsec.d/private/ca.key.pem --dn "CN=vpn.domain.com" --san="vpn.domain.com" --flag serverAuth --flag ikeIntermediate --outform pem > /etc/ipsec.d/certs/server.cert.pem

На этом этапе все сертификаты готовы для вашего VPN-сервера.

Настройка StrongSwan VPN

По умолчанию файл конфигурации strongswan – /etc/ipsec.conf.

Мы можем сделать резервную копию основного файла конфигурации и создать новый файл:

1
mv /etc/ipsec.conf /etc/ipsec.conf-bak

Затем создайте новый файл конфигурации:

1
nano /etc/ipsec.conf

Добавьте следующие настройки config и conn:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
config setup
        charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2, mgr 2"
        strictcrlpolicy=no
        uniqueids=yes
        cachecrls=no

conn ipsec-ikev2-vpn
      auto=add
      compress=no
      type=tunnel
      keyexchange=ikev2
      fragmentation=yes
      forceencaps=yes
      dpdaction=clear
      dpddelay=300s
      rekey=no
      left=%any
      leftid=@vpn.domain.com
      leftcert=server.cert.pem
      leftsendcert=always 
      leftsubnet=0.0.0.0/0
      right=%any
      rightid=%any
      rightauth=eap-mschapv2
      rightsourceip=10.10.10.0/24
      rightdns=8.8.8.8
      rightsendcert=never
      eap_identity=%identity

Сохраните и закройте файл /etc/ipsec.conf.

Затем вам нужно будет определить учетные данные пользователя EAP и закрытые ключи RSA для аутентификации.

Вы можете настроить его, отредактировав файл /etc/ipsec.secrets:

1
nano /etc/ipsec.secrets

Добавьте следующую строку:

1
2
: RSA "server.key.pem"
vpnsecure : EAP "password"

Затем перезапустите службу StrongSwan следующим образом:

1
systemctl restart strongswan-starter

Чтобы включить StrongSwan для запуска при загрузке системы, введите:

1
systemctl enable strongswan-starter

Проверьте статус VPN-сервера, введите:

1
systemctl status strongswan-starter

Как включить пересылку пакетов

Затем вам нужно будет настроить ядро для включения пересылки пакетов, отредактировав файл /etc/sysctl.conf:

1
nano /etc/sysctl.conf

Раскомментируйте следующие строки:

1
2
3
4
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

Сохраните и закройте файл, затем перезагрузите новые настройки, используя следующую команду:

1
sysctl -p

Установка и настройка клиента StrongSwan

В этом разделе мы установим клиент StrongSwan на удаленный компьютер и подключимся к VPN-серверу.

Сначала установите все необходимые пакеты с помощью следующей команды:

1
apt-get install strongswan libcharon-extra-plugins -y

После установки всех пакетов остановите службу StrongSwan с помощью следующей команды:

1
systemctl stop strongswan-starter

Затем вам нужно будет скопировать файл ca.cert.pem с VPN-сервера в каталог /etc/ipsec.d/cacerts/.

Вы можете скопировать его с помощью команды SCP, как показано ниже:

1
scp root@vpn.domain.com:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/

Для настройки аутентификации VPN-клиента используйте файл /etc/ipsec.secrets:

1
nano /etc/ipsec.secrets

Добавьте следующую строку:

1
vpnsecure : EAP "password"

Затем отредактируйте основной файл конфигурации strongSwan:

1
nano /etc/ipsec.conf

Добавьте следующие строки, соответствующие вашему домену и паролю, который вы указали в файле /etc/ipsec.secrets.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
conn ipsec-ikev2-vpn-client
    auto=start
    right=vpn.domain.com
    rightid=vpn.domain.com
    rightsubnet=0.0.0.0/0
    rightauth=pubkey
    leftsourceip=%config
    leftid=vpnsecure
    leftauth=eap-mschapv2
    eap_identity=%identity

Теперь запустите службу StrongSwan VPN, используя следующую команду:

1
systemctl start strongswan-starter

Затем проверьте состояние VPN-подключения с помощью следующей команды:

1
ipsec status

Вы должны получить следующий результат:

1
2
3
4
Security Associations (1 up, 0 connecting):
ipsec-ikev2-vpn-client[1]: ESTABLISHED 28 seconds ago, 104.245.32.158[vpnsecure]...104.245.33.84[vpn.domain.com]
ipsec-ikev2-vpn-client{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: ca6f451c_i ca9f9ff7_o
ipsec-ikev2-vpn-client{1}: 10.10.10.1/32 === 0.0.0.0/0

Приведенные выше выходные данные показывают, что между клиентом и сервером установлено VPN-соединение, а клиентскому компьютеру назначен IP-адрес 10.10.10.1.

Вы также можете подтвердить свой новый IP-адрес с помощью следующей команды:

1
ip a

Вы должны получить следующий результат:

1
2
3
4
5
6
7
8
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:68:f5:20:9e brd ff:ff:ff:ff:ff:ff
inet 104.245.32.158/25 brd 104.245.32.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.10.10.1/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:68ff:fef5:209e/64 scope link
valid_lft forever preferred_lft forever

Заключение

В приведенном выше руководстве мы узнали, как настроить сервер и клиент StrongSwan VPN на Ubuntu 20.04.

Теперь вы можете защитить свои действия в Интернете.