Настройка 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

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

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

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

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

Восстановление FreeBSD из дампа Март 23, 2012

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

Основные три этапа восстановления системы из дампа разделов:

  1. Запись FreeBSD livefs (на CD) или Frenzy (на flash)
  2. Создание разделов и меток или установка системы с нуля
  3. Восстановление из дампа

Запись Frenzy на flash драйв

  1. Выдираем из ISO образа папку frenzy и сохраняем этот образ
  2. Новый образ диска (чуть более 6 Мб) кидаем в папку frenzy
  3. Папку frenzy кидаем в корень флэшки (FAT32)
  4. В Menu.lst прописываем
    title frenzy-1.1-std-RU 
    map /frenzy/frenzy-1.1-std-RU.iso (hd32) 
    map --hook 
    chainloader (hd32) 
    boot
  5. Радуемся жизни

Восстановление разделов
После загрузки Frenzy корень флешки будет в /Frenzy/boot

cd /Frenzy/boot 

после загрузки frenzy все доступные разделы будут монтированы в RO, перемонтируем в RW

mount -u -w /dev/ad6s3f

ресторим c максимальной вербозностью

bzip2 -dcv carpc-var.dmp.0.bz2 | (cd /mnt/ad6s3d.ufs ; restore -rdvf - )

Источники:
GreenFlash Форум
Установка Frenzy на USB Flash
man restore
man bzip2
man mount
Резервное копирование FreeBSD при помощи DUMP и RESTORE

FreeBSD stuff Март 16, 2012

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

Разметка диска в GPT, gpart
http://www.opennet.ru/tips/info/2047.shtml
Reconfiguring FreeBSD Ports – Remove OPTIONS config For Any Port
http://www.cyberciti.biz/faq/reconfiguring-freebsd-ports/

FreeBSD mail Декабрь 24, 2011

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

Набор правил для распознавания русскоязычного спама для фильтра SpamAssassin
http://sa-russian.narod.ru/downloads.html
Официальный набор правил SpamAssassin
http://spamassassin.apache.org/
Использование ClamAV, SpamAssassin, MIMEDefang для борьбы с нежелательной почтой в Sendmail
http://xgu.ru/wiki/sendmail/filtering
Перенаправление спама на отдельный почтовый ящик
http://markmail.org/
Integrating SpamAssassin with sendmail
http://commons.oreilly.com/wiki/
Bayes In SpamAssassin
http://wiki.apache.org/spamassassin/BayesInSpamAssassin
man sa-learn
http://spamassassin.apache.org/full/3.1.x/doc/sa-learn.html

Миграция на новый сервер FreeBSD Сентябрь 5, 2011

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

Перенос пользователей
http://unix-notes.ru/2010/03/11/perenos-bazy-polzovatelejj-freebsd/

Перенос MySQL c обновлением 4.0 до 5.0
http://www.rasyid.net/2007/07/26/migrating-from-mysql-40-to-mysql-50-in-freebsd/