вторник, 21 мая 2019 г.

Сервер strongswan ipsec + клиенты на Win10 и Ubuntu ч. 1: Настройка strongswan на сервере


Авторизация виндовых клиентов будет происходить по EAP, клиентов на Убунту - с помощью PSK.

1. Устанавливаем необходимые пакеты:
apt-get install strongswan libcharon-extra-plugins dnsmasq

Дополнительно для debian9: apt-get install strongswan-pki

2. Генерируем сертификаты. Можно пойти правильным путем и получить "честные" сертификаты у центра сертификации, типа Comodo. В данном случае вариант бюджетный - самоподписанные сертификаты. В принципе, они ничем не хуже, кроме того, что каждую клиентскую машину нужно настраивать вручную, для того, чтобы она доверяла нашей CA.

2.1 Закрытый ключ для CA
mkdir cert
cd cert
ipsec pki --gen > caKey.der


2.2 Генерируем самоподписанный сертификат CA
ipsec pki --self --in caKey.der --dn "C=CH, O=MyVPN, CN=MyVPN CA" --ca > caCert.der


2.3 Генерируем закрытый ключ сервера
ipsec pki --gen  > peerKey.der


2.4 Генерируем сертификат для сервера
ipsec pki --pub --in peerKey.der | ipsec pki --issue --flag serverAuth --san <server_IP_or_FQDN> --cacert caCert.der --cakey caKey.der \
--dn "C=CH, O=MyVPN, CN=MyVPNServer" > peerCert.der


*для Windows обязательный аргумент --san, он должен совпадать с реальным IP адресом сервера, или его FQDN

2.5 Копируем сгенерированные файлы в соответствующие директории:
/etc/ipsec.d/private/peerKey.der
хранит закрытый ключ узла. Загрузку данного ключа следует настроить в ipsec.secrets
/etc/ipsec.d/certs/peerCert.der
хранит end-entity сертификат узла. Следует указать в ipsec.conf чтобы использовать.
/etc/ipsec.d/cacerts/caCert.der 
хранит CA сертификат с помощь. которого были выпущены и подписаны клиентские сертификаы. Загружается автоматически.

3 Добавляем конфигурацию для клиентов на Windows:
3.1 В /etc/ipsec.conf:
conn win10
        dpdaction=clear
        dpddelay=35s
        dpdtimeout=300s
        fragmentation=yes
        rekey=no

        #left = server side
        left=%any
        leftsubnet=0.0.0.0/0
        leftcert=peerCert.der
        leftfirewall=yes
        leftsendcert=always

        right=%any
        rightsourceip=10.1.1.2/32
        rightdns=8.8.8.8
        eap_identity=%identity
        rightauth=eap-mschapv2
        keyexchange=ikev2
        auto=add


3.2 В /etc/ipsec.secrets
: RSA peerKey.der
test : EAP "abcd1234"


4 Добавляем конфиг для клиентов на Ubuntu: 
4.1 В /etc/ipsec.conf: 
conn ubnt
        dpdaction=restart
        dpddelay=35s
        dpdtimeout=300s
        rekey=no

        left=<public_ip>
        leftid=<public_ip>       
        leftsubnet=0.0.0.0/0
        leftfirewall=yes

        right=<public_ip>
        rightid=<private_ip>
        rightdns=8.8.8.8
        rightsourceip=10.1.1.3/32
        ike=aes256-sha2_256-modp1024!
        esp=aes256-sha2_256!

        authby=secret
        auto=add


4.2 В /etc/ipsec.secrets  
<client_ID> <server_ID> : PSK <key>

*в такой форме записи ключ указывается без кавычек! 

Некоторые комментарии:
 -в моем сценарии клиент за NAT-ом поэтому в качестве аргумента 'left' используется его публичный адрес, в качестве 'left id' - серый адрес.
 - leftfirewall=yes необходимо, если на сервере настроен NAT 
- rightsourceip - виртуальный адрес, который будет выдаваться клиенту. Можно указать целую подсеть, если клиентов много.

Комментариев нет:

Отправить комментарий