Настройка StrongSwan VPN под Windows, Android и BlackBerry 10 без использования паролей Апрель 21, 2018

Разместил gamerka в : bb10, centos, freebsd, Guide, ubuntu, Windows , добавить комментарий

Хотим настроить свой VPN чтобы использовать дефолтные клиенты на Windows 7+ и BlackBerry 10, и клиент StrongSwan на Android.
Не хотим использовать для подключения никакие пароли которые можно потерять.

Здесь я не затрагиваю установку strongswan и настройку фаерволла, по этой теме множество статей и для каждой ОС делается индивидуально, в своем случае для установки я использовал готовый скрипт Algo.
Цель данной заметки записать шаги настройки уже работающего strongswan.

1. Генерация сертификатов
Считаем что:

  • ключи лежат по умолчанию, в /etc/ipsec.d/, команды выполняем относительно этой папки
  • ip нашего сервера 1.2.3.4, а хостнейм my.host.name


CA ключ/серт

ipsec pki --gen --outform pem > private/ca.key
ipsec pki --self --in private/ca.key --dn "CN=my CA" --ca --outform pem > cacerts/ca.crt


Сертификат сервера

#!/bin/sh
ip=1.2.3.4
host=my.host.name
ipsec pki --gen --outform pem > private/$host.key
ipsec pki --pub --in private/$host.key | ipsec pki --issue --cacert cacerts/ca.crt --cakey private/ca.key --dn "CN=$host" --san $host --san dns:$ip --san $ip --lifetime 3650 --flag serverAuth --flag clientAuth --flag ikeIntermediate --outform pem > certs/$host.crt


Сертификаты клиентов
Запускаем например из папки пользователя, т.к. сгенерированные файлы на стороне сервера будут не нужны.

#!/bin/sh
name=bob
ipsec pki --gen --outform pem > $name.key
ipsec pki --pub --in $name.key | ipsec pki --issue --cacert /etc/ipsec.d/cacerts/ca.crt --cakey /etc/ipsec.d/private/ca.key --dn "CN=$name" --san $name --lifetime 3650 --flag serverAuth --flag clientAuth --outform pem > $name.crt
openssl pkcs12 -in $name.crt -inkey $name.key -export -out $name.p12

Советую на запрос пароля для экспорта задать какой-нибудь непростой пароль, тогда при установке сертификата на клиентское устройство будет запрошен этот пароль. В этому случае файл сертификата и пароль есть смысл передавать пользователю через разные каналы.
Сгенерированный файл .p12 отправляем пользвателю, затем клиентские файлы .key .crt .p12 удаляем с сервера.
Также пользователю необходимо передать наш корневой свертификат cacerts/ca.crt

2. Настраиваем strongswan
Конфиги в разных ОС можгут лежать в разных местах и называться по разному.
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
    rekey=no
    dpdaction=clear
    keyexchange=ikev2
    compress=yes
    dpddelay=35s

    ike=aes128gcm16-prfsha512-ecp256,aes128-sha2_512-prfsha512-ecp256,aes128-sha2_384-prfsha384-ecp256!
    esp=aes128gcm16-ecp256,aes128-sha2_512-prfsha512-ecp256,aes128-sha256! # aes128-sha256 нужен для bb10

    left=%any
    leftauth=pubkey # аутентификация сервера только по сертификату
    leftid=my.host.name # имя по которому сервер аутентифицируется
    leftcert=my.host.name.crt # сертификат сервера, путь относительно /etc/ipsec.d/certs
    leftsendcert=always
    leftsubnet=0.0.0.0/0,::/0

    right=%any
    rightauth=pubkey # аутентификация клиентов только по сертификату
    rightsourceip=10.19.48.0/24 # из этой подсети будут получать адреса клиенты
    rightdns=8.8.8.8,8.8.4.4
conn ikev2-pubkey
    auto=add

ipsec.secrets
здесь только указываем приватный ключ сервера

: RSA my.host.name.key


3. Настройка клиентов
Windows
Проверялось только на Windows 10, но должно работать на всех версиях начиная с Windows 7.
Устанавливаем сертификаты в хранилище локальной машины, для ca.crt на шаге выбора места установки выбираем Trusted Root Certification Authorities, для .p12 выбираем Personal.
Создаем и запускаем PowerShell скрипт, который создаст и настроит соединение.

    $VpnName = "StrongSwan on 1.2.3.4"
    $VpnServerAddress = "1.2.3.4"

    $addVpnParams = @{
        Name = $VpnName
        ServerAddress = $VpnServerAddress
        TunnelType = "IKEv2"
        AuthenticationMethod = "MachineCertificate"
        EncryptionLevel = "Required"
    }
    Add-VpnConnection @addVpnParams

    $setVpnParams = @{
        ConnectionName = $VpnName
        AuthenticationTransformConstants = "GCMAES128"
        CipherTransformConstants = "GCMAES128"
        EncryptionMethod = "AES128"
        IntegrityCheckMethod = "SHA384"
        DHGroup = "ECP256"
        PfsGroup = "ECP256"
        Force = $true
    }
    Set-VpnConnectionIPsecConfiguration @setVpnParams


Android
Для Android у StrongSwan есть свой отличный клиент, устанавливаем из Google Play.

  1. В приложении добавляем новый профиль.
  2. Указываем ip или имя сервера.
  3. Тип указываем IKEv2 Certificate
  4. При выборе сертификата пользователя жмем Install и выбираем наш .p12 файл.
  5. Снимаем галку Select automatically и жмем Select CA certificate, в следующем окне открываем меню и выбираем Import certificate, выбираем файл ca.crt
  6. Дополнительные опции можно не указывать, должно работать так.


BlackBerry 10
Сначала устанавливаем на устройство сертификаты ca.crt и .p12
Открываем Networks and Connections -> VPN, создаем новый профиль.

  1. Указываем имя профиля, IP или имя нашего сервера
  2. Выбираем тип «Generic IKEv2 VPN Server»
  3. Authentication Type = PKI
  4. Authentication ID Type= Identity Certificate Distinguished Name
  5. Client Certificate = имя нашего клиентского сертификата
  6. Gateway Auth Type = PKI
  7. Gateway Auth ID Type = Fully Qualified Domain Name
  8. Gateway Auth ID = my.host.name (поле leftid из ipsec.conf)
  9. Gateway CA Certificate = имя нашего CA сертификата («my CA»)
  10. Perfect Forward Secrecy = On
  11. Automatically determine IP = ON
  12. Automatically determine DNS = ON
  13. Automatically determine algorithm = ON


Источники:
Setting-up a Simple CA Using the strongSwan PKI Tool
IPSec Road Warrior Configuration: Android, Windows 7, BB10, PlayBook, Dtek mobile devices
Algo VPN

Собственный VPN под BlackBerry OS 10 Июнь 13, 2017

Разместил gamerka в : bb10, centos, Guide , добавить комментарий

Вариант для подключения с любого устройства без сертификата:
ipsec.conf

config setup
    strictcrlpolicy=no

conn %default
    keyexchange=ikev2

conn rem
    rekey=no
    leftsubnet=0.0.0.0/0
    leftauth=psk
    leftid=CHANGE_TO_YOUR_IP_ADDRESS
    right=%any
    rightsourceip=10.9.9.0/24
    rightauth=eap-mschapv2
    rightsendcert=never
    eap_identity=%any
    auto=add
    rightdns=8.8.8.8,8.8.4.4

ipsec.secrets

: PSK "server_pass"
user1 : EAP "user1_pass"

Настройки BB10

Server Address: адрес сервера
Gateway Type: Generic IKEv2 VPN Server
Authentication Type: EAP-MSCHAPv2
Authentication ID Type: IPv4
MSCHAPv2 EAP Identity: что угодно
Authentication ID: user1 (логин из ipsec.secrets)
MSCHAPv2 Password: user1_pass (пароль из ipsec.secrets)
Gateway Auth Type: PSK
Gateway Auth ID Type: IPv4
Gateway Preshared Key: server_pass (из ipsec.secrets)
Perfect Forward Secrecy: нет



Вариант с установкой корневого сертификата на устройство:
ipsec.conf

config setup
conn %default
    auto=add
    left=%any
    leftsubnet=0.0.0.0/0
    right=%any
    rightsourceip=10.9.9.0/24
    rightdns=8.8.8.8,8.8.4.4
    forceencaps=yes
    compress=yes
conn rw-eap
    dpdaction=clear
    dpddelay=300s
    leftauth=pubkey
    leftcert=domain_name.crt
    rightauth=eap-mschapv2
    rightsendcert=never

ipsec.secrets

: RSA domain_name.key
user1 : EAP "user1_pass"

Настройки BB10

Server Address: адрес сервера
Gateway Type: Microsoft IKEv2 VPN Server
Authentication Type: EAP-MSCHAPv2
Authentication ID Type: Fully Qualified Domain Name
Authentication ID: user1 (логин из ipsec.secrets)
MSCHAPv2 Password: user1_pass (пароль из ipsec.secrets)
Gateway Auth Type: PKI
Gateway Auth ID Type: Identity Certificate Destinguished Name
Allow Untrusted Certificate: Prompt
Gateway CA Certificate: скачанный с сервера и установленный корневой сертификат



Дополнительно:
Настройки фаервола CentOS 7 (firewalld) и вариант генерации сертификатов с помощью strongswan
Настройка фаервола CentOS 6 (iptables)
Генерация сертификатов через Easy-RSA

Windows XP + Office 2010 + Internet Explorer 8. Долго открываются файлы из сети Февраль 16, 2015

Разместил gamerka в : Netware, Windows , добавить комментарий

Симптомы:
Обнаружилась проблема на нескольких компьютерах, что файлы MS Office из сети открываются очень долго, 30-60 секунд. Проблема только с открытием Word и Excel из сетевой папки, при закрытой оболочке.

  • те же файлы локально открываются мгновенно
  • копируются из сети быстро
  • если сначала открыть пустую оболочку, а затем в проводнике открыть файл, то открытие также быстрое

Начинаю выяснять, ставлю с нуля Windows XP SP3 и Office 2010:

  • без обновлений — открывается быстро
  • ставлю все обновления — открытие тупит

Ни один совет в сети не помог ни капли, так что я начал поэтапно накатывать обновления.
Причина:
Выяснилось что тормоза начинаются сразу после обновления IE c 6.0 до 8.0. Попробовал добавить файловый сервер в доверенные узлы, и открытие начало летать.
Решение:
Добавить все файловые сервера в «доверенные узлы» в «свойствах обозревателя».
trusted

Обновление часовых поясов на Windows XP в 2014 году Октябрь 14, 2014

Разместил gamerka в : Windows , добавить комментарий

Так как наконец закончилась поддержка Windows XP, Microsoft больше не выпускает под неё обновления. Обновить пояса можно вручную через реестр или с помощью любительских скриптов, например:
Обновление временных зон 2014 года на Windows XP

Терминальный сервер на Windows 7 SP1 Февраль 27, 2014

Разместил gamerka в : Windows , добавить комментарий

По умолчанию Windows 7 (и предыдущие вплоть до XP) поддерживает одновременное подключение лишь одного пользователя, либо удаленного, либо локального. Данный хак нужен для того чтобы разрешить подключение нескольких пользователей к удаленным рабочим столам одной машины так же, как на линейке Windows Server.
В теории всё что нужно это заменить файл termsrv.dll в папке C:\Windows\System32 на пропатченный и перезагрузиться. На практике нужно проделать махинации с получением прав на данный файл и остановкой некоторых служб на время замены.
Для простоты можно использовать данный скрипт автоматической установки: Windows7_SP1_RDPhack
Источник:
Как сделать из Windows 7 SP1 терминальный сервер

Symantec Endpoint Protection. Драйверу брандмауэра не удалось открыть сетевой адаптер Ноябрь 27, 2013

Разместил gamerka в : Windows , добавить комментарий

Симптомы: Восклицательный знак на значке SEP, Ошибка «Драйверу брандмауэра не удалось открыть сетевой адаптер» (Firewall driver failed to open network adapter)
Решение:

  1. Полностью удалить SEP
  2. Удалить ключ реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Teefer2
  3. Установить SEP

Источники:
KB Article — SEP client NTP malfunction. Firewall driver failed to open network adapter

Как сделать раздел активным в Windows 7 если через Управление дисками не получается Сентябрь 26, 2013

Разместил gamerka в : Guide, Windows , добавить комментарий
  1. Запустите утилиту diskpart.
    C:\>diskpart
    
    Microsoft DiskPart версии 6.1.7601
    (С) Корпорация Майкрософт, 1999-2008.
    На компьютере: DESKTOP
    
    DISKPART>
  2. Посмотрите список доступных дисков
    list disk

    DISKPART> list disk
    
      Диск ###  Состояние      Размер   Свободно Дин  GPT
      --------  -------------  -------  -------  ---  ---
      Диск 0    В сети           37 Gбайт  2048 Kбайт
      Диск 1    В сети          931 Gбайт      0 байт
      Диск 2    В сети          931 Gбайт      0 байт
  3. Выберите нужный диск
    select disk [номер диска]

    DISKPART> select disk 1
    
    Выбран диск 1.
  4. Посмотрите список разделов на диске
    list partition

    DISKPART> list partition
    
      Раздел    ###  Тип               Размер   Смещение
      -------------  ----------------  -------  -------
      Раздел 1    Основной           931 Gб    31 Kб
  5. Выберите раздел
    select partition [номер раздела]

    DISKPART> select partition 1
    
    Выбран раздел 1.
  6. Сделайте раздел активным
    active

    DISKPART> active
    
    DiskPart: раздел помечен как активный.
  7. Готово!

Советы по установке freebsd на SSD Июль 27, 2013

Разместил gamerka в : freebsd , добавить комментарий

Using a Solid State Drive with FreeBSD
http://www.wonkity.com/~wblock/docs/html/ssd.html

Просмотр MIME заголовков в GroupWise 6.5 Май 22, 2013

Разместил gamerka в : Netware , добавить комментарий

Чтобы во вложениях писем видеть файл mime.822 со всеми заголовками нужно в окне открытого письма щелкнуть правой кнопкой на пустом пространстве около полей Тема:, Кому: и т.п., и снять отметку с пункта «Скрыть системные прикрепления».
Groupwise 6.5 mime.822
Источники:
novell.support.groupwise.7x.clients › Access MIME.822 attachment

gmirror c GPT на FreeBSD Февраль 25, 2013

Разместил gamerka в : freebsd , добавить комментарий

Примем что FreeBSD у нас уже установлена на ada0, а ada1 — наш второй диск. Наши шаги:

  1. Загрузить geom_mirror и добавить в автозагрузку
  2. Создать зеркало gm0 на ada1
  3. Скопировать разметку с ada0 на gm0
  4. Скопировать файлы с ada0 на gm0
  5. Правим fstab, заменяя ada0 на mirror/gm0
  6. Однократно загрузиться с нашего ВТОРОГО диска
  7. Добавить ada0 в зеркало и дождаться синхронизации
  8. Перезагрузиться в обычном режиме с первого диска

Подробнее:
http://infobsd.ru/freebsd/gmirror-gpt