- PVSM.RU - https://www.pvsm.ru -
На хабре много статей про настройку IPSEC на разных девайсах, но относительно мало про Linux, а StrongSwan представлен поверхностно всего одной статьей ( ).
В своем обзоре я затрону следующие вопросы:
Про протокол IPSEC и особенности реализации IKEv2 можно прочитать информацию в интернете, в данной статье они рассмотрены не будут. Всю информацию, которая касается описания демона можно найти на strongswan.org. Я использовал версию StrongSwan 4.6.4, но с точки зрения рассмотренного конфигурирования никаких отличий с более поздними версиями нет, в том числе и с пятой.
В качестве операционной системы для стенда я использовал Debian 6.0 (2.6.32-5-686)
StrongSwan является демоном IPSEC, который поддерживает IKEv1 и IKEv2. На данный момент это развивающий продукт. Установка StrongSwan может быть выполнена из исходников или репазитория. Установка из исходников описана на сайте StrongSwan.
Установка из репазитория происходит без проблем командой:
apt-get install strongswan
Файлы конфигурирования по умолчанию хранятся в директории /etc/ и имеют следующие названия:
Помимо этого во время установки программного обеспечения для хранения сертификатов и CRL-файлов используемых демонами pluto и charon создается директория /etc/ipsec.d, в которой находятся следующие каталоги:
Файл /etc/ipsec.secrets содержит неограниченное количество следующих типов ключей (паролей):
Соответственно поддерживаются все типы аутентификации.
Основные параметры команды ipsec, которая управляет подключениями StrongSwan:
Логи хранятся в /var/log/auth.log и /var/log/daemon.log.
Генерация сертификатов является самой ответственной частью и самой трудной, именно от нее будет зависеть работоспособность нашего IPSEC=тунеля.
Сертификаты генерировались с помощью OPENSSL.
Сначала настраиваем OPENSSL:
nano -w /usr/lib/ssl/openssl.cnf
[ CA_default ]
dir = /etc/ipsec.d # Основная директория, в ней будут храниться все сертификаты
certificate = $dir/cacerts/strongswanCert.pem # Здесь у нас будет лежать CA сертификат
private_key = $dir/private/strongswanKey.pem # А здесь закрытый ключ CA сертификата
Создаем директорию для новых сертификатов и файл с серийником для OPENSSL
cd /etc/ipsec.d
mkdir newcerts
touch index.txt
echo “00” > serial
Генерируем CA-сертификат:
openssl req -x509 -days 3650 -newkey rsa:2048 -keyout private/strongswanKey.pem -out cacerts/strongswanCert.pem
openssl pkcs12 -export -inkey private/strongswanKey.pem -in certs/strongswanCert.pem -name "host" -certfile cacerts/strongswanCert.pem -caname "strongSwan Root CA" -out CAcert.p12 /* этот сертификат нужно будет импортировать на клиент (например Windows 7)
Генерируем сертификат для сервера:
openssl req -newkey rsa:1024 -keyout private/serverkey.pem -out reqs/serverreq.pem
openssl ca -in reqs/serverreq.pem -days 730 -out certs/servercert.pem -notext
При генерации сертификата обязательно нужно задать для серверного сертификата в openssl.cnf параметр subjectAltName=IP:<external_IP>
Генерируем сертификат для клиента:
openssl req -newkey rsa:1024 -keyout private/hostKey.pem -out reqs/hostReq.pem
openssl ca -in reqs/hostReq.pem -days 730 -out certs/hostCert.pem -notext
openssl pkcs12 -export -inkey private/hostKey.pem -in certs/hostCert.pem -name "host" -certfile cacerts/strongswanCert.pem -caname "strongSwan Root CA" -out host.p12 /* этот сертификат нужно будет разместить на клиенте вместе с CA сертификатом
Файл strongswan.conf
charon {
load = curl test-vectors aes des sha1 sha2 md5 pem pkcs1 gmp random x509 revocation hmac xcbc cmac ctr ccm gcm stroke kernel-netlink socket-default updown eap-identity
}
Основными файлами для настройки являются etc/ipsec.conf и ipsec.secrets.
Начнем с ipsec.conf
config setup / данная секция определяет базовые параметры
strictpolicy=no
charonstart=yes
plutostart=no / т.к. нам не нужен IKEv1
charondebug="ike 2, knl 3, cfg 0"
conn %default / определяет базовые параметры всех IPSEC-соединений
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
dpdaction=restart
dpdelay=30s
dpdtimeout=180s
conn rw / название IPSEC-соединения
left=<external_IP> / адрес внешнего интерфейса
leftsubnet=<subnet/prefix> / подсеть, к которой мы даем доступ
leftid=<external_IP>
leftcert=/etc/ipsec.d/certs/servercert.pem / говорим какой сертификат использовать для установки IKE SA
leftauth=pubkey / говорим, что мы авторизуемся у клиент с помощью сертификата RSA
right=%any / к нам можно подключиться с любого IP
rightauth=pubkey / клиент авторизуется у нас по сертификату RSA
rightsourceip=<subnet/prefix> / из этого пула будет выдаваться IP-адрес для клиента
auto=add / подключение будет инициироваться клиентом
keyexhcnage=ikev2
type=transport
Файл ipsec.secrets
: RSA /etc/ipsec.d/private/serverkey.pem "password"
Более подробно ознакомиться с директивами данного файла можно по ссылке [1].
Настройка IPSEC подключения [2] для Win7 и импорт сертификатов [3]описано на сайте strongswan.org:
Дальше можно подключиться клиентом и проверить статус соединения командой ipsec statusall и просмотром логов, ну и в Windows должно быть успешно подключено VPN-соединение и пинги будут бегать.
В своей статье я сделал краткий обзор демона StrongSwan и привел пример настройки IPSEC IKEv2 на сертификатах для подключения клиентов (Windows 7). Так же StrongSwan имеет собственный клиент для Android, который так же будет работать с указанными настройками, главное сделать для него сертификат. Как видно из предложенной мной конфигурации она несколько отличает от той, которую предлагает использовать сам strongswan в своих примерах и большое внимание уделено генерации сертификатов.
Помимо этого замечательно работает site-to-site IPSEC и Remote Access с использованием протоколов аутентификации MSCHAPv2-EAP, а так же L2TP over IPSEC (IKEv1), если интересно, то могу рассказать как их настроить.
Автор: msamoylov
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vpn/32694
Ссылки в тексте:
[1] ссылке: http://wiki.strongswan.org/projects/strongswan/wiki/IpsecConf
[2] подключения: http://wiki.strongswan.org/projects/strongswan/wiki/Win7Config
[3] сертификатов : http://wiki.strongswan.org/projects/strongswan/wiki/Win7Certs
[4] Источник: http://habrahabr.ru/post/177453/
Нажмите здесь для печати.