Виртуальная частная сеть используется для создания частной сети из общедоступного интернет-соединения для защиты ваших данных.
VPN использует зашифрованный туннель для безопасной отправки и получения данных.
strongSwan – одно из самых известных программ для VPN, которое поддерживает различные операционные системы, включая Linux, OS X, FreeBSD, Windows, Android и iOS.
Он использует протоколы IKEv1 и IKEv2 для безопасного установления соединения.
Вы можете расширить его функциональность с помощью встроенных плагинов.
В этом руководстве мы объясним пошаговые инструкции по настройке KEv2 VPN-сервера с StrongSwan в Ubuntu 20.04.
Установка StrongSwan
По умолчанию StrongSwan доступен в репозитории Ubuntu 20.04 по умолчанию.
Вы можете установить его с другими необходимыми компонентами, используя следующую команду:
apt-get install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins -y
После установки всех пакетов вы можете приступить к созданию сертификата CA.
Как создать сертификат для VPN-сервера
Затем вам нужно будет сгенерировать сертификат и ключ для VPN-сервера, чтобы проверить подлинность сервера на стороне клиента.
Сначала создайте закрытый ключ для корневого СА с помощью следующей команды:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/ca.key.pem
Затем создайте корневой CA и подпишите его, используя указанный выше ключ:
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-сервера, используя следующую команду:
ipsec pki --gen --size 4096 --type rsa --outform pem > /etc/ipsec.d/private/server.key.pem
Наконец, сгенерируйте сертификат сервера, используя следующую команду:
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
.
Мы можем сделать резервную копию основного файла конфигурации и создать новый файл:
mv /etc/ipsec.conf /etc/ipsec.conf-bak
Затем создайте новый файл конфигурации:
nano /etc/ipsec.conf
Добавьте следующие настройки config
и conn
:
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
:
nano /etc/ipsec.secrets
Добавьте следующую строку:
: RSA "server.key.pem"
vpnsecure : EAP "password"
Затем перезапустите службу StrongSwan следующим образом:
systemctl restart strongswan-starter
Чтобы включить StrongSwan для запуска при загрузке системы, введите:
systemctl enable strongswan-starter
Проверьте статус VPN-сервера, введите:
systemctl status strongswan-starter
Как включить пересылку пакетов
Затем вам нужно будет настроить ядро для включения пересылки пакетов, отредактировав файл /etc/sysctl.conf
:
nano /etc/sysctl.conf
Раскомментируйте следующие строки:
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
Сохраните и закройте файл, затем перезагрузите новые настройки, используя следующую команду:
sysctl -p
Установка и настройка клиента StrongSwan
В этом разделе мы установим клиент StrongSwan на удаленный компьютер и подключимся к VPN-серверу.
Сначала установите все необходимые пакеты с помощью следующей команды:
apt-get install strongswan libcharon-extra-plugins -y
После установки всех пакетов остановите службу StrongSwan с помощью следующей команды:
systemctl stop strongswan-starter
Затем вам нужно будет скопировать файл ca.cert.pem
с VPN-сервера в каталог /etc/ipsec.d/cacerts/
.
Вы можете скопировать его с помощью команды SCP, как показано ниже:
scp root@vpn.domain.com:/etc/ipsec.d/cacerts/ca.cert.pem /etc/ipsec.d/cacerts/
Для настройки аутентификации VPN-клиента используйте файл /etc/ipsec.secrets
:
nano /etc/ipsec.secrets
Добавьте следующую строку:
vpnsecure : EAP "password"
Затем отредактируйте основной файл конфигурации strongSwan:
nano /etc/ipsec.conf
Добавьте следующие строки, соответствующие вашему домену и паролю, который вы указали в файле /etc/ipsec.secrets
.
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, используя следующую команду:
systemctl start strongswan-starter
Затем проверьте состояние VPN-подключения с помощью следующей команды:
ipsec status
Вы должны получить следующий результат:
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-адрес с помощью следующей команды:
ip a
Вы должны получить следующий результат:
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.
Теперь вы можете защитить свои действия в Интернете.