OpenSWAN + Checkpoint
Создание соединения с файерволом "CheckPoint" с помощью OpenSWAN.
Для создания соединения понадобятся публичные ключи клиента и сервера.
- С помощью "CheckPoint Management Center" создаём клиента и публичный ключ для него (напр. freeswan.p12).
- Также необходимо получить сертификат сервера и внутренний ca-сертификат.
Получить сертификат сервера:
# fwm exportcert -obj checkpoint -cert defaultCert -pem -withroot -file checkpoint-cert.pkcs7
При этом будут получены предупреждения об ошибках:
Unable to open '/dev/fw0': No such file or directory Failed to get interface list: No such file or directory cp_fw_stat: cannot get interface list: No such file or directory cp_get_active_policy_name: Failed to get Security Policy information
Игнорируем их. И преобразуем PKCS#7 сертификат в формат X.509:
# openssl pkcs7 -in checkpoint-cert.pkcs7 -print_certs >temp.pem
Расщепляем полученный файл на две части: checkpoint-internal-ca.pem (CA сертификат как правило первый в файле) и checkpoint-cert.pem (firewall сертификат второй в файле). Заголовки файлов выглядят примерно так:
Заголовок CA сертификата:
subject=/O=checkpoint.intranet.example.com..p9bkhs issuer= /O=checkpoint.intranet.example.com..p9bkhs
Заголовок firewall сертификата:
subject=/O=checkpoint.intranet.example.com..p9bkhs/CN=rhl7 VPN Certificate issuer= /O=checkpoint.intranet.example.com..p9bkhs
CA-сертификат можно получить через порт 18264 "CheckPoint Gateway". Напр.:
wget http://<checkpoint gw address>:18264/internal_ca.cer
После этого преобразуем полученный файл из DER-формата в PEM-формат:
# openssl x509 -inform DER -outform PEM -in internal_ca.cer -out internal_cap.pem
Копируем checkpoint-internal-ca.pem в /etc/ipsec.d/cacerts/ и checkpoint-cert.pem в /etc/ipsec.d/certs/.
- Получим DER crl-файл:
# wget http://<checkpoint gw address>:18264/ICA_CRL1.crl
преобразуем в PEM и сохраним его в /etc/ipsec.d/crls/checkpoint.crl
# openssl crl -in ICA_CRL1.crl -inform DER -outform PEM -out /etc/ipsec.d/crls/checkpoint.crl
- Из файла freeswan.p12 выделим сертификат пользователя freeswan-cert.pem и ключ freeswan-key.pem:
# openssl pkcs12 -in freeswan.p12 -nocerts -out /etc/ipsec.d/private/freeswan-key.pem # openssl pkcs12 -in freeswan.p12 -nokeys -out temp2.pem
Файл temp2.pem содержит в себе два сертификата - сheckpoint-internal-ca.pem и freeswan-cert.pem. Соответственно перый и второй. Расщепляем файл на две части и копируем freeswan-cert.pem в /etc/ipsec.d/certs/. Заголовки файлов выглядят примерно так: Заголовок CA сертификата:
subject=/O=checkpoint.intranet.example.com..p9bkhs issuer= /O=checkpoint.intranet.example.com..p9bkhs
Заголовок сертификата пользователя:
subject=/O=checkpoint.intranet.example.com..p9bkhs/OU=users/CN=freeswan issuer=/O=checkpoint.intranet.example.com..p9bkhs
Создаём файл /etc/ipsec.conf:
## RoadWarrior to Gateway: FreeS/WAN X.509 <-> Check Point conn freeswan-checkpoint-x509 # Right side is FreeS/WAN RoadWarrior right=%defaultroute rightrsasigkey=%cert rightid="/O=checkpoint.lab.aerasec.de..ab12cd/OU=users/CN=freeswan" rightcert=freeswan-cert.pem # As an alternative, the file itself can be specified # Left side is Check Point left=1.2.3.4 # CheckPoint Gateway address leftcert=checkpoint-cert.pem leftrsasigkey=%cert #leftrsasigkey=0x0103...... # only needed for old FreeS/WAN leftid=1.2.3.4 # Check Point VPN-1 send IP address as ID #leftid= # leave unset for old FreeS/WAN # config type=tunnel keyingtries=0 disablearrivalcheck=no authby=rsasig auth=esp keyexchange=ike auto=start ## RoadWarrior to Net behind Gateway: FreeS/WAN X.509 <-> Check Point - Net conn freeswan-checkpoint-x509-net # Right side is FreeS/WAN RoadWarrior rightrsasigkey=%cert right=%defaultroute rightid="/O=checkpoint.lab.aerasec.de..ab12cd/OU=users/CN=freeswan" rightcert=freeswan-cert.pem # As an alternative, the file itself can be specified # Left side is Check Point left=1.2.3.4 # CheckPoint Gateway address leftsubnet=172.16.1.0/24 # Internal subnet address leftcert=checkpoint-cert.pem leftrsasigkey=%cert #leftrsasigkey=0x0103...... # only needed for old FreeS/WAN leftid=1.2.3.4 # Check Point VPN-1 send IP address as ID #leftid= # leave unset for old FreeS/WAN # config type=tunnel keyingtries=0 disablearrivalcheck=no authby=rsasig auth=esp keyexchange=ike auto=start
В файле /etc/ipsec.conf rightid можно получить так:
# openssl x509 -in freeswan-cert.pem -noout -subject
Создаём файл /etc/ipsec.secrets:
# Define RSA key : RSA /etc/ipsec.d/private/freeswan-key.pem "key passphrase here"